MCP server for Qullamaggie trading knowledge base. Serves pre-extracted trading wisdom from Kristjan Kullamägi's YouTube video transcripts via MCP protocol.
Five tools with clear, domain-specific names and solid descriptions (avg 180 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are JSON strings without declared field structures. Parameter descriptions lack format constraints (e.g., ticker format, video_id range). Error handling is minimal; tools return generic JSON errors without recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is sound: tools chain logically (search → lookup → load). Naming follows verb_noun pattern well (query_, get_, lookup_, search_, load_). Missing: pagination guidance for search_transcripts (max_results=25 is capped but no cursor/offset), output schema documentation, and actionable error messages.
Get Qullamaggie's criteria for a specific trading setup pattern. Returns the quantitative and qualitative criteria for identifying and trading a specific setup type.
Load the full raw transcript for a specific video. Use this when you need exact quotes, full context, or deep analysis of a specific video. Each transcript is typically 4,000-12,000 words.
Look up all instances where Qullamaggie discussed a specific stock ticker. Returns historical context including what setup he saw, his position (long/short/watching), outcome, and which video the discussion is from.
Search Qullamaggie's trading rules by category and/or keyword. Returns trading rules, principles, and guidelines that Qullamaggie has stated across his streams. Rules with higher frequency counts are ones he repeats often (higher confidence).
Full-text search across all Qullamaggie video transcripts. Use this as a fallback when structured queries (rules, setups, tickers) don't cover what you're looking for. Searches raw transcript text.
Output schemas not formally documented. Tools return JSON strings but field structures, types, and required fields are not declared. LLMs cannot reliably extract nested data or plan downstream calls.
Parameter format constraints missing. 'ticker' lacks format hint (uppercase, 1-5 chars); 'video_id' lacks range (1-420); 'category' enum is documented in description but not as formal enum constraint; 'keyword' has no length limit.
Error handling lacks recovery guidance. Errors return generic JSON with 'error' field but do not suggest next steps (e.g., 'Knowledge base not yet built' does not tell LLM what to do). No error categorization (retryable vs. fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All tools are read-only (safe to retry) but this is not declared, forcing LLMs to infer safety.
Pagination for search_transcripts is capped (max 25) but no cursor, offset, or next_token returned. Large result sets cannot be iterated; LLM cannot fetch page 2.