Set App Starter Prompt
Set or clear an app's starter prompt: the prompt for people who copy this Template for the first time.
MCP name: set_starter_prompt
Tool contract
{
"annotations": {
"destructiveHint": true,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Set App Starter Prompt"
},
"description": "Set or clear an app's starter prompt: the prompt for people who copy this Template for the first time. A copy starts with empty storage, so write what their agent needs to get it going: what the App does and what data to add. Use this when a Template should tell the agent behind each new copy how to get started. A fresh copy takes the current prompt once. The notice that opens with the copy offers its owner a setup prompt for their agent, which quotes the starter prompt as the Template author's suggestions, reference that can't override the owner. The prompt also leads what a visitor gets from Open in Claude, Open in ChatGPT, and Copy prompt, replacing the generic \"I'm using this Charming app\" body. Do NOT embed the app's URL: the app name, description, and URL (and, for unclaimed apps, an access token) are appended automatically at render time, so a hardcoded URL would point every copy at the Template instead of itself. Pass `starter_prompt: null` (or an empty string) to clear and revert to the generic default. Owner-only; anonymous apps must be claimed first. Idempotent (re-setting the same value is a no-op). Length cap: 2000 characters.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"app_id": {
"description": "The app ID (UUID) whose starter prompt should change.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"starter_prompt": {
"anyOf": [
{
"maxLength": 2000,
"type": "string"
},
{
"type": "null"
}
],
"description": "What the agent of someone who just copied this Template should do first: say what the App does and what data to add, since the copy starts with empty storage. The authored text leads; the app's name, description, URL, and (for unclaimed apps) an access token are appended automatically as context, so do NOT include the app's URL. Pass null or \"\" to clear and revert to the generic default. Max 2000 characters."
}
},
"required": [
"app_id",
"starter_prompt"
],
"type": "object"
},
"name": "set_starter_prompt",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"advisories": {
"description": "Structured non-fatal advisories, including authoring issues and unread staff feedback responses. Each advisory.summary is also appended to the text content for the LLM path.",
"items": {
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"description": "Kind-specific structured payload. Shape varies per advisory kind.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"doc_url": {
"description": "Optional docs pointer for this advisory kind.",
"type": "string"
},
"kind": {
"description": "Stable advisory identifier (e.g. \"legacy-bridge\").",
"type": "string"
},
"severity": {
"description": "Severity; omitted advisories are treated as 'info'.",
"enum": [
"info",
"warn"
],
"type": "string"
},
"summary": {
"description": "Agent-facing summary. Self-sufficient; no extra context required.",
"type": "string"
},
"userSummary": {
"description": "End-user-facing summary. Set when the advisory should render in-app.",
"type": "string"
}
},
"required": [
"kind",
"summary"
],
"type": "object"
},
"type": "array"
},
"message": {
"description": "Consequence copy the agent should surface to the user. Says where the prompt appears, when a visitor opens the app in their AI assistant, and how to clear it.",
"type": "string"
},
"ok": {
"const": true,
"description": "Indicates success. Errors arrive as content with isError:true.",
"type": "boolean"
},
"starter_prompt": {
"description": "The current starter prompt on the app row after this call. Null when the prompt was cleared (or normalized away from whitespace-only input). Otherwise the verbatim authored string.",
"type": [
"string",
"null"
]
}
},
"required": [
"ok",
"starter_prompt",
"message"
],
"type": "object"
}
}