MCP server for retrieving Pokemon data and managing tournament squads via the PokéAPI
This server has critical gaps in schema documentation and parameter descriptions. All three tools have appropriate action verbs in their names (get_, create_, list_) and descriptions are present but minimal. However, tools 2 and 3 have ZERO input parameters documented in schemas, they accept no parameters yet this is not explicitly declared. Tool 1 has a basic schema with a single string parameter 'name' and minimal description. None of the tools document output schemas. Error handling is absent, no guidance on retryability, user-facing errors, or recovery paths. The server does not implement any modern MCP patterns like tool annotations, structured output guidance, or multi-round-trip requests. Descriptions average ~60 characters, which meets minimum bar but lacks the 50-200 character LLM-optimized range from baselines.
Create a powerful squad of Pokémon for a tournament.
Get detailed info about a Pokemon by name.
List popular tournament-ready Pokémon.
Tools 2 and 3 have NO input schema defined. create_tournament_squad() and list_popular_pokemon() accept zero parameters but this is not explicitly declared in the schema. Per hard scoring rules, this is a schema score of 0 for both tools.
No output schemas documented for any tool. LLMs cannot plan downstream tool chains without knowing what fields to expect. get_pokemon_info returns a plain string; create_tournament_squad and list_popular_pokemon return unstructured text.
No error handling or recovery guidance. Tool implementations catch httpx.HTTPError silently and return a generic 'No data found' string. No guidance on retryability, user-fixable errors, or next steps for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Tool descriptions are too brief (40-50 chars). LLM-optimized descriptions should be 50-200 chars and answer: What does it do? When to use it? What does it return? Current descriptions lack context.
No input validation or constraints on 'name' parameter for get_pokemon_info. Parameter description is minimal ('The name of the Pokemon to get information about'). Should specify format, case-sensitivity, and behavior for invalid names.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being READ_ONLY. This metadata helps LLMs understand safety profiles and plan safely.
create_tournament_squad hardcodes a static list of 6 Pokémon. No parameters for team size, filtering by type/ability, or strategy. This removes agent flexibility and violates the single-responsibility principle, tool should either accept parameters or be renamed 'get_recommended_tournament_squad'.