Skip to main content
Glama

mcp-agent-transcriber

Video transcription for agents, as a local MCP server. Point an MCP-aware harness at any common tube-platform link (YouTube, Vimeo, Dailymotion, Twitch, TikTok, ...) and get an agent-friendly transcript — either by grabbing the platform's own captions directly (fast, no download, no model) or by downloading the audio at a preferred quality and transcribing it locally with OpenAI Whisper (turbo, CUDA/CPU).

This is the standalone whisper_transcriber (a terminal-menu CLI) rebuilt as an MCP tool for the agent-tools stack, plus the caption-grabbing workflow its history documented for YT downloads. The interactive REPL became MCP tools: probe a URL, download audio, or transcribe — callable by any harness over stdio.

Two paths

Path

How

Cost

Use when

direct

fetch_transcript — YouTube via youtube-transcript-api, other platforms via the yt-dlp caption pass

no model, no download

captions exist and speed matters

whisper

download_audio (yt-dlp) → transcribe_* (local Whisper turbo)

~1.6 GB model, downloads audio

captions missing, or fidelity matters

transcribe_video(url, method="auto") runs the whole route: captions first, Whisper fallback when the platform has none.

Related MCP server: TranscriptMCP

Tool surface

Domain

Tools

Info

supported_platforms, video_info

Transcript (direct)

list_available_transcripts, fetch_transcript

Download

download_audio

Transcribe (Whisper)

transcriber_status, transcribe_file, transcribe_video

Utility

get_current_datetime

All tools return JSON. Unexpected errors are sanitized to the tool name + exception class; the full traceback stays in the server log. Known conditions (private video, disabled captions, unknown platform, sign-in required, network) come back as structured status: failed payloads with a static, path-free reason — exception messages are never forwarded because they can leak local paths.

Requirements

  • Python 3.13+

  • uv

  • ffmpeg on PATH (Whisper and audio postprocessing both need it)

  • NVIDIA GPU + CUDA 12.8 driver for GPU transcription (CPU fallback automatic)

Install

git clone <repo-url> mcp_agent_transcriber
cd mcp_agent_transcriber
uv sync

uv sync installs the CUDA build of PyTorch automatically: pyproject.toml pins torch to PyTorch's official CUDA 12.8 wheel index (pytorch-cu128) via [tool.uv.sources]. To switch CUDA versions, change the index URL.

Usage

Run as an MCP server (stdio — what harnesses expect)

uv run mcp-agent-transcriber

Override paths via environment variables (defaults resolve relative to the project root, never the process CWD):

Var

Default

Purpose

TRANSCRIBER_OUTPUT_DIR

transcript_output

Where transcript .txt/.vtt files go

TRANSCRIBER_DOWNLOADS_DIR

<output>/downloads

Where audio downloads land

TRANSCRIBER_LOGS_DIR

logs

Rotating DEBUG logs (5×5 MB)

TRANSCRIBER_MODEL

turbo

Whisper checkpoint (turbo / large-v3 / medium / ...)

TRANSCRIBER_LANGUAGE

en

Default caption language for direct grabs

To serve over HTTP (streamable-http) instead:

uv run mcp-agent-transcriber serve --http --port 8000

Register in an MCP client

{
  "mcpServers": {
    "mcp-agent-transcriber": {
      "command": "uv",
      "args": ["--project", "C:/path/to/mcp_agent_transcriber", "run", "mcp-agent-transcriber"]
    }
  }
}

CLI commands

Command

Purpose

serve (default)

Run the MCP server. --http --port for streamable-http

doctor

Offline diagnostics: paths, engine state, ffmpeg, yt-dlp

Workflow

1. supported_platforms()      → is the host a known tube platform?
2. video_info(url)            → platform, title, caption tracks, audio formats
3. fetch_transcript(url)      → direct transcript when captions exist
4. download_audio(url, "best")→ audio track for the whisper path
5. transcribe_video(url, method="auto") → one call, captions then Whisper

The Whisper checkpoint is never loaded at server startup — it loads on the first transcribe_* call (~1.6 GB) and stays cached for the process lifetime, so caption-only workflows never touch the model. Transcripts are written as {title-slug}_{lang}_{timestamp}.txt (plus .vtt on request) into TRANSCRIBER_OUTPUT_DIR and returned inline so the model gets the text even without a filesystem view.

