Search Templates
Search the public Charming Template directory by keyword.
MCP name: search_templates
Tool contract
{
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search Templates"
},
"description": "Search the public Charming Template directory by keyword. Use this to check for an existing Template before calling create_app, or when the user asks what Templates exist. Returns the Template id, resolved listing title, summary, Markdown detail, category, cover, starter prompt, creator, builder count, canonical Template page, and browser copy URL. To copy a result for the signed-in user, call copy_app with its `id` (or POST /app/:id/copy). The copy URL instead starts browser navigation where a person chooses to copy and signs in before owned creation.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "Max templates to return (1-100).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Case-insensitive match against listing title, summary, detail, category, and starter prompt.",
"type": "string"
},
"sort": {
"description": "`builders` ranks by builders reached; `recent` (default) is newest-listed first.",
"enum": [
"builders",
"recent"
],
"type": "string"
}
},
"type": "object"
},
"name": "search_templates",
"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"
},
"ok": {
"const": true,
"description": "Indicates success. Errors arrive as content with isError:true.",
"type": "boolean"
},
"templates": {
"description": "Listed templates matching the query, most relevant first per `sort`.",
"items": {
"additionalProperties": false,
"properties": {
"builders": {
"description": "Distinct accounts that own a copy of this template.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"category": {
"description": "The Template's category, when set.",
"type": [
"string",
"null"
]
},
"contentMarkdown": {
"description": "The creator's longer Template detail in safe-subset Markdown.",
"type": [
"string",
"null"
]
},
"copyUrl": {
"description": "The app's own live URL. It starts browser navigation where a non-owner can choose to copy and must sign in before Charming creates the owned App. An agent copies the Template directly with copy_app or POST /app/<id>/copy. Free of write-capable `?t=` tokens.",
"type": "string"
},
"cover": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"alt": {
"type": "string"
},
"caption": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"url",
"alt",
"caption"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The Template's structured cover image, when set."
},
"creatorHandle": {
"description": "The template's creator handle.",
"type": "string"
},
"description": {
"description": "The creator's search-friendly summary.",
"type": [
"string",
"null"
]
},
"displayName": {
"description": "Human-readable name.",
"type": "string"
},
"id": {
"description": "The Template app id. Pass it to copy_app as `app_id`.",
"type": "string"
},
"starterPrompt": {
"description": "The prompt a fresh copy starts with, if the creator set one.",
"type": [
"string",
"null"
]
},
"templatePageUrl": {
"description": "The indexable `/templates/<handle>/<app-name>` page for this template.",
"type": "string"
}
},
"required": [
"id",
"displayName",
"description",
"contentMarkdown",
"category",
"cover",
"starterPrompt",
"copyUrl",
"templatePageUrl",
"builders",
"creatorHandle"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"ok",
"templates"
],
"type": "object"
}
}