A comprehensive MCP server for Pokemon Go events, raids, research, and eggs using LeekDuck API data
Pokemon Go MCP server provides reasonable tool coverage for a domain-specific API (events, raids, eggs, research, promo codes). Tools are properly named with action verbs (get_, search_), and descriptions are present for all 12 tools. However, there are significant gaps: most parameter descriptions are incomplete or minimal (e.g., event_id in get_event_details has a generic description), output schemas are entirely undocumented, error handling is absent from the visible code, and no error recovery guidance is provided. The server follows basic naming conventions but lacks the rigor required for production-grade agent tools. Average tool description length (~100 chars) falls below the production baseline of 194 chars. No pagination or result limits are documented despite tools that likely return large lists (get_current_events, get_all_shiny_pokemon). Parameter validation constraints (enums, ranges) are missing for most inputs.
Get all currently active promo codes with their rewards and expiration dates. Returns a formatted list of active promo codes that can be redeemed in Pokemon GO, including their rewards, descriptions, and expiration information.
Get all Pokemon currently available as shiny across all sources. Returns a comprehensive list of all shiny-eligible Pokemon from events, raids, research rewards, and egg hatches. Perfect for shiny hunters!
Get information about current or upcoming Community Day events. Returns detailed Community Day information including featured Pokemon, bonuses, exclusive moves, and special research tasks.
Get all active and upcoming Pokemon Go events. Returns a formatted list of all current and upcoming events with their details, including event type, duration, and links for more information.
Get all Pokemon currently available from eggs in Pokemon Go. Returns a comprehensive list of all Pokemon that can hatch from eggs, organized by egg distance with CP ranges, shiny availability, and special features.
No output schemas documented for any tool. LLMs cannot infer what fields to expect or plan downstream calls. This violates pattern:tool and mxe:strip-api-responses principles.
Parameter descriptions are minimal or generic. For example, event_id in get_event_details is described as 'The ID of the event to get details for' with no format, range, or example. Parameter descriptions should be 50+ characters with format guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Get Pokemon available from eggs of a specific distance. Args: distance: Egg distance to filter by. Accepts various formats: - With units: "2km", "5km", "7km", "10km", "12km" - With space: "2 km", "5 km", "7 km", "10 km", "12 km" - Just numbers: "2", "5", "7", "10", "12" Returns Pokemon that can hatch from eggs of the specified distance.
Get detailed information about a specific Pokemon Go event. Args: event_id: The ID of the event to get details for Returns detailed information including spawns, bonuses, and special research if available.
Get Pokemon spawns from active events. Args: event_type: Optional filter by event type (e.g., 'community-day', 'spotlight') Returns information about Pokemon that are currently spawning more frequently due to events.
Get Pokemon from eggs that are region-locked. Returns regional Pokemon that can only be obtained from eggs in specific regions, useful for planning trades or travel.
Get all Pokemon from eggs that can be encountered as shiny. Returns Pokemon that can hatch from eggs in their shiny form, organized by egg distance for efficient shiny hunting planning.
Search for a specific Pokemon in current egg pools. Args: pokemon_name: Name of the Pokemon to search for Returns information about the Pokemon if it's available from eggs.
Search for a Pokemon across all data sources (events, raids, research, eggs). Args: pokemon_name: Name of the Pokemon to search for Returns: Comprehensive information about where and how the Pokemon can be obtained.
No error handling or recovery guidance visible in the codebase. The partial get_all_shiny_pokemon implementation shows a try/except that logs exceptions but does not return actionable error messages to the LLM. Pattern:recovery-guide requires errors to tell agents what to do next.
No pagination, result limits, or cursors documented. Tools like get_current_events, get_all_shiny_pokemon, and get_egg_hatches are likely to return large lists but lack limit/page parameters or pagination guidance. Pattern:paginated-result requires pagination for list operations.
Input validation and enum constraints missing. get_egg_hatches_by_distance accepts distance as a free-form string with a multi-line example description instead of proper enum values. Pattern:constrained-input requires enums for known valid sets.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. While all tools are read-only (correct domain), the absence of tool annotations means LLMs cannot automatically detect this, they must infer intent from names and descriptions. Current spec (2026-07-28) makes tool annotations available.
Tool descriptions are below production baseline (194 chars). Most descriptions are 60 - 100 chars, which is too terse. For example, get_regional_egg_pokemon is 119 chars and lacks detail on what 'region-locked' means or how to use the results.