Model weights

The turbo checkpoint (large-v3-turbo.pt, ~1.6 GB) resolves through Whisper's standard cache (~/.cache/whisper/ on Windows). It auto-downloads on first use and is then reused. Offline machines can place the .pt file into that cache by hand.

Output quality

Download quality presets map to yt-dlp format selectors:

Preset

Selector

best (default)

bestaudio/best

high

bestaudio[abr>=128]/bestaudio/best

standard

bestaudio[abr<=128]/bestaudio/best

low

worstaudio/worst

download_audio(output_format=...) keeps the platform's container (orig) by default, or re-encodes with ffmpeg to mp3/wav/m4a/opus/flac/aac.

Caption text is cleaned for agent consumption (ported from the original workflow): inline <...> timing tags are stripped, cue timestamps dropped, consecutive duplicate lines collapsed (the rolling word-by-word caption artifact), and whitespace normalized.

Development

uv run ruff check .
uv run pytest -q

Tests cover config path resolution, caption cleaning, platform discovery, yt-dlp metadata/download (mocked), the transcript grabbers (mocked APIs), the pipeline routes, and the full tool surface — no network, no model load.

License

MIT © 2026 Christof Milius — this repository ships only hand-authored source and configuration; nothing else.

  • No redistributed dependencies. torch (BSD-3), openai-whisper (MIT), yt-dlp (Unlicense), youtube-transcript-api (MIT) and friends are declared in pyproject.toml and installed by uv — never vendored into this repo.

  • No model weights. The Whisper checkpoint is not included; it is downloaded at runtime into ~/.cache/whisper on first use and subject to its own license terms. The transcription machinery is MIT regardless.

  • No licensed media. Transcribed caption/audio content is produced at runtime by the tool; no copyrighted media ships in the repository.

Available Tools

9 tools
download_audioA

Download a video's audio track into the downloads dir via yt-dlp.

quality: "best" (default, highest bitrate), "high" (>=128 kbps floor), "standard" (<=128 kbps, smaller), or "low". output_format: "orig" keeps the platform's container; one of mp3/wav/m4a/opus/flac/aac re-encodes with ffmpeg as a postprocess.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
qualityNobest
output_formatNoorig

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/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 discloses the local download destination, reliance on yt-dlp, ffmpeg re-encoding behavior, and the effect of quality/output_format choices. It does not mention overwrite behavior, network requirements, or failure modes, but the core behavior is clear.

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 compact and well-structured: purpose first, then parameter semantics. There is no filler, and every clause adds practical operational detail.

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?

Combined with the output schema, the definition is largely complete for selecting and calling the tool. The remaining gaps are explicit usage routing and side-effect caveats like file overwriting or network dependency, which prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates thoroughly. It explains every quality option with bitrate meaning and every output_format category with container/transcoding behavior. The url parameter is obvious from the first sentence.

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 sentence 'Download a video's audio track into the downloads dir via yt-dlp' names the action, object, destination, and mechanism. It clearly distinguishes this tool from siblings like video_info, fetch_transcript, and transcribe_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 use case is implied: an agent should use this when it needs an audio file extracted from a video. However, it never explicitly states when to prefer this over siblings or mentions exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_transcriptA

Grab an agent-friendly transcript for a video URL without downloading the media. YouTube uses youtube-transcript-api (fast); every other platform falls back to the yt-dlp caption pass. Writes a .txt (plus .vtt on request) into the output dir and returns the cleaned text.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
languageNo
want_vttNo
prefer_autoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/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. It clearly states side effects (writes .txt/.vtt files), return value (cleaned text), and platform-specific implementation (YouTube vs others). It lacks failure-mode details (e.g., missing captions) but covers the core behavioral contract.

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 three sentences with zero filler. It front-loads the primary purpose and constraint, then adds platform behavior and output format. Every sentence provides essential information, making it highly efficient.

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 description covers the main flow (fetch, write, return) and platform differences, but omits critical parameter semantics (language, prefer_auto) and failure scenarios. Given the tool has 4 parameters and no annotations, it falls short of being fully complete, though it does address the most salient aspects.

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 parameter meaning. It indirectly explains 'url' (video URL) and 'want_vtt' ('.vtt on request'), but does not explain 'language' or 'prefer_auto' at all. This is insufficient for a tool with four parameters.

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 clearly states a specific verb ('Grab') and resource ('transcript for a video URL'), and explicitly distinguishes itself from downloading media, which separates it from sibling tools like download_audio. It also notes platform-specific behavior, 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?

