An MCP server for YouTube video summarization
Single tool with basic schema coverage but significant description and naming gaps. Tool name is overly long and compound (contains 'and'). Description lacks action clarity and usage guidance. Parameter descriptions are minimal. No output schema documentation. Error handling present but not recovery-guided. Overall structure is present but falls short of production-grade quality.
Get details or explanation about a YouTube video, get captions or subtitles of Youtube video from a URL
Tool name is compound and exceeds best-practice length. 'get-video-info-for-summary-from-url' (39 chars) contains implicit 'and' semantics (get info AND prepare for summary). Name is opaque about actual behavior, does not clearly signal that it extracts captions/subtitles. LLM will struggle to distinguish this from a generic video metadata tool.
Tool description is generic and lacks action clarity. 'Get details or explanation about a YouTube video, get captions or subtitles of Youtube video from a URL' is 145 chars but reads as passive listing. Does not state WHEN to use it (e.g., 'Use when you need to extract video transcripts'), what makes it different from other YouTube tools, or what it returns. No guidance on prerequisites (valid URL required) or side effects.
Parameter 'languageCode' description is minimal ('The language code of the video') and lacks actionable format guidance. Does not specify: expected format (ISO 639-1? BCP 47?), valid range of values, default behavior if omitted, or examples. LLM will guess, likely passing invalid codes like 'English' or 'en-US' without validation constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 29 | - | v1 |
Output schema is not documented anywhere in tool definition, handler, or types. Tool returns TextContent with concatenated title, description, and captions as a single text block. LLM cannot programmatically extract individual fields (title, description, captions separately) for downstream processing. No documentation of failure cases (video not found, no captions available).
No pagination or result limits documented. If a video has thousands of subtitle segments, the concatenated caption string could explode context window size. Tool description does not state maximum caption length, truncation behavior, or whether results are paginated.
Error handling returns generic text messages ('Error getting video info: ...') in TextContent. Does not categorize errors (retryable vs. user-fixable vs. fatal) or guide recovery. If video is private or URL is invalid, the LLM receives no guidance on next steps. Pattern requires actionable error classification and recovery hints.
Parameter 'videoUrl' accepts both URL and ID forms ('URL or ID of the YouTube video') but lacks format specification. Does not document: valid URL formats (youtube.com vs youtu.be?), ID length/pattern, or validation rules. LLM will pass arbitrary strings without confidence it matches expected format.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Tool is read-only but this is not explicitly declared in schema or registration. MCP spec 2026-07-28 supports tool annotations, absence means clients cannot optimize (e.g., caching read-only results, flagging destructive ops).