Single tool with minimal documentation and no input parameter descriptions. Tool is named correctly (verb_noun pattern with 'get_'), but the input schema lacks crucial parameter-level documentation. The AnyUrl type provides type safety, but the parameter 'url' has no description explaining what format is expected, error cases, or examples. Output is returned as unstructured plain text (str) with no schema documentation. No error handling guidance, the code raises ValueError for invalid URLs but provides no recovery instructions for the LLM. The tool does exactly one thing (good composability), but lacks the completeness expected of production-grade tools.
Get transcript for a YouTube video URL in full text format.
Parameter 'url' has no description. The AnyUrl type provides type safety but the parameter description field is empty. LLMs cannot determine what format is expected (full URL, video ID, playlist URL?) or what happens if the URL is invalid.
No output schema documented. The tool returns a string (full transcript text) but there is no formal schema, example, or documentation of the return structure. An LLM cannot predict output format or plan downstream usage.
No error handling guidance. The code raises ValueError('Invalid YouTube URL - missing video ID') and may raise api errors from YouTubeTranscriptApi, but the tool description provides no recovery hints. An LLM will not know to try alternative video IDs, check availability, or use fallback sources.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 31 | - | v1 |
Tool description is generic and lacks WHEN/WHY context. The description 'Get transcript for a YouTube video URL in full text format.' is only 65 chars. It does not explain when to use this vs other transcription tools, prerequisites (video must have captions), or whether the result is formatted or raw text.
No guidance on URL format or video ID extraction. The implementation extracts 'v' from query params, but users may pass URLs in different formats (youtu.be/ID, full YouTube URLs, video IDs directly). The parameter description should clarify accepted formats.
No mention of prerequisites (video must have transcripts available, captions must be enabled). The tool will fail silently or with a cryptic error if transcripts are unavailable. The description should warn about this requirement.
Unstructured text output is inefficient. Returning transcript as a single space-joined string discards timing metadata and speaker information that could be useful to LLMs. Consider returning structured output: {text: string, timestamps: Array<{start: number, end: number, text: string}>, availability: boolean}.