The description implies when to use this tool (when you need a transcript without downloading media) but does not explicitly mention alternatives like transcribe_video or list_available_transcripts, nor does it state when not to use it. The platform-specific note is more behavioral than usage guidance, so it's adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_datetimeA

Return the current local and UTC date/time in ISO 8601 format.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 full responsibility for disclosing behavioral traits. It does state the return format and that the tool returns a value, which implies a read-only operation, but it does not explicitly mention absence of side effects, authentication requirements, or reliability characteristics. This is a gap for a tool with zero annotation coverage.

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, front-loaded sentence with no wasted words. It efficiently conveys the operation, scope (local and UTC), and format (ISO 8601) without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter utility with an output schema present, this description is complete. It specifies the output format, and the output schema will handle the exact return structure. Nothing an agent needs to invoke this tool correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline for this dimension is 4. There is no parameter information to add, and the description appropriately avoids inventing semantics for parameters that do not exist.

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 verb ('return'), a clear resource ('current local and UTC date/time'), and an exact output format ('ISO 8601'). It is distinct from all sibling tools, none of which are date/time related, so an agent can easily identify what this tool does.

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 usage: use this when you need the current date/time in ISO 8601. However, it does not explicitly state when to use it, nor are there any alternative datetime tools among the siblings to differentiate from. The context is clear enough but entirely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_available_transcriptsA

List the caption tracks a video URL exposes: language codes plus whether each is a manual or auto-generated track. Uses yt-dlp metadata only — no download.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/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. It explicitly states 'Uses yt-dlp metadata only — no download,' which sets expectations about the tool's behavior and side effects (non-destructive, network-based). This adds useful behavioral context beyond the simple 'list' action, but it does not detail potential errors, rate limits, or authentication needs, which are minor for a read-only metadata operation.

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 two sentences, front-loaded with the core purpose, and includes only essential details. The behavioral note about no download is in the second sentence, which is appropriate as secondary information. There is no filler or repetition; every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter, read-only tool, the description is complete. It states what the tool does (lists caption tracks), what it returns (language codes and track types), and its behavioral boundary (no download). An output schema exists, so the description doesn't need to detail the return structure. The tool is simple enough that an agent won't need more to call it correctly.

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?

The parameter 'url' is a single string with no schema description. The description implies it's a video URL by saying 'a video URL exposes,' but the schema already indicates it's a URL through the property name. The description adds minimal semantic value, barely going beyond the schema. Since schema coverage is 0%, the description could do more, but the single, self-explanatory parameter makes up for it.

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 clearly states the tool's purpose: 'List the caption tracks a video URL exposes' with specific details about what is listed (language codes and track type). It distinguishes itself from siblings like fetch_transcript, which retrieves actual transcript content, and video_info, which provides general metadata. The scope is well-defined and unambiguous.

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 implies usage: use this tool when you need to see available caption tracks without downloading them. It does not explicitly name when not to use it or alternatives, but the context with sibling tools makes it clear that for actual transcript content you'd use fetch_transcript. It lacks explicit exclusion but is clear enough for an agent to infer correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

supported_platformsA

List the common tube platforms (YouTube, Vimeo, Dailymotion, Twitch, TikTok, ...) and whether the installed yt-dlp ships an extractor for each. Use before evaluating an unfamiliar host.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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 burden. It discloses that the tool checks the installed yt-dlp's extractor support, which is a useful behavioral detail. However, it doesn't mention whether the tool performs network calls, caches results, or what the output format looks like. The output schema exists but the description doesn't add much beyond the basic behavior.

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 two sentences with no filler. The purpose is front-loaded, and the usage guidance is appended efficiently. Every word earns its place.

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?

