YouTube MCP server with OAuth authentication for extracting video transcripts and fetching prompt instructions
Two simple tools with reasonable naming and moderate descriptions, but significant gaps in parameter documentation, schema completeness, and error handling guidance. Tool descriptions are adequate (129 and 156 chars respectively, within the 10-1024 baseline range), but parameter descriptions are missing entirely in both tools. Input schemas are present but minimal, no type constraints, enums, ranges, or format specifications. No output schema documentation. Error handling does not guide the LLM on recovery (e.g., fetch_video_transcript raises generic Exception with no actionable recovery steps). The fetch_instructions tool hardcodes available prompts in the description, which is fragile to schema drift.
Fetch instructions for a given prompt name from the prompts/ directory
Extract transcript with timestamps from a YouTube video URL and format it for LLM consumption
Missing parameter descriptions. Both tools accept input parameters with no descriptions explaining what they do or what format/constraints apply. 'url' and 'prompt_name' are bare parameter names without LLM-readable guidance.
No input schema type constraints. Parameters are typed as 'string' but lack enums, regex patterns, ranges, or format specifications. fetch_instructions hardcodes available prompts in the description ('write_blog_post, write_social_post, write_video_chapters') instead of declaring them as an enum constraint in the schema.
No output schema documentation. Tools return strings (formatted transcript, instructions file content) but do not document what the LLM should expect, making it impossible for the LLM to plan downstream composition or validate responses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Error handling lacks recovery guidance. fetch_video_transcript raises generic exceptions ('Error fetching transcript with proxy: {str(e)}') without telling the LLM whether to retry, contact support, or try an alternative approach. No error classification (retryable vs fatal) is present.
fetch_instructions tool accepts prompt_name without validation or recovery alternatives. If the file does not exist, it raises a bare FileNotFoundError. Should return 'prompt not found' with available options, or accept alternative input methods.
Ambiguous parameter naming in fetch_instructions. The parameter is called 'prompt_name', but the tool description refers to 'prompt name' in natural language. The schema should clarify the exact enum values (not just mention them in prose).