Let your AI to view Youtube video, get info, subtitle and more. Even downloading.
Server provides 3 tools with complete JSON schemas and reasonable descriptions. All tools follow verb_noun naming convention (get-video-info, get-video-subtitles, get-top-comments). Descriptions are present but generic, they state WHAT but lack WHEN to use, any prerequisites, or return value details. Parameter descriptions are present but minimal. No output schema documentation visible. No error handling guidance in tool definitions. Tools are read-only with appropriate risk classification. No tool annotations (readOnlyHint, etc.) despite being read-only. Composition is sound, each tool does one thing. Overall: solid baseline with gaps in description depth and missing error recovery guidance.
Extract top comments from a YouTube video (sorted by likes)
Extract detailed information from a YouTube video URL without downloading
Extract subtitles and captions from a YouTube video
Tool descriptions lack context: no mention of WHEN to use each tool, prerequisites, or what happens to the returned data. Descriptions state WHAT but not WHY or HOW. E.g., 'Extract detailed information...' does not explain whether this is a discovery step before downloading, or a final lookup.
No output schema documentation visible in tool definitions. Tools return TextContent with formatted markdown, but the schema and fields (title, uploader, duration, view_count, etc.) are not formally declared. LLMs cannot infer what fields to expect or how to chain outputs to other tools.
No tool annotations despite being read-only. tools should declare readOnlyHint=true in the Tool definition so clients can optimize caching and avoid logging side effects. Per current spec (2026-07-28), read-only tools should be explicitly marked.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 60 | - | v1 |
Error handling in tool responses is generic. Handler returns plain text error messages like '❌ Error extracting video info: {str(e)}' without recovery guidance. Per pattern:recovery-guide, errors should tell the LLM what to do next: was it a network timeout (retry)? Invalid URL (ask user)? Rate limit (wait and retry)? Currently undifferentiated.
Parameter descriptions are present but minimal and generic. E.g., 'YouTube video URL to extract information from' is too brief, does not specify format (full URL vs video ID?), whether private videos are supported, or any restrictions.
No pagination or result limiting guidance for get-top-comments. Schema accepts count 1 - 20, but no pagination for videos with >20 comments. No documentation of how to fetch subsequent batches or whether the tool supports cursor-based pagination.
get-video-subtitles 'languages' parameter has no enum or example list. Description says 'e.g., [en, es]', an inline example that LLMs may reuse literally. Should use format 'ISO 639-1 language codes (e.g., en, es, fr)' or provide an enum or a discover_languages tool.