Model Context Protocol server exposing the World Cup 2026 Predictor engine to Claude. Wraps a browser prediction engine and exposes tournament simulation, match prediction, and live score integration as callable tools over stdio.
Server exposes 7 tools with basic descriptions and input schemas. However, critical gaps undermine quality: (1) Most descriptions lack actionable context for LLM selection, they state WHAT but not WHEN or WHY to call each tool. (2) Parameter descriptions are minimal (e.g., 'Name of the home team' for predict_match.home). (3) Output schemas are completely undocumented, LLMs cannot infer what fields to expect from responses. (4) No error handling guidance; tools will fail silently or return raw errors. (5) Tool names are reasonable (verb_noun pattern) but lack specificity, 'predict_match' vs 'predict_match_outcome' is ambiguous. (6) No pagination, limits, or result-shaping for tools returning lists (live_scores, tournament_odds). Baseline: production tools average 194 chars in descriptions; these average ~120 chars and lack depth.
Show the current standings for a group, including points, goals for, goals against, goal difference, and games played.
Fetch and display live match scores and status updates from the live score feed.
Predict the outcome of a match between two teams, including win/draw/loss probabilities, expected goals (xG), and most likely scoreline.
Show the predicted tournament bracket based on current Monte-Carlo simulations, including predicted winners for each knockout stage.
Get detailed information about a team including current Elo rating, form rating, group assignment, and recent match results.
Show tournament outlook for a specific team or all teams ranked by championship probability. Includes probabilities for winning the World Cup, reaching finals, semis, quarterfinals, round of 16, and group stage finish positions.
Output schemas completely undocumented. LLMs cannot infer what fields predict_match, tournament_odds, team_info, group_standings, live_scores, or predicted_bracket return. This forces agents to guess at response structure and risks failed downstream tool calls.
Parameter descriptions are minimal and lack actionable context. E.g., tournament_odds.team says 'Optional team name; if omitted, shows all teams ranked by championship probability' but does not explain format, aliases, or error recovery if team name is invalid. Baseline: production params average 72 chars with clear constraints.
Tool descriptions lack WHEN/WHY context. 'Predict the outcome of a match...' states WHAT but not when to call predict_match vs predicted_bracket, or how results differ. LLMs cannot disambiguate similar tools without explicit guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Update a match result with home and away goals. Used to record finished matches and trigger re-computation of ratings and tournament odds.
No error handling guidance. If resolveTeam() throws 'No team matching "X"', the tool returns raw error text. LLMs receive no recovery path (e.g., 'Try search_teams() or list available teams'). Baseline: A+ tools include actionable error messages with next steps.
live_scores and tournament_odds return unbounded lists with no pagination, limit, or result-shaping. If 64 matches are live or 32 teams are ranked, the full list enters the LLM context, wasting tokens and degrading reasoning. Baseline: production tools cap results at 20 - 50 and offer pagination.