MCP server that extracts YouTube transcripts as plain text for LLMs
Single tool with clear naming (get_transcript) and reasonable description (194 chars, within baseline 34-392 range). Input schema present with type and description. However, output schema is undocumented, LLMs cannot predict return structure. Error handling returns plain strings rather than structured objects with recovery guidance. No parameter validation constraints (e.g., URL format, length limits). Tool description lacks WHEN to use it and prerequisites. Missing idempotency declaration despite being READ_ONLY.
Get the full transcript of a YouTube video as plain text. Args: url: Any YouTube URL (watch, youtu.be, shorts, embed, live) or a bare 11-character video id. Returns: The transcript as one continuous block of text, ready to be read.
Output schema undocumented. Tool returns a string, but LLMs cannot predict structure (transcript text + metadata vs. error message). Breaks downstream tool chaining and forces LLMs to parse unstructured text.
Error handling returns plain strings ('Error: ...') instead of structured error objects with recovery guidance. LLMs cannot distinguish retryable failures from user-fixable ones.
Input parameter 'url' lacks format constraints. Description says 'Any YouTube URL' but does not specify accepted formats, length limits, or regex pattern. LLMs may pass invalid URLs without validation.
Tool description does not declare READ_ONLY idempotency hint. Agents cannot determine if repeated calls are safe or if they have side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No pagination or result-limiting guidance. If a transcript is extremely long, the response could exhaust context window. No mention of max length or truncation behavior.