MCP server for extracting YouTube video transcripts and fetching prompt instructions with Auth0 OAuth authentication
Two tools with visible definitions in main.py. Both tools have descriptions and parameters, but critical gaps exist: (1) fetch_video_transcript accepts only 'url' param with basic string description lacking validation guidance (format, example constraints); (2) fetch_instructions accepts 'prompt_name' with enum-like values hardcoded in description text rather than as proper JSON Schema enum constraint, this violates the constrained-input pattern and forces LLMs to parse and hallucinate values. Neither tool documents output schema structure. Error handling is minimal (generic ValueError/Exception raises). No parameter validation rules, format constraints, or recovery guidance. Tool naming is verb-clear (fetch_*) but descriptions are functional but not LLM-optimized, they lack 'when to use' context and dependency hints. Average param annotation ~40 chars (below 72-char baseline). No output schema documented.
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
No JSON Schema enum constraints for constrained inputs, fetch_instructions accepts 'prompt_name' with valid values hardcoded in description text only. LLMs must parse description to infer valid options and will hallucinate invalid values.
Output schemas completely undocumented. Both tools return unstructured strings (free-text markdown/transcript). No schema declaration of return type, fields, or structure. LLMs cannot plan downstream usage or extract typed data.
Parameter descriptions lack validation guidance. 'url' parameter for fetch_video_transcript does not specify accepted formats (youtube.com/watch?v=, youtu.be/, youtube-nocookie.com, etc.), does not explain what constitutes a valid YouTube URL, no format constraint or regex pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Error handling does not guide recovery. fetch_video_transcript raises generic ValueError('Invalid YouTube URL') and Exception('Error fetching transcript with proxy'). No guidance on what the LLM should do next (retry, ask user for different URL, check proxy config). Violates recovery-guide pattern.
Descriptions under 100 chars lack LLM-optimized context. fetch_instructions description (70 chars) does not answer 'when should the LLM call this?' or 'what is the use case?' Does not explain the relationship between prompt templates and video processing workflow.
No parameter type annotations in JSON Schema for fetch_instructions 'prompt_name', the schema shows type 'string' but lacks minLength, maxLength, pattern, or enum. Schema is minimally structured.