Single tool server with a clear verb-noun naming pattern ('get_youtube_transcript'). The tool has a documented description and structured input schema with typed parameters. However, there are significant gaps: output schema is not formally documented (returns raw string), no error classification to guide LLM recovery, no pagination support (not relevant here but missing from output structure), and missing parameter format constraints. The tool handles errors gracefully at runtime but does not provide actionable recovery guidance for LLMs. Error messages are informative but lack classification (retryable vs. user-fixable). The server is READ_ONLY and idempotent, which is good for safety, but these properties are not explicitly annotated in the definition.
Fetches the transcript for a given YouTube video URL. Args: video_url: The URL of the YouTube video. Returns: A string containing the full transcript, with each segment on a new line, or an error message if the transcript cannot be fetched.
Output schema not documented. Tool returns a plain string; no structured output definition specifying fields, types, or format.
Error messages lack classification. Errors are human-readable but do not tell the LLM whether to retry, ask the user, or abandon the operation.
Tool annotations missing. The tool is READ_ONLY and idempotent, but these properties are not declared via toolAnnotations (readOnlyHint, idempotentHint). Agents cannot detect safety properties.
Parameter description lacks format constraint. 'video_url' description does not specify accepted formats (full URL, shortened, embed, etc.). LLMs may pass malformed URLs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
No guidance for partial failures or edge cases. If a URL is valid but transcript is unavailable, the error message is returned as the result. LLM cannot distinguish between success and failure in response handling.