YouTube Transcript & Search MCP Server: 14 tools over stdio, backed by the TranscriptOut REST API.
14 tools with consistent naming (verb_noun pattern: get_, search_, list_, submit_, cancel_). All tools have descriptions (10-60 chars, below ideal 50-200 baseline). Input schemas present for all tools with parameter types and descriptions. However, descriptions are terse and lack context on WHEN to use each tool, dependencies, or error recovery guidance. Output schemas not documented. No tool annotations (readOnlyHint/destructiveHint). Error handling returns structured JSON but lacks actionable recovery guidance for LLMs.
Cancel a transcripts batch job
Get the current account credits and usage information
Get transcript for a YouTube video
Get the status of a transcripts batch job
Get the transcript result for a specific video from a batch job
Get all results from a completed transcripts batch job
Get metadata and information about a YouTube video
Descriptions are terse (10-60 chars, below 50-200 baseline). LLMs cannot determine WHEN to use each tool or how it differs from similar ones. E.g., 'Get transcript for a YouTube video' lacks context on transcript availability, language support, or when to use vs. get_video_info.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields. E.g., get_transcript returns transcript + metadata, but the response structure is not declared in the tool definition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
Get the latest videos from a YouTube channel
List videos from a YouTube channel
List videos from a YouTube playlist
Search for videos within a specific YouTube channel
Search for videos within a specific YouTube playlist
Search YouTube for videos
Submit a batch job to transcribe multiple YouTube videos
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. cancel_transcripts_job and submit_transcripts_job should be marked destructive/reversible; all others should be marked readOnly.
Error responses lack actionable recovery guidance. callTool() returns structured errors (code, detail, request_id) but does not guide LLMs on next steps. E.g., 401 'TRANSCRIPTOUT_API_KEY is not set' is good, but 503 'Could not reach API' should suggest retry or fallback.
Pagination not documented. list_channel_videos, list_playlist_videos, search_youtube likely return large result sets, but no limit/offset/page parameters are visible in the input schemas provided. Without pagination, results can blow context windows.