MCP server that retrieves the latest videos from YouTube channels you're subscribed to
The server has three READ_ONLY tools with visible input schemas and functional descriptions, but significant quality gaps limit its production readiness. Tool names are action-verb based (get_*, which is good), but descriptions are thin and lack actionable context. Parameter descriptions are minimal, naming conventions are inconsistent ('hours_ago' vs 'limit' inconsistency with no explicit bounds), and output schemas are NOT documented. Error handling is present in the code but not exposed in tool definitions. The server lacks parameter constraints (no min/max for hours_ago, no enum for limit), and descriptions do not indicate when to call which tool or what the agent should expect downstream. For a YouTube-specific utility, the tools are narrowly scoped (appropriate), but schema quality and description depth fall short of production baselines.
Get latest videos from a specific YouTube channel. Args: channel_id: The YouTube channel ID hours_ago: Number of hours to look back for new videos (default: 24)
Get the latest videos from all YouTube channels you're subscribed to. Args: hours_ago: Number of hours to look back for new videos (default: 24) limit: Maximum number of videos to return (default: 50)
Get a list of all YouTube channels you're subscribed to.
Parameter bounds missing. 'hours_ago' has no minimum/maximum constraint, and 'limit' defaults to 50 with no documented cap. LLMs may pass unbounded values (e.g. hours_ago=999999, limit=10000) causing performance degradation or quota exhaustion.
Output schemas NOT documented. Tools return structured JSON (video objects with title, url, published_at, etc.) but no schema is visible in the tool definition. LLMs cannot infer output structure and cannot plan downstream chaining. Agents must inspect responses at runtime to discover fields.
'get_subscribed_channels' has minimal description (13 words). Does not explain when to call it before other tools, what structure it returns, or whether it requires authentication setup. LLMs cannot determine if this is a prerequisite discovery step or a standalone tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Parameter descriptions lack actionable constraints. 'hours_ago: Number of hours to look back' does not state valid range, default behavior if omitted, or what happens if a very large value is passed. Similar issues with 'limit' parameter across tools.
Error handling not exposed in tool definitions. Code contains try/except blocks (e.g. 'Error getting videos for channel {channel_id}') but tool descriptions do not document failure modes, retry guidance, or what the agent should do if authentication fails or a channel is not found.
No tool interdependency documentation. If get_latest_youtube_videos calls get_subscribed_channels internally, this is not documented. If an agent must call get_subscribed_channels first to discover channel_ids for get_channel_videos, no description hints at this.