Speedrun.com MCP — wraps the Speedrun.com API v1 (speedrun.com/api/v1). Speedrun.com is the central database of video-game speedrunning records.
Four well-named tools with clear, actionable descriptions (avg 180 chars). All tools have complete input schemas with typed parameters and descriptions. Tool names follow verb_noun pattern (search_, get_, find_). Descriptions include examples and explain prerequisites (e.g., 'Use the game ID from search_games'). However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling returns generic messages without recovery guidance. No parameter constraints (enums, ranges) despite opportunities (e.g., 'max' and 'top' lack bounds). Missing idempotency hints and destructive operation markers.
Look up a speedrunner by username. Returns matching users with their ID, display name, and profile weblink. Example: find_user({ name: "cheese05" })
List the run categories for a game (e.g. "Any%", "100%", "Glitchless"). Use the game ID from search_games. Each category has an ID needed to fetch a leaderboard via get_leaderboard. Example: get_categories({ game_id: "o1y9wo6q" })
Fetch the world-record / top-N leaderboard for a specific game category. Returns ranked runs with finish times (ISO-8601 duration plus seconds), run date, players, and weblink. Get game_id from search_games and category_id from get_categories. Example: get_leaderboard({ game_id: "o1y9wo6q", category_id: "7kjpp4k3", top: 10 })
Search the Speedrun.com database for games by name. Returns matching games with their ID (needed for get_categories and get_leaderboard), abbreviation, release year, and weblink. Example: search_games({ query: "super mario 64", max: 5 })
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for downstream tool chaining or data extraction.
Numeric parameters 'max' and 'top' lack bounds. No minimum/maximum constraints documented. LLMs may pass absurd values (e.g., max=999999) that break API or cause timeouts.
Error responses are generic ('Speedrun.com search_games error: 404'). No recovery guidance or actionable next steps for LLM. Does not categorize errors as retryable vs fatal.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and idempotent, but this is not declared in schema. Clients cannot optimize caching or retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
API key exposed as tool parameter '_apiKey'. Should use server-side secret injection via environment variables. Agent traces log all parameters, secrets leak into logs.