Local MCP server for searchable, timestamped YouTube channel captions
Channel Brains has well-structured tool definitions with complete schemas and descriptions for all 6 tools. Naming follows verb_noun convention (create_brain, get_brain_status, search_brain, delete_brain). Descriptions are substantive (100-250 chars typical), explaining WHAT each tool does and WHEN to use it. All parameters have type definitions and descriptions. However, several patterns are underutilized: no tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels; error handling lacks recovery guidance; output schemas are not formally documented in the tool definitions; and parameter constraints (e.g., brain_id format validation) are described but not enforced via JSON Schema patterns. The INSTRUCTIONS field provides excellent agent guidance but is not part of the tool definitions themselves.
Create or resume a channel brain for indexing YouTube channel captions
Delete a completed brain and all its indexed data
Read one or all brain statuses with optional waiting until terminal state
Read stored transcript chunks for a specific video with pagination
List videos indexed for a brain with pagination
Search timestamped caption evidence across one or all brains
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools declare risk levels in metadata but MCP tool definitions lack formal annotations. delete_brain and create_brain should carry destructiveHint/idempotentHint to guide agent retry logic.
Output schemas not formally documented in tool definitions. While code returns typed Pydantic models (BrainStatus, SearchResult, TranscriptResult), the MCP tool registration does not include outputSchema declarations. LLMs cannot plan downstream calls without knowing response structure.
Error handling lacks recovery guidance. Validation errors (e.g., invalid brain_id, out-of-range max_videos) return structured CreateBrainResult with status='error' and message, but other tools do not document error responses or suggest next steps. Pattern: 'Invalid brain_id: must be 12 lowercase hex. Try get_brain_status() to list valid IDs.'
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2025-06-18+ | v2 |
Parameter constraints described in text but not enforced via JSON Schema. brain_id format ('12 lowercase hex'), language tag format, and max_videos range (1-50) are validated in code but not declared as pattern/minimum/maximum in the input schema. LLMs cannot parse text constraints reliably.
delete_brain confirmation pattern incomplete. Tool requires confirm=true parameter but does not document the destructive consequence clearly in the description. Should state: 'Permanently deletes the brain and all indexed captions. This cannot be undone.'