Agentic platform over the sportsdata-mcp tool catalogue — a configurable team of LLM agents for sports research, odds intelligence, modelling, fantasy and tracking. Advisory only.
Server exposes 17 tools across racing and sports betting domains. Most tools lack parameter descriptions entirely, only 6 of 17 have any documented parameters. Tool names are reasonably verb-forward (api_*, list_*, call_*) but descriptions are often generic or missing context. Schemas are present but sparse: many parameters lack type info or descriptions. No output schemas documented. Error handling is absent, no recovery guidance or categorization. The meta-tools (list_tools, tools_for_capability, call_tool) are self-referential and add little value to end agents. Overall quality is below median for production MCP servers.
Get the racing board summary with board state and movers
Get detailed information for a specific game from the warehouse
List games from the warehouse within a specified time window
Generate a fair price for an exotic or same-race multi on a race's live win probabilities
Get detailed information for a specific race by race key
Generate a same-game-multi price either from a bookmaker via MCP or from the engine's correlated model
Determine which bookmakers can quote a same-game-multi for a fixture and why not for others
Most tools lack parameter descriptions. Of 17 tools, only 6 document what parameters control. LLMs cannot infer parameter meaning from names alone, 'legs', 'box', 'margin' in api_price are unexplained. This violates pattern:tool-description and forces agents to guess.
No output schemas documented for any tool. Agents cannot plan downstream calls or extract required fields. api_race, api_game, api_sgm return complex nested objects but LLMs have no schema to understand structure.
No error handling or recovery guidance. Tools return HTTP errors with no actionable next steps. Pattern:recovery-guide requires errors to tell LLMs what to do next (e.g., 'Try search_users() with a partial name').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Price the same legs at every bookmaker that will quote them, side by side with each book's own correlation model
Get detailed information for a specific novelty market including per-book prices and hourly best-price series
List novelty and outright markets from the warehouse
Execute a tool from the MCP catalogue with the given arguments, returning data with provenance metadata
Redirect to the latest public GitHub release
Health check endpoint for the racing board API
Health check endpoint for the entitlement service
List all available tools in the MCP catalogue, optionally filtered by capability
Resolve a capability tag to the set of tool names that provide it in the live catalogue
WebSocket endpoint for live racing board updates and on-demand race detail subscriptions
Meta-tools (list_tools, tools_for_capability, call_tool) are self-referential and add friction. Agents must call call_tool to invoke any real tool, adding an extra indirection layer. This violates pattern:tool-chain, tool A's output should feed directly into tool B.
Generic tool names lack specificity. 'api_board', 'api_race', 'api_game' do not convey action (get_, list_, search_). 'api_price' is ambiguous, does it fetch, calculate, or compare prices? Naming should follow verb_noun convention (get_race_details, calculate_exotic_price).