Access Limitless TCG tournament data via MCP
Server has 4 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (good), but descriptions are verbose and contain implementation details rather than LLM-optimized guidance. Schemas are present but lack proper type annotations in the visible code, parameters use union types and nullable fields inconsistently. get_tournaments has a 600+ char description mixing API docs with agent instructions, violating the 10-1024 char guideline. No output schemas documented. Error handling returns raw error strings without recovery guidance. Tool names follow verb_noun pattern (good), but parameter naming is inconsistent (game vs organizerId mixing conventions).
Retrieve detailed information about a specific tournament
Retrieve match pairings for a specific tournament
Retrieve standings for a specific tournament. If anyone asks about specific pokemon usage, you can find that info in the decklists. If anyone asks about "restricted"s, they're referring to any of the following pokemon: - Mewtwo - Lugia - Ho-Oh - Kyogre - Groudon - Rayquaza - Dialga - Dialga (Origin Forme) - Palkia - Palkia (Origin Forme) - Giratina (Altered Forme) - Giratina (Origin Forme) - Reshiram - Zekrom - Kyurem - Kyurem (White Kyurem) - Kyurem (Black Kyurem) - Cosmog - Cosmoem - Solgaleo - Lunala - Necrozma - Necrozma (Dusk Mane) - Necrozma (Dawn Wings) - Zacian - Zamazenta - Eternatus - Calyrex - Calyrex (Ice Rider) - Calyrex (Shadow Rider) - Koraidon - Miraidon - Terapagos Also consider the following: - "CSR", "Caly-Shadow" and all similar variations are common nicknames for Calyrex Shadow Rider - "CIR", "Caly-Ice" and all similar variations are common nicknames for Calyrex Ice Rider When asked about restricted "duo"s, "pair"s, or similar variations, please ensure that you are analyzing each team and understanding exactly which restricted pokemon a player is using, before formulating responses. For example, a person cannot be using two different pairs at the same time in the same tournament like Lunala & Koraidon, and Calyrex Shadow Rider & Koraidon. Try to find restricted pokemon whose names are exact or similar to the user's input, even if the match is not exact. Keep in mind it is guaranteed that not all of these Pokemon names map 1-to-1 with the pokemon names returned by the Limitless API.
Descriptions exceed 1024 chars and mix API documentation with agent instructions. get_tournaments (600+ chars) and get_tournament_standings (1000+ chars) violate pattern:tool-description guideline of 10-1024 chars. These should be split: concise tool purpose + separate agent instructions.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. All 4 tools return JSON.stringify(api_response) with no schema definition.
Error handling returns raw error strings without recovery guidance. Errors like 'Error fetching tournaments: [object Object]' give LLM no actionable next step. Should follow pattern:recovery-guide with specific suggestions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Retrieve a list of tournaments with optional filtering by game, format, organizer, etc. It can accept the following parameters: - game (str, optional): The game to filter by. - format (str, optional): The format to filter by. - organizerId (str, optional): The organizer to filter by. - limit (str | int, optional): Number of tournaments to be returned. - page (str | int, optional): Used for pagination. Default to VGC as the game. Pass PTCG as the game if the user explicitly requests for TCG tournaments. Try to find tournaments whose names are exact or similar to the user's input, even if the match is not exact. If the user requests for a specific tournament, and you can't find it, please attempt to find the tournament on later pages without explicitly being asked by the user. Don't go past tournaments that happened more than a month ago unless explicitly asked by the user. If the user requests for upcoming tournaments, please let them know that you only have access to tournaments that have just completed. Then provide them with results immediately.
Parameter naming inconsistency: 'game' vs 'organizerId' mixes camelCase and lowercase. Should standardize to snake_case (organizer_id) per mxe:response-field-naming baseline. Inconsistent naming forces LLM to reason about field mappings.
get_tournaments description contains hardcoded Pokemon restricted list (35+ lines) that belongs in agent instructions, not tool description. Bloats description and violates separation of concerns.