AI model evaluation as an MCP server. Multi-judge panels, structured scoring, pluggable domains.
Three tools with complete schemas and reasonable descriptions, but significant gaps in parameter documentation and error handling guidance. tournament.evaluate and tournament.quick_test have good input schemas with type constraints (minItems, maxItems, minimum, maximum), but descriptions lack actionable context about when to use each tool vs. the other, prerequisites, or what happens on failure. tournament.leaderboard description is minimal (18 chars). No tool descriptions explain state mutations, recovery paths, or dependencies. Parameter descriptions are present but generic, e.g., 'Plugin name for scenario domain' doesn't explain what plugins are available or how to discover them. No output schemas documented. Error handling is absent from all tool descriptions.
Evaluate one to four candidate models with a judge panel.
Read the best cached score per model from result files.
Run one scenario with one judge and no synthesis model call.
Output schemas not documented. LLMs cannot plan downstream calls or extract results without knowing what fields are returned.
tournament.leaderboard description is 18 characters ('Read the best cached score per model from result files.'), below 20-char minimum. Lacks context on when to call it, what 'cached' means, or result structure.
No error handling guidance in any tool description. LLMs cannot recover from failures (e.g., invalid plugin, model not found, evaluation timeout). Descriptions should state: 'If plugin not found, call list_plugins() first' or similar.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Parameter descriptions are generic and lack constraints. 'Plugin name for scenario domain' doesn't explain valid plugin values, how to discover them, or consequences of invalid input. 'Candidate model IDs' doesn't explain format or how to find valid IDs.
No distinction between tournament.evaluate and tournament.quick_test in descriptions. LLMs cannot determine which to call: evaluate says 'one to four models with judge panel', quick_test says 'one scenario with one judge'. Descriptions should explain: when to use quick_test (fast validation) vs. evaluate (full benchmark).