Skip to main content
Glama
norton77930

Podcast Ingestion Core MCP Server

by norton77930

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.

tests license: MIT python: 3.11+

繁體中文說明

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 5

Unset 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 extractive

Start 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 10

Add 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-mcp

examples/ 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

summarize_episode

semantic_summarize_episode

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

.md

.semantic.md

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.py

Documentation

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.

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 scripts

There 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 tools
derive_workflow_bundleC

Side-effect tool:confirm=false 是 preview(零寫入、零網路)。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
podcast_idNo
episode_refNo
api_cost_ackNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters2/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
podcast_idNogooaye
episode_refNolatest

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
podcast_idNogooaye
episode_refNolatest
allow_partialNo
max_evidence_per_mentionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
podcast_idNogooaye
stock_queryNo
allow_partialNo
max_evidence_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
podcast_idNogooaye
episode_refNolatest

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)。

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
forceNo
titleNo
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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)。

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
forceNo
titleNo
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
podcast_idNogooaye

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
podcast_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
actionNolist
podcast_idNo
episode_refNo
source_digestNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
has_bundleNo
podcast_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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,不下載、不轉錄、不摘要。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
podcast_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
podcast_idYes
episode_refYes
source_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNonext
confirmNo
podcast_idYes
episode_refNolatest
api_cost_ackNo
semantic_modelNo
semantic_base_urlNo
semantic_providerNoopenai-compatible
transcription_modelNo
semantic_api_key_envNoOPENAI_API_KEY
transcription_deviceNocpu
semantic_chunk_secondsNo
transcription_vad_filterNo
transcription_compute_typeNoint8
semantic_max_segments_per_chunkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
podcast_idYes
transcription_modelNo
transcription_deviceNocpu
transcription_vad_filterNo
transcription_compute_typeNoint8

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
podcast_idYes
episode_refYes
stock_queryNo
include_fixture_verificationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
podcast_idYes
stock_queryNo
api_cost_ackNo
semantic_modelNo
semantic_providerNoopenai-compatible
transcription_modelNo
expected_episode_refNo
transcription_deviceNocpu
semantic_chunk_secondsNo
transcription_vad_filterNo
transcription_compute_typeNoint8
include_fixture_verificationNo
semantic_max_segments_per_chunkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
podcast_idNogooaye
episode_refNolatest
stock_queryNo
api_cost_ackNo
allow_partialNo
semantic_modelNo
synthesis_modelNo
semantic_base_urlNo
semantic_providerNoopenai-compatible
synthesis_base_urlNo
synthesis_providerNoopenai-compatible
semantic_api_key_envNoOPENAI_API_KEY
report_window_secondsNo
synthesis_api_key_envNoOPENAI_API_KEY
semantic_chunk_secondsNo
max_candidates_per_nodeNo
include_semantic_summaryNo
max_evidence_per_mentionNo
max_evidence_per_sectionNo
max_stock_evidence_itemsNo
max_evidence_per_candidateNo
synthesis_max_prompt_charsNo
include_stock_lens_synthesisNo
semantic_max_segments_per_chunkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior3/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines3/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
podcast_idNogooaye
mention_typeNo
case_sensitiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
podcast_idNogooaye
search_modeNoauto
case_sensitiveNo
context_segmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
modelNo
confirmNo
base_urlNo
providerNoopenai-compatible
podcast_idNogooaye
api_key_envNoOPENAI_API_KEY
episode_refNolatest
api_cost_ackNo
allow_partialNo
chunk_secondsNo
max_segments_per_chunkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
podcast_idYes
episode_refYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
confirmNo
max_quotesNo
podcast_idNogooaye
episode_refNolatest
allow_partialNo
window_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 才會下載/取得音檔並轉錄。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
modelNotiny
deviceNocpu
confirmNo
podcast_idNogooaye
vad_filterNo
episode_refNolatest
compute_typeNoint8

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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。

ParametersJSON Schema
NameRequiredDescriptionDefault
podcast_idNogooaye
episode_refNolatest

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 25 tool updatesv0.2.0
    • First observedderive_workflow_bundle
    • First observeddownload_audio
    • First observedextract_mentions
    • First observedgenerate_stock_lens_report
    • First observedget_episode
    • First observedingest_x_video
    • First observedingest_youtube_video
    • First observedlist_episodes
    • First observedlist_verified_report_gap_backlog
    • First observedquery_verified_research_report_catalog
    • First observedquery_verified_research_report_coverage
    • First observedrebuild_cache
    • First observedrevalidate_verified_research_report_sources
    • First observedrun_corpus_episode_completion_workflow
    • First observedrun_corpus_latest_episode_deterministic_workflow
    • First observedrun_episode_verified_research_report_workflow
    • First observedrun_latest_episode_verified_research_report_workflow
    • First observedrun_research_workflow
    • First observedsearch_mentions
    • First observedsearch_transcripts
    • First observedsemantic_summarize_episode
    • First observedsuggest_historical_verified_report_next_step
    • First observedsummarize_episode_extractive
    • First observedtranscribe_episode
    • First observedvalidate_transcript

TDQS

C2.7/5.0

Scored across 25 tools

Disambiguation2/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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'.

Completeness4/5

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

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    -