A FastAPI-based server that provides Pokémon information queries and battle simulation capabilities
Two tools with minimal descriptions and incomplete schemas. query_pokemon and battle both lack parameter type definitions in visible code (only string types inferred from FastAPI Query/param hints, not explicit JSON Schema). Descriptions are present but generic (10-50 chars). No output schemas documented. No error handling guidance. No parameter constraints (enums, ranges). Tool names are acceptable but descriptions fail to explain WHEN to use each tool or what they return. Missing idempotency hints, dependency documentation, and recovery guidance.
Simulate a battle between two Pokémon
Query Pokémon information by name
No explicit JSON Schema definitions visible for tool inputs. FastAPI Query hints exist but are not formal MCP input schemas with type, description, and constraints.
Tool descriptions are too short (10-50 chars) and lack context. 'Query Pokémon information by name' does not explain WHEN to use this vs battle, what fields are returned, or error cases.
No output schema documented. LLMs cannot plan downstream calls or extract fields. PokemonInfo and BattleResult models exist in code but are not exposed in tool definitions.
No error handling guidance. Services return {'error': ...} but tool descriptions do not explain what errors are possible, when to retry, or how to recover.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Parameter 'name' in query_pokemon lacks constraints. No enum, pattern, or length limit. LLM may pass invalid Pokémon names, causing API 404s with no guidance on alternatives.