For a zero-parameter informational tool, the description is nearly complete. It states what is listed and when to use it. The only minor gap is not describing the output format, but the output schema exists and the tool is simple enough that this is not a significant omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is trivially complete. The description adds value by explaining what the tool reports (platforms and extractor availability), which is the entire semantic content. Baseline 4 for zero params is appropriate.

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 clearly states the tool lists common tube platforms and whether the installed yt-dlp ships an extractor for each. It names specific platforms and the resource (yt-dlp extractors), making the purpose unambiguous and distinct from 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use before evaluating an unfamiliar host,' providing clear context for when to use this tool. It doesn't explicitly name alternatives or exclusions, but the sibling tools are all different enough that no confusion arises.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_fileA

Transcribe a local video/audio file with Whisper (turbo). The model loads on first use and stays cached. Writes a .txt (plus .vtt on request) into the output dir and returns the transcript.

language: ISO code to force (e.g. "en"); None auto-detects.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
languageNo
want_vttNo
return_segmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses first-use model loading/caching, side effects (writing .txt and optional .vtt), and the returned transcript. This is meaningful behavioral context beyond the schema.

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?

Three short sentences front-load the core behavior, then provide implementation behavior and the one non-obvious parameter. No filler or repetition.

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 description covers the primary use, but with 4 parameters, 0% schema coverage, and no annotations, it leaves want_vtt and return_segments semantically unexplained. The output schema covers return shape, so that part is fine, but the full invocation contract is not complete.

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 explains language (ISO code, None auto-detects) and only obliquely references want_vtt via 'plus .vtt on request', but it never explains return_segments or path semantics. The defaults for want_vtt and return_segments are not surfaced.

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 action ('Transcribe'), a resource ('local video/audio file'), and the model ('Whisper (turbo)'). The word 'local' distinguishes this from the sibling transcribe_video tool, so an agent can tell when this is the right entry point.

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 establishes clear context: this tool is for local files, as opposed to video_info/download_audio or transcribe_video. It does not explicitly name alternatives or state when-not-to-use, but the local-file constraint is enough for basic routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcriber_statusA

Report Whisper runtime readiness: model, device (cuda/cpu), whether the checkpoint is already cached/loaded, and ffmpeg availability. Does NOT load the model.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full behavioral burden. It explicitly states 'Does NOT load the model,' which is a key side-effect disclosure, and frames the operation as reporting rather than mutating. This is solid transparency for a status tool, though it does not discuss every possible runtime interaction such as CUDA initialization.

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 two tight sentences with no filler. It front-loads the main purpose, lists the reported fields compactly, and finishes with the important 'does not load the model' caveat. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status-check tool, this description is complete: it states what is reported, affirms no model loading, and an output schema exists to cover return shape. Nothing an agent needs to safely invoke this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema already documents this completely at 100% coverage. With no parameters, the description cannot add parameter-level meaning, so the baseline of 4 applies.

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 starts with a specific verb and resource: 'Report Whisper runtime readiness.' It then enumerates the exact reported items (model, device, checkpoint cache state, ffmpeg availability), which makes the tool's scope unmistakable and clearly distinct from transcription siblings like transcribe_file and transcribe_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 purpose implies a preflight check before Whisper transcription, especially given transcription siblings exist. However, the description never explicitly states 'use this before transcribing' or names alternatives, so the usage guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_videoA

One-call video → transcript. method: "auto" (default) grabs the platform's captions first and falls back to Whisper only when none exist; "captions" uses captions only; "whisper" downloads the audio (quality: best/high/standard/low) and transcribes locally. keep_audio=true retains the downloaded audio file in the downloads dir; otherwise it is deleted after transcription.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
methodNoauto
qualityNobest
languageNo
want_vttNo
keep_audioNo
prefer_autoNo
return_segmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 of behavioral disclosure. It does disclose the fallback behavior of 'auto', the local transcription behavior of 'whisper', and the audio retention/deletion side effect of keep_audio. Yet it omits other behavioral traits such as prerequisites (network/supported platforms), failure modes, or side effects of parameters like prefer_auto or want_vtt. Adequate but incomplete.

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 compact and well-structured: a one-liner stating the core purpose, followed by method breakdown and the keep_audio side-effect note. Every sentence earns its place; there is no redundant or filler content. The key information is front-loaded.

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?

