🎓 Turn Claude into a CBSE board examiner. 80+ AI skills, 15 agents, 200+ notes. Target: 495+/500.
Server has 12 well-named tools with consistent verb_noun patterns (get_, list_, run_, search_). Descriptions are present and contextual (avg ~150 chars), exceeding the 10-char minimum. Input schemas are visible and typed with enums where appropriate (e.g., list_all, search scope parameters). However, output schemas are NOT documented, tool descriptions state what is returned (e.g., 'Returns CBSE.md', 'Returns structured inventory') but lack formal schema definitions. Error handling is minimal; no recovery guidance or actionable error messages visible in code. Parameters lack detailed constraints (e.g., get_chapter_notes accepts 'subject' but fuzzy matching rules are undocumented). No tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY. Composition is sound, tools chain logically (search → get_skill → run_command) and avoid duplication.
Fetches an agent persona definition with its full system prompt and behavior rules. Available agents: tutor (Socratic teaching), examiner (question generation), evaluator (answer marking), math-step-evaluator (partial credit), case-builder (CBQ scenarios), planner (study schedules), weak-spotter (gap analysis).
Returns AGENTS.md — the orchestration brain describing all 7 agent personas (Tutor, Examiner, Evaluator, Planner, etc.) and how they chain together automatically.
Returns CBSE.md — the master map of the entire CBSE preparation ecosystem. Call this first to understand the system structure, available subjects, and how components connect.
Fetches Prasanna's personal chapter notes from his Obsidian vault. If no chapter is specified, returns a list of all available note files for that subject. If a chapter is specified, returns the note content. Subjects: Math (14 notes), English (34), Science (13), SST (22), Tamil (8).
Fetches a CBSE command definition with its parameters, workflow, and chaining rules. Commands are slash-commands the student can invoke: /practice, /explain, /mock-test, /mark-my-answer, /cbq-practice, /warm-up, /map-drill, /exam-hall, etc.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns CBSE.md', 'Returns structured inventory') but lack formal JSON Schema definitions. LLMs cannot plan downstream tool calls or extract fields without knowing response structure.
No tool annotations despite all tools being READ_ONLY. Missing readOnlyHint declarations prevent LLMs from understanding which tools are safe to call speculatively and which require confirmation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Fetches one of Prasanna's master hub files, subject dashboards, or templates. Hubs: "All Formulas", "All Diagrams", "Keywords Bank", "Topper Answer Patterns". Dashboards: "Home", "Mathematics", "Science", "English", "Tamil", "Social Science", "Strategy Hub". Templates: "Chapter Note", "Daily Study Log", "Exam Strategy", "Formula Card", "Mistake Entry".
Returns one or all always-active CBSE rule files. Rules govern answer formatting, teaching style, word budgets, session hooks, and subject detection. If no rule name is specified, returns all rules concatenated.
Fetches a CBSE skill file by subject or skill name. Accepts: subject names ("mathematics", "physics", "history"), strategy skills ("cbq-engine", "mistake-dna", "topper-patterns"), or slash paths ("science/physics", "social-science/economics"). Returns the full SKILL.md content with syllabus, marking scheme, and strategy.
Batch-loads multiple skills in one call. Use when a session needs 2-3 skills together (e.g., tutor needs subject skill + keyword-bank + ncert-mirror). Max 5 skills per call. Returns per-item results — one failed skill does not block others.
Returns a structured inventory of all available components by category. Use to discover what skills, agents, commands, rules, or notes exist before fetching them.
Loads a command template, injects user-supplied parameters, and returns the expanded instruction block ready for execution. Use this to execute commands with specific parameters like subject, chapter, difficulty, and count.
Full-text search across all indexed markdown files in the CBSE ecosystem. Case-insensitive substring match. Use to discover which skill, note, command, or rule contains a specific topic before fetching the full file. Returns top 10 results with excerpts.
Parameter constraints underdocumented. get_chapter_notes accepts 'subject' with fuzzy matching but matching rules are not stated. get_skill accepts slash paths but path format is not formally specified. Enums should replace free-form strings where possible.
Error handling lacks recovery guidance. No visible error messages that tell LLMs what to do next (e.g., 'Skill not found. Try search() to discover available skills'). Errors are likely raw exceptions without actionable context.
Result limits not enforced or documented. search() returns 'top 10 results' but list_all() and get_skills_for_session() lack explicit limits. Large result sets risk context window exhaustion.