4 tools registered. Strongest in shared experience, weakest in trust.
search_episodes: description is 995 characters, over Chrome's 500-character guidance; search_episodes: 3 parameter descriptions are over Chrome's 150-character guidance; filter_episodes: description i{
name: "search_episodes",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}search_episodes: The description instructs the agent on how to answer and cite.; list_episodes: The description instructs the agent on when to use the tool.; open_episode: The description instructs the agent on which episode to open.{
name: "search_episodes",
// Metadata DESCRIBES the tool - it never addresses the agent reading it.
// Rewrite any name, description, title, or schema field description that
// instructs the agent (which tool to prefer, what to output, rules to
// ignore) so it states what the tool does and what it returns instead.
description: "Searches the catalog and returns matching items with prices."
}{
"name": "search_episodes",
"description": "Search the published episodes of \"十分吸引\" by meaning or keyword. Retrieval is hybrid — a meaning-based (semantic) pass plus a keyword pass over transcripts and episode titles/descriptions, fused together — so you need no special query syntax or boolean operators. Phrase a concept as a natural-language question; for a specific name or term, pass just that term. Returns the most relevant episodes (or none, if nothing on the show is relevant), each with quoted transcript segments cited by timestamped links — answer from those, and cite each quote you use with its timestamped link (e.g. [12:03](URL)). To follow up within specific episodes, pass their ids (from a prior result) as `episodeIds`. Searches the WHOLE show — the filters currently applied to the page do not narrow it (use filter_episodes and list_episodes for the filtered view). This surface serves at most 20 episodes with up to 3 quoted segments each, so topK and maxSegmentsPerEpisode can only trim that — they cannot raise it.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "What to search for. Ask a natural-language question for a concept, or pass a specific name/term for an exact lookup — no special operators needed."
},
"topK": {
"default": 10,
"description": "Maximum number of episodes to return, ranked most-relevant first (max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"maxSegmentsPerEpisode": {
"default": 3,
"description": "Quoted transcript segments to include per episode — the main token dial (max 20). Raise it when scoping to a single episode (episodeIds) to get more of its moments.",
"type": "integer",
"minimum": 1,
"maximum": 20
},
"includeText": {
"default": true,
"description": "Include the quoted segment text. Set false for a lighter list of episodes + citations.",
"type": "boolean"
},
"fast": {
"default": false,
"description": "Skip the semantic pass for a cheaper, faster keyword-only search. Best for specific term/name lookups; natural-language questions lose recall without it.",
"type": "boolean"
},
"episodeIds": {
"description": "Restrict the search to specific episodes by id — pass the episodeId(s) from a prior result to follow up within those episodes. Omit to search the whole channel.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"query"
],
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"untrustedContentHint": true
}
}search_episodes: description is 995 characters, over Chrome's 500-character guidance; search_episodes: 3 parameter descriptions are over Chrome's 150-character guidance; filter_episodes: description i{
name: "search_episodes",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}{ name: "open_episode" /* short, unique, verb-based */ }search_episodes: The description instructs the agent on how to answer and cite.; list_episodes: The description instructs the agent on when to use the tool.; open_episode: The description instructs the agent on which episode to open.{
name: "search_episodes",
// Metadata DESCRIBES the tool - it never addresses the agent reading it.
// Rewrite any name, description, title, or schema field description that
// instructs the agent (which tool to prefer, what to output, rules to
// ignore) so it states what the tool does and what it returns instead.
description: "Searches the catalog and returns matching items with prices."
}{
"query": ""
}{}{}