Interactive algorithm coach MCP server with 3000+ LeetCode problems, bilingual descriptions, and local code testing
Algo Coach has well-structured tool schemas with proper enums and type definitions, but suffers from weak descriptions and missing parameter documentation. All 7 tools have input schemas visible in src/index.ts, but most descriptions are under 100 characters and lack context about when/why to use each tool. Parameter descriptions are sparse or absent. The run_user_code tool has a WRITE risk but no confirmation/dry-run pattern. No output schemas documented. Naming is clear and verb-based (pick_, get_, generate_, run_), following conventions well. However, descriptions fail to explain prerequisites, dependencies, or recovery paths, critical for LLM tool selection.
Generate test cases (including edge cases) for a problem
Get real-world engineering application cases for an algorithm
Get the solution code and key points for a problem
Get the theory/fundamentals article for a topic
Get the ordered topic roadmap for learning progression
Pick a random problem by topic and/or difficulty
Run user-submitted Python code against test cases locally
Descriptions are too brief (most under 50 chars) and lack context. 'Pick a random problem by topic and/or difficulty' does not explain when to call this vs get_solution or get_theory, or what the return structure contains.
Parameter descriptions are missing or minimal. 'slug' in get_solution is documented as 'Problem slug, e.g. 0001.两数之和' but lacks format constraints (length, character set, case sensitivity). 'language' enum is clear but no description of what happens if unsupported language is requested.
run_user_code is a WRITE tool (executes arbitrary Python) with no confirmation pattern, dry-run option, or timeout documentation. Description does not warn about security implications or resource limits. Agents could accidentally execute malicious code.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., does pick_problem return problem_id, slug, title, difficulty? Does get_solution return code, explanation, complexity analysis?
get_topic_roadmap accepts no parameters but description is vague ('Get the ordered topic roadmap for learning progression'). Does it return a flat list, a tree, or a dependency graph? What fields does each topic entry contain?