Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
The Transcriptor MCP server provides 8 video-related tools with reasonable naming following verb_noun conventions (get_*, search_*). All tools have descriptions and documented input schemas with type information and enums for constrained fields. However, output schemas are not documented anywhere in the provided code, parameter descriptions lack detail on formats/constraints, and there is no evidence of error handling patterns or recovery guidance. Tool descriptions are adequate but brief (mostly 50-150 chars, at the lower end of the 194-char baseline). The server follows a clear single-responsibility pattern per tool and uses proper HTTP transport. The main gaps are: (1) undocumented output structures that LLMs must infer, (2) missing parameter constraints (e.g., no min/max for 'seconds' in get_video_frame, no format spec for 'lang' codes), and (3) no error handling or recovery documentation visible in tool definitions.
Get available subtitle languages (official and auto-generated) for a video
Fetch video chapters/sections with timestamps
Download raw subtitles without cleaning
Download and parse subtitles (cleaned plain text)
Download and parse full transcript in paginated format with optional search
Capture and download a specific video frame at a given timestamp
Fetch video metadata (title, description, duration, view count, upload date, channel info)
Output schemas not documented. Tool descriptions state what is returned (e.g., 'metadata', 'subtitles', 'transcript') but the actual field names, types, and structure are nowhere defined. LLMs must infer the response shape, leading to hallucinated field accesses and failed chains.
Parameter descriptions lack actionable constraints. E.g., 'lang' is described as 'Language code (e.g., 'en', 'es')' but no format spec (ISO 639-1? 639-3?). 'seconds' in get_video_frame has no min/max. 'quality' has no range (0-100 is in description but not in schema as min/max). This forces LLMs to guess valid inputs.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Search for videos on YouTube and other platforms
No error handling or recovery guidance. Tool definitions do not explain what errors can occur (invalid URL, unsupported platform, language not available, video duration too long) or what the LLM should do next. This violates pattern:recovery-guide.
Parameter naming could be more explicit. E.g., 'lang' instead of 'language_code' or 'lang_code' makes it ambiguous whether it expects 'en' (BCP 47), 'en_US', or 'English'. Suffix parameters with their type: lang_code, subtitle_type, image_format.
Pagination documented but not in schema. get_transcript mentions 'cursor' for pagination but there is no documentation of what the next_cursor field name is in the response or how to use it. Pagination pattern is incomplete.
Tool descriptions are brief and lack context on when to use them vs. alternatives. E.g., get_subtitles vs get_transcript vs get_raw_subtitles are not clearly distinguished. No guidance on which to choose based on use case.