Free YouTube utilities - get transcripts, channel videos, and more without API key
YouTube Tools MCP has clear, action-verb naming (get_*, list_, search_) and reasonable descriptions (avg ~80 chars). All 7 tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented in the visible code, parameter descriptions lack detail on constraints/formats, and error handling guidance is minimal. No tool annotations (readOnlyHint, etc.) despite all being read-only. Schemas are present but sparse, most parameters lack min/max bounds, enums, or format specifications. This is a solid C+ server: functional definitions, but missing production-grade polish.
Get information about a YouTube channel.
Get a list of videos from a YouTube channel.
Get the transcript/subtitles of a YouTube video. Returns timestamped segments.
Get the transcript of a YouTube video as plain text (no timestamps).
Get detailed information about a YouTube video (title, views, duration, etc).
List available transcript languages for a YouTube video.
Search for YouTube videos.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. All 7 tools lack return type documentation.
Parameter descriptions lack constraint details. 'language' accepts 'en, vi' but no enum; 'limit' has no min/max bounds; 'channel' accepts 'ID, URL, or @handle' but format not specified. LLMs cannot validate inputs without explicit constraints.
No tool annotations despite all tools being read-only. readOnlyHint should be set on all 7 tools to signal to agents that these are safe, non-destructive operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. Code throws YouTubeToolsError with error codes (CHANNEL_NOT_FOUND, PARSING_ERROR) but tool descriptions do not explain what to do on failure or which errors are retryable.
Pagination not documented. get_youtube_channel_videos accepts 'limit' but no offset/cursor parameter visible. Large result sets risk context window exhaustion without pagination guidance.