Given the tool has 8 parameters and an output schema exists, the description need not explain return values. However, it leaves several parameters (language, want_vtt, prefer_auto, return_segments) unexplained, and it does not mention prerequisites like checking supported_platforms. The description is sufficient for basic usage but not fully complete for an agent to call the tool confidently in all scenarios.

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 does explain method, quality, and keep_audio with useful detail. However, it leaves url, language, want_vtt, prefer_auto, and return_segments entirely unexplained. The description adds value for a subset of parameters but fails to cover the majority.

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 opens with a crisp, specific verb-resource statement: 'One-call video → transcript.' It then distinguishes the three transcription modes (auto, captions, whisper), making it clear this tool performs full transcription and is distinct from siblings like video_info, fetch_transcript, or download_audio.

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 offers clear guidance for choosing among the 'method' values (auto vs captions vs whisper) and explains the keep_audio behavior. However, it never references sibling tools or gives explicit when-to-use vs when-not-to-use guidance (e.g., 'use fetch_transcript if you only need existing captions'). The usage advice is implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

video_infoA

Resolve a video URL with one yt-dlp metadata pass: platform, title, duration, uploader, available caption tracks, and the audio formats found. Returns JSON; known failures (unsupported URL, private video, sign-in required, network) come back as a status:failed payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It reveals that this is a single metadata pass, returns JSON, and reports known failures as a status:failed payload. This is strong behavioral context, though it does not mention rate limits, authentication requirements, or the exact output schema.

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?

Two sentences with no wasted words. The core action and metadata fields are front-loaded, and the failure contract follows immediately. Every sentence earns its place.

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?

For a one-parameter metadata tool with an output schema, the description covers the return type, the data fields, and failure modes. It is nearly complete; the only notable gap is explicit guidance on how this tool fits into a workflow with the sibling transcript and audio tools.

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?

The input schema only defines 'url' as a string with 0% coverage, so the description must compensate. It adds that the URL is a video URL and that unsupported URLs produce a known failure. This is minimally adequate for a single self-explanatory parameter, but it does not specify accepted URL formats or platform restrictions.

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 ('Resolve') with a clear resource ('video URL') and enumerates the exact metadata returned: platform, title, duration, uploader, caption tracks, and audio formats. It is functionally distinct from siblings like fetch_transcript and download_audio because it is explicitly a metadata-only pass.

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 clearly implies when to use it: when an agent needs video metadata rather than transcripts or audio. However, it never explicitly names alternatives or states when not to use it, leaving the agent to infer the relationship to list_available_transcripts and download_audio.

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. 9 tool updatesv0.1.0
    • First observeddownload_audio
    • First observedfetch_transcript
    • First observedget_current_datetime
    • First observedlist_available_transcripts
    • First observedsupported_platforms
    • First observedtranscribe_file
    • First observedtranscribe_video
    • First observedtranscriber_status
    • First observedvideo_info

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes: metadata, caption listing, transcript fetching, audio download, Whisper status, and transcription. However, fetch_transcript and transcribe_video (with method 'captions') overlap in functionality, though their descriptions clarify the use cases. The get_current_datetime tool is unrelated but not confusable with others.

Naming Consistency3/5

Naming mixes verb-first patterns (get_current_datetime, list_available_transcripts, fetch_transcript, download_audio, transcribe_file, transcribe_video) with noun-first patterns (video_info, supported_platforms, transcriber_status). Verbs also vary (get, list, fetch, download, transcribe). The inconsistency is noticeable but not chaotic.

Tool Count4/5

Nine tools is reasonable for a transcription server covering platform checks, metadata, caption handling, audio download, and Whisper integration. The inclusion of get_current_datetime feels out of scope but does not significantly bloat the set. The count is well within the typical range for a focused domain.

Completeness4/5

The server covers the full transcription workflow: verifying platform support, retrieving video metadata, listing captions, fetching caption transcripts, downloading audio, checking Whisper readiness, transcribing local files, and doing end-to-end video transcription. Minor gaps include no explicit language selection for transcribe_video and no file management, but these are not critical for core use.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers