Podcast Ingestion Core MCP Server
This server turns podcast audio (RSS, X, or YouTube) into searchable, timestamped transcripts, summaries, mentions, and verified research bundles — exposed to AI agents as MCP tools with preview-first confirmations.
Episode discovery & metadata: list and look up podcast episodes (
list_episodes,get_episode).Transcription: download audio and transcribe locally with faster-whisper (
transcribe_episode), plus validate existing transcript artifacts (validate_transcript).Search & evidence: search transcript segments and deterministic mentions with timestamp evidence across episodes (
search_transcripts,search_mentions); rebuild the SQLite cache from existing artifacts (rebuild_cache).Summarization: generate deterministic extractive summaries (
summarize_episode_extractive) and opt-in LLM semantic summaries gated by explicit cost acknowledgement (semantic_summarize_episode).Mention & stock lens extraction: extract deterministic entity/industry/ticker mentions (
extract_mentions,generate_stock_lens_report).External video ingest: ingest X or YouTube videos as podcast-like episodes (
ingest_x_video,ingest_youtube_video).Research reports: run deterministic research workflows and verified research report bundles, with catalog querying, coverage checks, source revalidation, gap backlog, and next-step suggestions (
run_research_workflow,run_episode_verified_research_report_workflow,query_verified_research_report_catalog,revalidate_verified_research_report_sources,query_verified_research_report_coverage,suggest_historical_verified_report_next_step,list_verified_report_gap_backlog).Guided workflows: preview-or-advance one confirmed step at a time through episode completion, deterministic processing, and verified research report generation (
run_corpus_episode_completion_workflow,run_corpus_latest_episode_deterministic_workflow,run_latest_episode_verified_research_report_workflow).Bundle derivation: produce workflow bundles from existing data with zero-write previews (
derive_workflow_bundle).
Allows Hermes agents to access the podcast ingestion MCP server through direct MCP, config, and Skills integration.
Provides semantic podcast episode summaries and synthesis reports using OpenAI-compatible APIs with configurable models, base URLs, and API keys.
Provides podcast episode listing and lookup by ingesting standard RSS feeds.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Podcast Ingestion Core MCP ServerSummarize the latest episode of Gooaye 股癌"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Corpus Ingestion Core
Turns podcast audio into verifiable, searchable knowledge. It takes an RSS feed (or an X / YouTube video), transcribes it locally with faster-whisper, and produces timestamped transcripts, summaries, entity mentions, and research artifacts on disk — exposed to AI agents through an MCP server and Skills.
In: a podcast RSS feed, or a video URL.
Out: transcripts, subtitles, summaries, mention indexes, and research
report bundles under data/, plus a SQLite index for cross-episode search.
Nothing this project produces is investment advice.
Why it exists
Podcast audio is hard to cite. A claim you half-remember from an episode three months ago is effectively unrecoverable. This project makes that content addressable: every extracted claim keeps a timestamp back to the audio, so an answer can be traced to the second it was said.
Two properties follow from that goal and shape the whole design:
Local-first. Transcription runs on your machine. Audio and transcripts do not leave it unless you explicitly opt into an LLM step.
Evidence over inference. The deterministic path is the default. LLM interpretation is a separate, opt-in layer that never overwrites it.
Related MCP server: MCP Podcast Scraper
Quickstart
Requires Python 3.11+. Examples use PowerShell; any shell works.
git clone https://github.com/norton77930/corpus-ingest-core.git
cd corpus-ingest-core
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .[dev]See it work first, in seconds
A synthetic corpus ships already transcribed and indexed, so the search and evidence tools answer before you have downloaded anything:
$env:CORPUS_INGEST_DATA_DIR = "examples/sample-corpus/data"
$env:CORPUS_INGEST_CONFIG = "examples/sample-corpus/podcasts.yaml"
python scripts/search_transcripts.py --podcast sample --query harbour --limit 5Unset both variables before running the real pipeline below.
The real pipeline
python scripts/list_episodes.py --podcast gooaye --limit 5
python scripts/download_episode.py --podcast gooaye --episode latest
python scripts/transcribe_episode.py --podcast gooaye --episode latest --model tiny --device cpu --compute-type int8
python scripts/summarize_episode.py --podcast gooaye --episode latest --mode extractiveStart with --model tiny to verify the pipeline end to end; a full episode on
CPU is slow. Switch to --model small --device cuda --compute-type float16
once you know it works. Then build the index and search across episodes:
python scripts/rebuild_cache.py --podcast gooaye --force
python scripts/search_transcripts.py --podcast gooaye --query TSMC --limit 10Add your own podcast by appending a profile to config/podcasts.yaml. The core
never hard-codes a specific show.
Connecting an agent, without cloning
The MCP server installs as a command, so an agent can reach it in one line:
claude mcp add corpus-ingest-core -- uvx --from git+https://github.com/norton77930/corpus-ingest-core.git@v0.2.0 corpus-ingest-mcpexamples/ carries ready-to-copy configs for Claude Desktop,
Claude Code and Codex, a set of prompts to try, and a small synthetic sample
corpus so the search and evidence tools return real results before you have
transcribed anything of your own.
What it produces
One episode yields transcripts (.txt, .srt, .json), a summary, a mention
index, and a row in the SQLite index. The claim in "Why it exists" is not a
slogan -- it is the shape of the data. Every extracted mention carries the
segments it came from:
{
"type": "industry",
"text": "AI",
"evidence": [
{
"segment_id": 9,
"timestamp": "[00:02:30 - 00:02:58]",
"text": "The interesting part is not the bill. It is that they moved the AI workload off rented capacity and onto hardware they own."
}
]
}So "the show discussed AI infrastructure costs" is never something you have to take on trust. It resolves to a segment id, a timestamp, and the sentence that was actually said -- and from there back to that second of audio.
The deterministic summary is built the same way, quoting segments rather than paraphrasing them:
## Timeline Summary
### 00:00:00 - 00:05:00
- Representative segment:
> Today we are talking about Harbour Robotics, a fictional company that
> builds picking arms for fictional warehouses.Both samples above are real output, taken from
examples/sample-corpus/ -- a synthetic corpus that
ships already indexed, so the search and evidence tools return results before
you have transcribed anything of your own.
What works today
Implemented: RSS episode listing and lookup, audio download, local faster-whisper transcription, transcript validation, deterministic extractive summaries, opt-in LLM semantic summaries with a review gate, deterministic mention extraction, SQLite metadata cache and search, X and YouTube video ingest, deterministic research artifacts (episode intelligence, industry chain mapping, external data boundary, stock lens), verified research report bundles with content-digest versioning, and the MCP server over both transports.
Not implemented: web UI, scheduling, embeddings, and vector search. External market data is deliberately bounded to local fixtures — there is no live market API, and adding one would be an explicit, reviewed decision rather than a feature.
Architecture
flowchart TD
RSS[RSS feed] --> DL
VID[X / YouTube video] --> DL[Audio download]
DL --> ASR[faster-whisper<br/>local transcription]
ASR --> VAL{Transcript<br/>validation}
VAL -->|complete| DET[Deterministic<br/>extractive summary]
VAL -->|complete| MEN[Mention extraction<br/>rule-based]
VAL -->|opt-in| LLM[LLM semantic summary<br/>OpenAI-compatible]
DET --> IDX[(SQLite index<br/>FTS5 + LIKE fallback)]
MEN --> IDX
LLM --> REV[Deterministic<br/>review gate]
REV --> IDX
IDX --> MCP[FastMCP server<br/>stdio + loopback HTTP]
MCP --> AGENT[AI agents<br/>Codex / Claude]Every stage reads artifacts the previous stage wrote to data/ and writes its
own. There is no hidden state: delete the SQLite cache and it rebuilds from the
files. The transcripts, summaries, and mentions on disk are the source of
truth.
Two summary paths, kept apart on purpose
This is the central design decision, and it is not an implementation detail.
Deterministic path | LLM path | |
Entry point |
|
|
Method | rule-based extraction from transcript segments | OpenAI-compatible API over transcript chunks |
Network | none | sends transcript text off the machine |
Credentials | none | API key, plus an exact cost acknowledgement |
Reproducibility | same input, same output, forever | not reproducible |
Output file |
|
|
They are never substituted for each other. Anything the deterministic path produces can be re-derived offline from the transcript alone; anything the LLM path produces cannot, so it is labelled as an LLM intermediate artifact rather than as podcast evidence, and it passes a deterministic review gate before downstream steps may consume it.
The reason is auditability. When a research artifact cites an episode, you need to know whether that claim came from the audio or from a model's reading of the audio. Merging the two paths would destroy that distinction permanently, and no amount of prompt engineering gets it back.
Mention extraction follows the same rule: it scans for companies, tickers, industries, macro topics, crypto, and places using deterministic rules, and each mention keeps timestamp evidence. It is not semantic understanding and does not claim to be.
Agent interface
The MCP server exposes the same core functions to AI agents over a single
FastMCP instance: stdio for local clients, and Streamable HTTP bound to
127.0.0.1:8767/mcp only. Same registry, same guards, two transports.
Every tool that writes, downloads, or spends money defaults to confirm=false
and returns an action plan instead of acting. Tools that would send transcript
text to an external provider require an exact acknowledgement string on top of
that. No tool rebuilds the search index behind your back.
That default is deliberately inconvenient, so seven Skills under
.agents/skills/ carry the protocol for turning one plain
request into one authorised run: preview, explain the risks, ask once, act
once, stop. They cover processing the latest episode, advancing an episode a
single step at a time, ingesting an X or a YouTube video, and the verified
research report paths. An agent without them can still call every tool -- it
just has to ask you twice.
docs/usage.md pairs each task with its CLI command, what to
say to an agent, and which Skill applies.
python scripts/validate_mcp_setup.py
python scripts/run_mcp_server.pyDocumentation
Start with the usage guide if you know what you want to do but not which command or tool does it; the rest of the list is reference material.
docs/usage.md— task-first guide: what each source type can do, and the CLI command, the agent phrasing, and the Skill for each common taskexamples/— agent configs, prompts to try, and a synthetic sample corpus that needs no transcriptiondocs/api.md— complete function reference, output paths, CLI reference, and the MCP tool registrydocs/architecture.md— architecture in depthdocs/install-and-porting.md— clean install and moving the project to another machinedocs/mcp-usage.md,docs/claude-mcp-setup.md,docs/codex-mcp-setup.md,docs/mcp-troubleshooting.md— connecting an agentdocs/agent-handoff.md— project status, spec history, blockers, and the entry point for anyone (human or agent) picking up development, including the 2026-08-19 session handoff relocated from the repo rootCONTRIBUTING.md— setup, how to verify a change, the product boundaries a change must not cross, and the hash-pinned files that must not be editedSECURITY.md— reporting a vulnerability privatelydocs/releasing.md— cutting a release, and the one-time PyPI setup it depends ondocs/ai-development-framework.md,docs/verification-matrix.md,docs/architecture-decision-records/README.md,AGENTS.md— change classification, guard-test matrix, and decision records
Evaluation suites, for checking that an agent uses the tools within their
declared boundaries:
docs/mcp-tool-use-eval.md,
docs/mcp-eval-prompts.md,
docs/mcp-eval-report-template.md,
docs/research-safety-eval.md,
docs/research-eval-prompts.md,
docs/research-llm-smoke.md.
Development
python -m pytest
python -m compileall src scriptsThere is no --ignore list: the whole suite runs and is expected to be green.
Scripts stay thin: they parse arguments and call corpus_ingest_core. New
behaviour is developed test-first. .env is local-only and must never be
committed.
Disclaimer
This project organizes podcast content for research and does not provide investment advice. It produces no buy, sell, or hold recommendations, no target prices, no guaranteed returns, and nothing personalized to your situation. Summaries and extracted mentions can be incomplete or wrong, and LLM-generated content can be confidently mistaken. Verify anything that matters against the original audio and a primary source.
License
MIT — see LICENSE. No third-party source is vendored on main; an
archived tag still carries one MIT-licensed snapshot, noted in
THIRD-PARTY-NOTICES.md.
Available Tools
25 toolsderive_workflow_bundleC
Side-effect tool:confirm=false 是 preview(零寫入、零網路)。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| podcast_id | No | ||
| episode_ref | No | ||
| api_cost_ack | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the tool has side effects and that confirm=false provides a safe preview, which is useful. However, it doesn't describe what side effects occur when confirm=true (what writes, what network calls), the impact on data, or any other behavioral traits like idempotency or error cases. The disclosure is partial and leaves critical unknown behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the 'side-effect tool' warning and the preview condition. There is no wasted wording, but it is under-specified for a tool with 5 parameters and many siblings. The conciseness is appropriate in length but not in content, so it earns a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 5 parameters, no annotations, an output schema (unseen), and 25 siblings, this description is drastically incomplete. It doesn't explain the tool's core function, differentiate it from similar workflow tools, define parameters (except confirm), or discuss return values or failure modes. An agent would not be able to call it correctly or decide when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for the confirm parameter (confirm=false = preview), but ignores force, api_cost_ack, podcast_id, and episode_ref entirely. Even for confirm, it doesn't explain what confirm=true does beyond being not-preview. Other parameters remain unexplained, leaving agents to guess their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description labels the tool as a 'side-effect tool' but never states what 'derive_workflow_bundle' actually does. It doesn't specify a clear verb+resource or explain what a workflow bundle is or how deriving it differs from running workflows (siblings like run_research_workflow). The purpose remains vague and relies on the tool name for meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions that confirm=false is a preview mode with zero writes/network, which is a condition for using the tool, not guidance on when to use this tool versus alternatives. No context is given for selecting this over the many run_* or query_* siblings, nor any prerequisites for calling it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_audioC
Side-effect tool:需要 confirm=true 才會下載 podcast audio。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| podcast_id | No | gooaye | |
| episode_ref | No | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does clearly disclose that this is a side-effect operation and that confirm=true is required, which is valuable guardrail context. However, it omits other behavioral details such as what happens when confirm is false, what side effects occur (e.g., file writes, network fetches), or any irreversibility/permission considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the most important warning ('Side-effect tool'). Every word earns its place; there is no filler. However, the extreme brevity borders on under-specification, which prevents a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effecting download tool with four undocumented parameters and no annotations, the description is not complete. The output schema helps with return values, but the agent still lacks enough context about force, episode selection semantics, defaults, and the practical consequences of invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It only explains confirm (must be true to download) and leaves force, podcast_id, and episode_ref semantically unexplained, despite their non-obvious defaults like 'gooaye' and 'latest'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('download podcast audio') and the gating condition (confirm=true), making the core purpose clear. It does not explicitly name or differentiate from sibling read-only or workflow tools, but the side-effect framing helps separate it from the many analytical siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use cases by labeling the tool a side-effect tool and requiring confirmation, but it gives no explicit guidance on when to use this tool versus transcribe_episode, list_episodes, or the workflow tools. There is no 'when-not-to-use' or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_mentionsC
Side-effect tool:需要 confirm=true 才會寫入 deterministic mention artifacts。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| podcast_id | No | gooaye | |
| episode_ref | No | latest | |
| allow_partial | No | ||
| max_evidence_per_mention | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly declares the tool is a 'Side-effect tool' and clarifies that writes happen only when confirm=true. With no annotations present, this is valuable behavioral disclosure beyond the tool name. It does not detail overwrite behavior or artifact location, but the key side-effect warning and confirmation requirement are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the critical 'Side-effect tool' warning is front-loaded. It loses one point because it is so minimal that it sacrifices useful explanatory content, but structurally and stylistically it is very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no schema descriptions, the description is far too incomplete. It does not explain the extraction workflow, how episodes are selected, what force or allow_partial control, or what the output artifacts represent. The output schema may cover return values, but the description still leaves major operational questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% and the description provides no explanation of any parameter. Confirm, force, allow_partial, max_evidence_per_mention, podcast_id, and episode_ref are all left undocumented in prose. Even though some parameter names are self-explanatory, the description itself adds no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool writes 'deterministic mention artifacts' and that it has side effects, coupling with the name 'extract_mentions.' However, it never explicitly says the tool extracts mentions from episodes, and 'deterministic mention artifacts' is vague jargon. It also does not differentiate itself from sibling tools like search_mentions or validate_transcript.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool instead of alternatives. The only usage-related information is 'needs confirm=true to write', which is a safety gate rather than a selection criterion. There is no mention of prerequisites, pipeline ordering, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_stock_lens_reportC
Side-effect tool:需要 confirm=true 才會寫入 deterministic stock lens report。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| podcast_id | No | gooaye | |
| stock_query | No | ||
| allow_partial | No | ||
| max_evidence_items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does disclose the two most critical behavioral traits: the tool has side effects (it writes state) and it will not write unless confirm=true, which is genuinely valuable guardrail information. But it omits what happens when confirm=false, whether the write overwrites or destoys an existing report, and how force or allow_partial modify execution. Partial disclosure for a mutation tool that needed complete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is one sentence with the critical side-effect warning front-loaded and zero filler, which is structurally efficient. But the brevity crosses into under-specification for a tool with six parameters, no annotations, and 25 siblings; it is short because it says too little, not because everything needed has been said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema covers return values, but everything else an agent needs before safely invoking a guarded mutation is missing: the outcome of a non-confirmed call, the destructiveness of the write, the semantics of force and allow_partial, and how a stock lens report relates to the verified-research-report family. For a side-effect tool at 0% schema coverage with no annotations, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, yet it assigns meaning to only one of six parameters: confirm=true gates the write. The remaining parameters — force, podcast_id, stock_query, allow_partial, max_evidence_items — receive no semantic explanation beyond their names, and the interaction between force and confirm (does force bypass the gate?) is left entirely to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — '寫入 deterministic stock lens report' (write a deterministic stock lens report) — and flags the tool as side-effecting, so an agent knows it persists state. However, it never explains what a stock lens report actually is or how it relates to the podcast domain, and the distinction from sibling workflow generators like run_latest_episode_verified_research_report_workflow or run_corpus_latest_episode_deterministic_workflow is left implicit. The description reads more like a safety banner than a purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing guidance is present. Among 25 siblings that include several workflow runners and report generators, nothing helps an agent decide between this tool and run_corpus_latest_episode_deterministic_workflow or run_latest_episode_verified_research_report_workflow. The confirm=true note is invocation syntax, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_episodeA
查詢單一 podcast episode metadata;支援 latest 與大小寫不敏感 EP ref。
| Name | Required | Description | Default |
|---|---|---|---|
| podcast_id | No | gooaye | |
| episode_ref | No | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It usefully reveals two non-obvious behaviors: the 'latest' keyword and case-insensitive episode references. However, it does not mention failure behavior, data freshness, source details, or any side effects, though the read-only 'metadata' framing lessens the risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core purpose and then packs the two most important behavioral details into a short clause. Every phrase adds value and there is no repetition of schema information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read-only getter with an output schema and defaults for both parameters, and the description covers the main calling conventions: single episode, latest support, and case-insensitive refs. It slightly under-specifies the exact episode ref format and error behavior, but an agent has enough to make a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for episode_ref by documenting 'latest' and case-insensitive matching, but it leaves podcast_id's meaning implicit beyond its name and default value, and it does not specify the expected format of a non-latest episode ref.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb '查詢' (query) plus a specific resource '單一 podcast episode metadata', clearly identifying this as a single-episode metadata lookup. This differentiates it from siblings like list_episodes, which handle collections of episodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: the description says 'single' episode and mentions the supported 'latest' and case-insensitive episode refs, so an agent can infer this tool is for one specific episode. However, it never explicitly names list_episodes as the alternative when multiple episodes are needed, and it gives no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_x_videoC
Side-effect tool:confirm=false 是 preview(零寫入,會讀公開 metadata)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| force | No | ||
| title | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose the most safety-critical trait: confirm=false is a zero-write preview mode that reads public metadata, while the tool itself is a side-effect operation. However, it stays silent on what confirm=true actually writes, what force does, and whether ingestion is idempotent or rate-limited — notable omissions for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is a single sentence that front-loads the risk class ('Side-effect tool') before the preview semantics, with zero wasted words. Each phrase earns its place, though the extreme brevity means there is minimal content to structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A side-effect tool with 4 parameters, no annotations, and 0% schema coverage needs substantially more than one sentence. The existence of an output schema reduces the need to explain return values, but the undocumented url/force/title semantics and the absence of any differentiation from ingest_youtube_video leave the definition materially incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's silence, but it only explains one of four parameters: confirm. The url, force, and title parameters receive no semantic explanation at all, leaving an agent to guess at URL format requirements and the meaning of force and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description labels the tool 'Side-effect tool' and explains the confirm flag's preview behavior, but never states what it actually does — ingesting an X/Twitter video — or what the ingestion accomplishes. The core purpose is only recoverable from the tool name, not from the description itself, which makes this closer to a tautology than a real purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the closely related sibling ingest_youtube_video or any of the other ingestion/search tools. The only conditional hint, that confirm=false corresponds to preview, is a safety instruction about a flag rather than a when-to-use selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_youtube_videoC
Side-effect tool:confirm=false 是 preview(零寫入,會讀公開 metadata)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| force | No | ||
| title | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and only discloses that confirm=false is a zero-write preview that reads public metadata. It does not disclose the real side effects of confirm=true, such as what gets written, downloaded, or persisted, nor any auth, idempotency, or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with the most important safety distinction, but it is under-specified rather than efficiently complete. It earns its place yet leaves critical content missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effect tool with no annotations, no schema descriptions, four parameters, and an output schema, the description is far from complete. It omits the core ingest behavior, side effects, parameter meanings, and sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters, but it only touches confirm. url, force, and title remain completely unexplained, and confirm=true's meaning is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a side-effect tool and explains the preview mode, but it never explicitly states that the tool ingests a YouTube video; that action is only implied by the tool name. It distinguishes confirm=false behavior but does not differentiate the tool from siblings like ingest_x_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a usage pattern: use confirm=false to preview with zero writes. However, it does not say when to use this tool instead of alternatives, nor what confirm=true actually triggers, leaving the when-to-use guidance incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_episodesB
列出指定 podcast 最近集數;不回傳完整 audio_url。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| podcast_id | No | gooaye |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses one important behavior — it does not return the full audio_url — which is genuinely useful. However, it does not mention other behavioral traits such as sorting, pagination, read-only status, or what happens when the podcast has no episodes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler. It front-loads the core purpose and then adds the key exclusion, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return-value documentation is covered. However, the description is minimal: it does not define 'recent', mention that both parameters are optional, or provide guidance for choosing among the many sibling tools. It is usable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only implicitly maps '指定 podcast' to podcast_id. It does not explain the limit parameter, its meaning, or the defaults. The schema's default values for limit and podcast_id are the only guidance for those parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: list recent episodes for a specified podcast. It also adds a distinguishing boundary ('不回傳完整 audio_url'), which helps separate it from download_audio. However, it does not explicitly name sibling alternatives like get_episode, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need recent episodes of a podcast and do not need full audio URLs. It does not explicitly state when to prefer get_episode, download_audio, or search_transcripts, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_verified_report_gap_backlogB
List inventory episodes missing a verified research report bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| podcast_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly indicates a read-only listing operation and the selection criterion, which is useful. However, it does not disclose pagination behavior, ordering, what happens when no gaps exist, or how 'verified research report bundle' is determined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The core action and target resource are front-loaded, making it easy to scan and quickly understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and reduces the need to explain return shapes, the overall context is incomplete: parameter semantics are absent, no alternative routing is provided, and the description alone is too minimal to fully support correct tool selection and invocation among many related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, but it provides no parameter-level guidance. It never mentions that the list is scoped by podcast_id or that limit controls the number of results, leaving both parameters essentially undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'List', and a specific resource, 'inventory episodes missing a verified research report bundle.' This makes the tool's focus immediately distinct from siblings like list_episodes or query_verified_research_report_coverage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to identify gaps in verified research report coverage, but it does not explicitly state when to prefer this tool over siblings such as list_episodes or query_verified_research_report_coverage, nor does it mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_verified_research_report_catalogC
List, search, or inspect read-only verified research report bundles.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| action | No | list | |
| podcast_id | No | ||
| episode_ref | No | ||
| source_digest | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does state 'read-only,' which is a meaningful safety signal for an agent. However, it does not describe how action values behave, what query matching is used, whether pagination or limits apply, or what an 'inspect' operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verbs and resource, with no filler. It is efficient, but the verb 'inspect' is vaguely defined and the sentence sacrifices necessary parameter/action detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six optional parameters, zero parameter descriptions, no enums, and no annotation coverage, the description is too thin. Although an output schema exists and return values may be defined there, the absence of action semantics and filter meanings leaves an agent unable to reliably choose or correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention any of the six parameters: action, query, limit, podcast_id, episode_ref, or source_digest. An agent has no guidance on how to populate these fields or what the allowed action values are, especially since action has no enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies specific actions (list, search, inspect) and a specific resource (read-only verified research report bundles). It clearly conveys this is a query-oriented catalog tool and the read-only qualifier helps separate it from generation/revalidation siblings, though it does not name sibling tools explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, and no exclusions or conditions are stated. Sibling tools like query_verified_research_report_coverage and list_verified_report_gap_backlog are similar in spirit, but the description does not differentiate them or explain what problem this tool uniquely solves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_verified_research_report_coverageC
List episode-centric coverage of local verified research report bundles.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| has_bundle | No | ||
| podcast_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'List', which implies a read-only operation, but it does not explain what 'coverage' means, whether results are filtered by has_bundle, how limiting works, or any other behavioral nuance. The description adds little beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, which is structurally economical. However, it is under-specified: the brevity comes at the cost of clarity about what the tool actually does. It is concise but not optimally informative for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and return values need not be described, the description still fails to explain the core concept of 'coverage', the role of the required podcast_id, or the meaning of has_bundle. With three parameters and no annotations, this is insufficient context for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention podcast_id, limit, or has_bundle at all. The schema property names and types provide some self-evident meaning, but the description itself adds no parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and names a distinct resource ('episode-centric coverage of local verified research report bundles'), which clearly distinguishes it from the catalog-style sibling query_verified_research_report_catalog. However, the term 'coverage' is somewhat vague and the meaning of 'local verified research report bundles' is not fully unpacked, so it is not perfectly clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives. It does not mention filters, prerequisites, or related tools like query_verified_research_report_catalog or list_episodes. The usage context is only implied by the name and input schema, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebuild_cacheA
Maintenance tool:重建 SQLite cache;只索引既有 artifacts,不下載、不轉錄、不摘要。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| podcast_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It clearly states the maintenance nature and the non-destructive boundaries (no download/transcribe/summarize). However, it does not disclose whether 'rebuild' deletes or overwrites the existing cache, or mention any side effects, permissions, or rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the most important context ('Maintenance tool'). Every clause adds value: target resource, scope, and explicit exclusions. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and has an output schema, the description omits any guidance on parameter semantics and when to trigger a rebuild. Given the absence of annotations and 0% schema coverage, this leaves important invocation details unresolved for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation for the two parameters 'force' and 'podcast_id'. An agent is left to infer their meaning purely from names and defaults, which is insufficient for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: rebuilding the SQLite cache. It further distinguishes itself by explicitly listing what it does not do ('不下载、不转录、不摘要'), which differentiates it from sibling tools like download_audio, transcribe_episode, and summarize_episode_extractive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description labels this as a 'Maintenance tool' and clarifies it only indexes existing artifacts, giving clear context for when to use it. The explicit exclusions ('不下载、不轉錄、不摘要') help an agent avoid selecting it for content-fetching or processing tasks, though it does not name alternative tools or describe conditions like 'use when cache is stale'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revalidate_verified_research_report_sourcesC
Revalidate one exact verified-report bundle's local source metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| podcast_id | Yes | ||
| episode_ref | Yes | ||
| source_digest | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it does not explain what 'revalidate' actually does, whether it mutates local metadata, what side effects occur, or what happens if validation fails. The word 'local' adds some scope, but the behavioral implications remain unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler words. It front-loads the verb and resource, and every word contributes to the core meaning. It is appropriately concise, though it sacrifices useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three required parameters, no annotations, and a non-obvious operation like 'revalidate', this description is incomplete. It does not explain prerequisites, expected behavior, failure semantics, or how the parameters relate. The presence of an output schema reduces the need to describe return values, but the core invocation context is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not define podcast_id, episode_ref, or source_digest. The phrase 'one exact verified-report bundle' implies these parameters together identify a specific bundle, but no format, constraints, or relationships are explained. The parameter names are somewhat self-explanatory but not sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Revalidate') and a specific resource ('one exact verified-report bundle's local source metadata'), which is reasonably clear. It does not explicitly name or contrast sibling tools, but the scope of 'one exact bundle' partially differentiates it from the broader workflow and catalog tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as query_verified_research_report_catalog or the verified report workflow tools. The phrase 'one exact' hints at targeting a single bundle, but there is no explicit when-to-use or when-not-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_corpus_episode_completion_workflowC
Preview or advance one episode by one explicitly confirmed action.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | next | |
| confirm | No | ||
| podcast_id | Yes | ||
| episode_ref | No | latest | |
| api_cost_ack | No | ||
| semantic_model | No | ||
| semantic_base_url | No | ||
| semantic_provider | No | openai-compatible | |
| transcription_model | No | ||
| semantic_api_key_env | No | OPENAI_API_KEY | |
| transcription_device | No | cpu | |
| semantic_chunk_seconds | No | ||
| transcription_vad_filter | No | ||
| transcription_compute_type | No | int8 | |
| semantic_max_segments_per_chunk | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies both a read-like mode ('preview') and a mutating mode ('advance') but never explains side effects, what state changes occur, cost implications (despite the api_cost_ack parameter), or how confirmation gates execution. The confirmation mechanic is hinted at but never disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but this is under-specification rather than conciseness. The awkward phrase 'by one explicitly confirmed action' obscures rather than clarifies, and the single sentence does not earn its place given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow tool with 15 parameters, zero schema descriptions, no annotations, and numerous workflow siblings, a single opaque sentence is wholly inadequate. Even with an output schema present, the agent cannot determine what the workflow does, what parameters mean, or what side effects to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it adds nothing about the 15 parameters. Only the word 'confirmed' loosely maps to the confirm parameter; semantic_model, transcription_*, api_cost_ack, episode_ref, and semantic_chunk_seconds are all left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names verbs ('preview', 'advance') and a resource ('one episode'), so it avoids pure tautology. However, 'by one explicitly confirmed action' is vague, and nothing distinguishes this from the many workflow siblings (run_research_workflow, run_episode_verified_research_report_workflow, etc.). What 'completion' means and what advancing entails remain unclear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the sibling workflow tools, nor when to choose 'preview' over 'advance'. The phrase 'explicitly confirmed action' hints that confirmation is required, but the description never states the condition or workflow position for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_corpus_latest_episode_deterministic_workflowC
Preview or process one current latest episode through local deterministic stages.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| podcast_id | Yes | ||
| transcription_model | No | ||
| transcription_device | No | cpu | |
| transcription_vad_filter | No | ||
| transcription_compute_type | No | int8 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. 'Preview or process' implies two modes and 'local deterministic stages' hints at reproducibility, but it does not say what the stages are, whether processing writes data, whether preview has side effects, or what confirm controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and readable, with no wasted words. However, it is under-specified to the point that phrases like 'local deterministic stages' and 'Preview or process' carry jargon and ambiguity rather than concrete operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow tool with six parameters, no annotations, and a large set of sibling workflow tools, this one-line description is far from complete. It does not explain the confirm flag, the transcription settings, the workflow outcome, side effects, or how this tool relates to the other run_*_workflow siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for documenting six parameters. It does not clarify that podcast_id identifies the corpus, that confirm switches between preview and full processing, or what the transcription_model/device/vad/compute_type options do.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Preview or process') on a specific resource ('one current latest episode') and mentions a method ('local deterministic stages'). However, it does not differentiate this workflow from sibling workflow tools like run_corpus_episode_completion_workflow or run_latest_episode_erified_research_reort_workflow, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over its many sibling workflow tools. The description does not explain when preview mode is appropriate versus full processing, nor does it mention any prerequisites or conditions that should trigger this workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_episode_verified_research_report_workflowC
Preview or publish one explicit-episode verified research report (assemble only).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| podcast_id | Yes | ||
| episode_ref | Yes | ||
| stock_query | No | ||
| include_fixture_verification | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and only reveals that the tool has two modes (preview/publish) and is limited to assembly. It does not disclose the side effects of publishing, whether confirmation gates the action, auth requirements, or what 'assemble only' actually does or leaves undone. This is potentially a mutating workflow, so the gap is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with no filler; every phrase carries information (modes, episode scoping, artifact type, assembly constraint). It is efficiently structured and front-loaded, though slightly under-sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so that is not the issue, but the tool is a complex 5-parameter workflow with publish side effects, zero annotation coverage, and many close siblings. A single sentence cannot convey sibling routing, parameter meaning, or publish behavior, leaving the definition materially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only indirectly hints at two parameters: 'explicit-episode' maps to episode_ref, and 'Preview or publish' maps to the confirm flag. stock_query and include_fixture_verification are left completely unexplained, and podcast_id semantics are assumed rather than stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific actions ('Preview or publish'), a specific resource ('one explicit-episode verified research report'), and a scope constraint ('assemble only'). The 'explicit-episode' phrasing differentiates it from the sibling run_latest_episode_verified_research_report_workflow, so an agent can discriminate at a glance. Minor deduction because 'assemble only' is cryptic and the artifact type 'verified research report' is never defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied by the phrase 'explicit-episode', which weakly contrasts with the latest-episode sibling, and by 'assemble only', which hints this is a partial workflow. There is no explicit statement of when to choose this over run_research_workflow or the corpus/latest-episode variants, and no guidance on when to preview versus publish.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_latest_episode_verified_research_report_workflowC
Preview or complete one approved latest verified research report workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| podcast_id | Yes | ||
| stock_query | No | ||
| api_cost_ack | No | ||
| semantic_model | No | ||
| semantic_provider | No | openai-compatible | |
| transcription_model | No | ||
| expected_episode_ref | No | ||
| transcription_device | No | cpu | |
| semantic_chunk_seconds | No | ||
| transcription_vad_filter | No | ||
| transcription_compute_type | No | int8 | |
| include_fixture_verification | No | ||
| semantic_max_segments_per_chunk | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but 'Preview or complete' only hints at a two-phase execution model. It does not disclose side effects, whether confirm=true triggers an expensive or write-heavy run, or whether records are written to the verified report catalog.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is compact with no filler, earning efficiency credit. But it is more of a label than an informative definition; 'approved latest' is awkward and consumes words without adding precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter workflow with no annotations, this definition is severely under-specified. The agent cannot know when confirmation is required, what the cost-acknowledgment parameter means, or how model/device parameters should be set; the output schema covers return shape, not operational prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 14 parameters and the description adds no parameter information. The 'preview or complete' wording loosely maps to the confirm boolean, but parameters like api_cost_ack and include_fixture_verification are never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States two concrete actions ('Preview or complete') and names the resource type ('approved latest verified research report workflow'), which separates it from the sibling run_episode_verified_research_report_workflow by focusing on the latest episode. However, 'approved latest' is slightly ambiguous about whether the episode or the workflow is approved, and what qualifies as 'latest.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose this tool over closely related siblings such as run_episode_verified_research_report_workflow or the corpus latest-episode workflow. The phrase 'latest' implies a use case but does not state selection conditions or mention the confirm-based preview/execute flow as a usage decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_research_workflowC
Side-effect workflow tool:dry-run first,confirmed LLM steps require exact ack。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| podcast_id | No | gooaye | |
| episode_ref | No | latest | |
| stock_query | No | ||
| api_cost_ack | No | ||
| allow_partial | No | ||
| semantic_model | No | ||
| synthesis_model | No | ||
| semantic_base_url | No | ||
| semantic_provider | No | openai-compatible | |
| synthesis_base_url | No | ||
| synthesis_provider | No | openai-compatible | |
| semantic_api_key_env | No | OPENAI_API_KEY | |
| report_window_seconds | No | ||
| synthesis_api_key_env | No | OPENAI_API_KEY | |
| semantic_chunk_seconds | No | ||
| max_candidates_per_node | No | ||
| include_semantic_summary | No | ||
| max_evidence_per_mention | No | ||
| max_evidence_per_section | No | ||
| max_stock_evidence_items | No | ||
| max_evidence_per_candidate | No | ||
| synthesis_max_prompt_chars | No | ||
| include_stock_lens_synthesis | No | ||
| semantic_max_segments_per_chunk | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does disclose that the tool has side effects and that a dry-run-then-confirm protocol is required, which is valuable. However, it does not describe what side effects occur, what an 'exact ack' means in concrete terms, whether costs are incurred, or what state gets changed, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but that brevity is not appropriate for a complex 26-parameter tool with a workflow, confirmation protocol, and many model/provider options. While the sentence contains useful safety information, it lacks any structural organization and is under-specified rather than economically concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity, zero schema description coverage, no annotations, and a large sibling set, this description is far from complete. It provides almost no information about what the workflow does, what its key parameters control, what side effects to expect, or how it differs from similar workflow tools. An agent cannot reliably select or invoke this tool based on this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 26 parameters, and the description adds essentially no meaning to the parameters. Terms like 'dry-run' and 'ack' vaguely relate to confirm and api_cost_ack, but no parameter is explained, mapped, or contextualized. The description fails to compensate for the complete absence of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description only labels the tool as a 'Side-effect workflow tool' and mentions a dry-run/confirmation procedure; it never states what the research workflow actually does, what inputs it consumes, or what output it produces. It is essentially a generic category label, restating the name without distinguishing it from the many run_* workflow siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does provide some procedural guidance: run a dry-run first, and confirmed LLM steps require an exact ack. This implicitly tells an agent how to approach invocation safely, but it does not say when to choose this tool over alternatives like run_latest_episode_verified_research_report_workflow or run_corpus_episode_completion_workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mentionsC
搜尋 SQLite cache 中的 deterministic mentions 與 timestamp evidence。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| podcast_id | No | gooaye | |
| mention_type | No | ||
| case_sensitive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds some value by stating the data source (SQLite cache) and result focus (deterministic mentions and timestamp evidence). However, it does not explicitly state read-only behavior, cache staleness, or any operational side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the core behavior. Every word contributes to identifying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter search tool with zero parameter documentation and no annotations, this terse description is insufficient. The agent is left guessing about parameter formats, defaults, and filter behavior. The presence of an output schema mitigates return-shape concerns but not the missing operational and parameter guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names no parameters. It does not explain what query syntax is expected, how mention_type should be expressed, what podcast_id default 'gooaye' means, or how limit and case_sensitive affect results. The description fails to compensate for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (搜尋/search) and names a concrete resource: 'SQLite cache 中的 deterministic mentions 與 timestamp evidence'. This makes the tool's object and scope reasonably clear. It does not explicitly differentiate from sibling search_transcripts, but the mention-vs-transcript distinction is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like search_transcripts, extract_mentions, or rebuild_cache. No exclusions or conditions are provided, so an agent cannot easily decide whether this is the right search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptsA
搜尋 SQLite cache 中的 transcript segments;不會自動 rebuild cache。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| podcast_id | No | gooaye | |
| search_mode | No | auto | |
| case_sensitive | No | ||
| context_segments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses one genuinely useful behavioral trait beyond the name: the tool reads from the SQLite cache and will not rebuild it, implying results may be stale or empty on a cache miss. However, with no annotations provided, the description carries the full burden and does not state read-only guarantees, cache-miss behavior, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A two-clause description with the primary action front-loaded and zero filler. The behavioral warning about not rebuilding the cache is appended efficiently in the second clause; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no annotations, and 0% description coverage, this is too thin. While an output schema covers return values, the interplay of search_mode, case_sensitive, context_segments, and podcast_id is unexplained, leaving an agent guessing at valid invocations. The core purpose is clear, but the surrounding context a caller needs is largely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description contributes no parameter-level meaning. Ambiguous values such as search_mode='auto' and context_segments are left undefined, and with no enum constraints in the schema the agent has no way to know valid modes or semantics. The description must compensate for the low coverage but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — searching transcript segments within the SQLite cache — and adds the explicit caveat that it will not rebuild the cache, which differentiates it from the rebuild_cache sibling. An agent understands exactly what object this operates on and can distinguish it from related search tools like search_mentions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'won't auto-rebuild cache' clause implies a usage context (use this when searching existing cached data, not when fresh data is needed), but no alternative tools are named directly and no explicit when-to-use/when-not-to-use guidance is given. Routing to rebuild_cache or search_mentions is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_summarize_episodeC
API-cost side-effect tool:需要 confirm=true 與 exact api_cost_ack 才會呼叫外部 LLM。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| model | No | ||
| confirm | No | ||
| base_url | No | ||
| provider | No | openai-compatible | |
| podcast_id | No | gooaye | |
| api_key_env | No | OPENAI_API_KEY | |
| episode_ref | No | latest | |
| api_cost_ack | No | ||
| allow_partial | No | ||
| chunk_seconds | No | ||
| max_segments_per_chunk | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It clearly reveals that this tool has side effects (API cost, external LLM call) and sets an explicit precondition (confirm=true and exact api_cost_ack) before the external call occurs. This is useful transparency, though it does not cover all behavioral consequences such as caching, write effects, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, and it highlights the most critical operational caveat (cost and confirm/ack gating) early. It is appropriately concise, though slightly cryptic due to mixed-language jargon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 12-parameter tool with no annotations and only an output schema, the description is too thin to be complete. It explains the cost gate but does not clarify what input the tool expects beyond the ack, how to choose episode_ref, what configuration parameters like model/base_url/api_key_env do, or what the semantic summary result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for confirm and api_cost_ack by identifying them as required gates for the external LLM call, but the other 10 parameters (force, model, base_url, podcast_id, api_key_env, episode_ref, allow_partial, chunk_seconds, max_segments_per_chunk) receive no semantic explanation beyond their raw schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as an 'API-cost side-effect tool' that calls an external LLM when confirm=true and api_cost_ack match, but it never explicitly states that the tool summarizes an episode. The intended action is mostly inferable from the tool name and sibling context, making the purpose vague rather than fully specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like summarize_episode_extractive or other workflow tools. It only implies caution due to cost, but does not state conditions for selection, exclusions, or recommended alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_historical_verified_report_next_stepC
Suggest one next human-gated step for a named historical episode.
| Name | Required | Description | Default |
|---|---|---|---|
| podcast_id | Yes | ||
| episode_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The phrase 'human-gated' and the verb 'suggest' imply the tool proposes an action rather than executing it, which is useful behavioral context in the absence of annotations. However, it does not disclose side effects, prerequisites, or how the suggestion is determined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Slightly more detail would be appropriate given the lack of annotations, but the structure itself is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, minimal parameter documentation, and many related workflow siblings. The description leaves the agent without enough context to know when to invoke this tool or how it differs from nearby tools, despite the output schema covering return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only hints at 'episode_ref' via 'named historical episode'. It does not clarify the role or expected format of podcast_id or episode_ref beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Suggest one next human-gated step') and a clear target ('a named historical episode'). It is clear about what the tool does, though it does not explicitly differentiate it from related workflow and backlog sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as list_verified_report_gap_backlog or run_episode_verified_research_report_workflow. The description implies use for historical episodes but does not explain the intended context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_episode_extractiveA
Side-effect tool:需要 confirm=true 才會寫入 deterministic extractive summary。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| confirm | No | ||
| max_quotes | No | ||
| podcast_id | No | gooaye | |
| episode_ref | No | latest | |
| allow_partial | No | ||
| window_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly warns that this is a side-effect tool and that writes only occur with confirm=true, which is essential transparency. Still, it does not mention consequences of force, allow_partial, or default behavior around latest episode references, leaving gaps for a mutation-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the most important behavioral warning ('Side-effect tool') front-loaded. There is no filler or redundant restatement of the tool name, and every word adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too thin for a seven-parameter side-effect tool with no annotations and no schema descriptions. It omits what the other parameters do, when the tool should be run, and how it relates to semantic_summarize_episode, so an agent would still need substantial inference to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the seven undocumented parameters. It explains only confirm=true's gating role, while force, max_quotes, podcast_id, episode_ref, allow_partial, and window_seconds receive no semantic explanation in either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that this tool writes a deterministic extractive summary when confirm=true, giving a clear verb ('write'), resource ('summary'), and side-effect condition. The word 'extractive' and 'deterministic' also differentiate it from the sibling semantic_summarize_episode, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent that confirm=true is required before any write happens, which is useful operational guidance for a side-effect tool. However, it does not state when to choose this tool over semantic_summarize_episode or other summarization/workflow siblings, so the usage context is only partially conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_episodeA
Long-running side-effect tool:需要 confirm=true 才會下載/取得音檔並轉錄。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| model | No | tiny | |
| device | No | cpu | |
| confirm | No | ||
| podcast_id | No | gooaye | |
| vad_filter | No | ||
| episode_ref | No | latest | |
| compute_type | No | int8 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral burden and does well by flagging long-running execution, side effects, and the confirm=true gate before any work happens. It could add more detail about what the side effects affect, but the core safety-relevant behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the most important facts—long-running, side-effect, and the confirmation requirement—placed right at the start. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, side-effectful, long-running tool with no annotations, this description is too thin. It explains the confirmation gate and the core operation but omits guidance on the many optional parameters and does not clarify what makes this transcribe tool distinct from nearby sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but only confirm is explained. Parameters like force, vad_filter, model, device, compute_type, and episode_ref have defaults but no intended meaning or interaction, leaving an agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action ('transcribe') and resource ('episode'), and adds that it downloads/obtains audio before transcribing. It does not explicitly contrast itself with sibling tools like download_audio or the summarization tools, so it misses the top score for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: the tool is long-running and side-effectful, and must be invoked with confirm=true. However, it does not state when not to use it or name an alternative, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_transcriptC
檢查既有 transcript artifacts 是否完整、有效或疑似 partial。
| Name | Required | Description | Default |
|---|---|---|---|
| podcast_id | No | gooaye | |
| episode_ref | No | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what is checked and does not disclose whether the tool is read-only, whether it has side effects, permissions, or rate limits. '檢查' weakly implies non-destructive behavior, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded, efficient sentence with no filler. It is concise, though slightly under-specified, so it earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no parameter explanations, and no usage guidance, the description is insufficient for an agent to safely pick this tool among many related siblings. The presence of an output schema covers return values, but not selection, parameter, or behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining podcast_id and episode_ref, but it does not mention either parameter. The only clues come from the schema's self-describing names and defaults (gooaye, latest), not from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('檢查'/'check') and resource ('既有 transcript artifacts') and states the three evaluation outcomes: complete, valid, or suspected partial. This distinguishes it from transcription/search siblings, though it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as transcribe_episode, search_transcripts, or get_episode. The word '既有' (existing) implies a precondition that artifacts already exist, but no when-to-use or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
25 tool updates
v0.2.0- First observed
derive_workflow_bundle - First observed
download_audio - First observed
extract_mentions - First observed
generate_stock_lens_report - First observed
get_episode - First observed
ingest_x_video - First observed
ingest_youtube_video - First observed
list_episodes - First observed
list_verified_report_gap_backlog - First observed
query_verified_research_report_catalog - First observed
query_verified_research_report_coverage - First observed
rebuild_cache - First observed
revalidate_verified_research_report_sources - First observed
run_corpus_episode_completion_workflow - First observed
run_corpus_latest_episode_deterministic_workflow - First observed
run_episode_verified_research_report_workflow - First observed
run_latest_episode_verified_research_report_workflow - First observed
run_research_workflow - First observed
search_mentions - First observed
search_transcripts - First observed
semantic_summarize_episode - First observed
suggest_historical_verified_report_next_step - First observed
summarize_episode_extractive - First observed
transcribe_episode - First observed
validate_transcript
TDQS
Scored across 25 tools
The base episode/transcript/search tools are distinct, but the workflow surface is crowded: run_research_workflow and the four run_*_workflow variants, plus two query_verified_research_report_* tools, have highly similar names and only subtle distinctions. An agent would likely struggle to select the correct workflow tool without very careful reading.
Tool names overwhelmingly follow a snake_case verb_noun pattern and form a recognizable family. Minor inconsistencies like summarize_episode_extractive vs semantic_summarize_episode, and some very long workflow names with awkward modifier placement, keep it from being perfectly consistent.
25 tools sits at the high end of the heavy-but-acceptable range. The core ingestion operations are well represented, but the many workflow/report variants make the count feel bloated for a server named 'Podcast Ingestion Core'.
The tool set covers the core ingestion lifecycle well: list/get, download, transcribe, summarize, extract mentions, search, validate, cache rebuild, and extended X/YouTube ingestion and report workflows. Notable minor gaps are the lack of a direct transcript retrieval tool and no delete/update artifact operations, but agents can work around these.
Maintenance
Related MCP Connectors
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
Podcast Index MCP — wraps the Podcast Index API (podcastindex.org)
MCP server for structured access to Lenny Rachitsky podcast transcripts. For content creators.
Host your MCP tool over streamable HTTP in one command.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA dual-transport MCP server that exposes your API as tools to LLM clients, supporting both stdio transport for local clients like Claude Desktop and HTTP/SSE transport for remote clients like OpenAI's Responses API.-
- FlicenseAqualityDmaintenanceAn MCP server that scrapes and transcribes podcast episodes from YouTube or RSS feeds using Deepgram's Nova-2 model. It allows users to track podcasts for new episodes, manage transcripts, and generate personalized summaries through Claude.101-
- AlicenseNot gradedqualityAmaintenanceExposes all CLI commands as MCP tools over stdio or HTTP transport.10 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceLocal podcast transcription, embedding, and semantic search with an MCP server for AI assistant integration. All processing runs on your machine.MIT