All servers · Maps, location & weather · Email & messaging · Health & fitness
io.github.Ninjabeam20/sportiq-mcp
io.github.Ninjabeam20/sportiq-mcp · v0.4.0
New (7 days)Tools changed (7 days)
Measured by MCP Station
| Last check | Reachable |
|---|---|
| Checked at | — |
| Check success 7 / 30 days | — |
| First-try success 30 days | — |
| Median response | — |
| Lookups 30 days | — |
| Authentication | No auth |
| MCP version | 2025-06-18 |
| Rank score | — |
| Declared risk | Read-only (all tools declare readOnlyHint) |
| Capabilities declared | experimental, prompts, resources, tools |
| Tool definitions | 46 tools · with description 100% · input schema is an object 100% · read/destructive hints 100% |
Description written by the publisher, not verified
MCP tools for FIFA World Cup 2026 football, Formula 1, and IPL cricket — sims, strategy, fantasy.
Connect
streamable-http · https://sportiq.utkarshgupta.org/mcp
claude mcp add --transport http sportiq-mcp https://sportiq.utkarshgupta.org/mcp{
"mcpServers": {
"sportiq-mcp": {
"url": "https://sportiq.utkarshgupta.org/mcp"
}
}
}Tools as reported by the server
sportiq_healthReport cache backend, per-adapter healthcheck, and quota status. Returns: HealthReport-shaped dict with `cache_backend`, `cache_ok`, `adapters` (per-source ok/detail), and `quotas`.football_get_groupsReturn the FIFA World Cup 2026 group draw and advancement format. Returns: data.groups: {group_letter: [4 team codes]} for all 12 groups. data.format: 48-team / 12-group / top-2 + 8-best-thirds rule. data.teams: team-code -> {name, fifa_code} metadata. meta.source: adapter that served the data.football_get_fixturesReturn World Cup 2026 fixtures (live providers, else the group schedule). Args: limit: Max fixtures to return, 1..200 (default 50). offset: Number of fixtures to skip for paging (default 0). Returns: data.fixtures: page of {home, away, date/group, status, home_goals, away_goals}. data.pagination: {tfootball_get_standingsReturn current World Cup 2026 group standings. Args: limit: Max standing rows to return, 1..200 (default 50). offset: Number of rows to skip for paging (default 0). Returns: data.standings: page of {rank, team, group, points, played, goals_diff}. data.pagination: {total, count, offset, limit, has_mofootball_get_squadReturn a national team's World Cup squad. Args: team: Team code or name (e.g. "ARG"). Live rosters need an API-Football key; without one the static seed serves an empty-but-valid squad (no rosters are bundled). Returns: data.squad: list of {name, number, position, age} (empty from the seed). meta.sofootball_get_match_statsReturn a team's aggregate World Cup tournament statistics. Network-only enrichment: requires a configured API-Football (or football-data.org) key. There is no offline static fallback, so without a key the call returns a clean ALL_SOURCES_FAILED envelope. Args: team: API-Football numeric team id (notfootball_get_top_scorersReturn the World Cup 2026 top scorers. Returns: data.scorers: list of {name, team, goals, assists}. meta.source: adapter that served the data.football_get_oddsReturn market head-to-head odds for any World Cup 2026 events the odds feed still lists. Sourced from The Odds API (requires THEODDS_KEY). Without a key the call returns a clean ALL_SOURCES_FAILED envelope rather than crashing. The tournament ended with the 2026-07-19 final, so the feed is normallyfootball_xg_modelEstimate a match's expected goals and win/draw/loss probabilities. Args: home_team: First team, FIFA code or name (e.g. "ARG" or "Argentina"). away_team: Second team, FIFA code or name (e.g. "BRA" or "Brazil"). neutral: True for a neutral venue (no home advantage). World Cup default. Returns: data:football_match_predictorPredict a single match: most likely scoreline + outcome probabilities. Args: home_team: First team, FIFA code or name (e.g. "ESP" or "Spain"). away_team: Second team, FIFA code or name. neutral: True for a neutral venue (World Cup default). Returns: data: {most_likely_score, home_win, draw, away_winfootball_simulate_groupMonte Carlo one group within the full 12-group qualification context. Args: group: Group letter A-L (also accepts "Group A"). iterations: Number of simulations (clamped to 100..20000). Returns: data.teams: Per-team position probabilities, p_auto_advance, p_best_third_advance, truthful combined p_advfootball_simulate_bracketMonte Carlo the full World Cup 2026 — per-team round + title probabilities. Simulates all 12 groups, advances the top 2 + 8 best third-placed teams to a 32-team knockout, and plays it to a champion, ``iterations`` times. Args: iterations: Number of tournament simulations (clamped to 100..20000; ~100football_knockout_pathRound-by-round survival probabilities for one team in the full sim. Args: team: FIFA code or name (e.g. "FRA" or "France"). iterations: Number of tournament simulations (clamped to 100..20000). seed: Optional RNG seed. Returns: data: {team, reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}football_what_ifReplay World Cup 2026 from a chosen stage, optionally flipping one real knockout result. Keeps every real result played before ``replay_from`` and Monte-Carlos the rest of the tournament from there. ``flip_winner_of`` makes one decided knockout tie in the kept results go the other way first. Args: rfootball_find_value_betsSurface the largest gaps between the model's win probability and the market. De-vigs each market's 1X2 decimal odds (removes the margin so implied probabilities sum to 1) and compares them to this server's own match-outcome probabilities — the same Elo/Poisson path ``football_match_predictor`` uses.football_form_trendsReturn rolling form, goal record, and xG trend for a football team. Args: team: FIFA code (e.g. ARG) or name (e.g. "Argentina", "South Korea"). Returns: data: {form_string, wins, draws, losses, goals_scored, goals_conceded, xg_for, xg_against, recent_trend, matches_analysed}. meta.estimated: true —football_build_accumulatorModel the joint probability of several match outcomes from the top model-vs-market gaps. Calls ``football_find_value_bets`` internally to fetch live odds, then selects the strongest legs and combines them under the joint-probability model. Args: legs: Number of legs (2-8). Default 3. min_edge: Minimf1_get_sessionsReturn F1 sessions for a given year, optionally filtered by country or session name. Args: year: Championship year (e.g. 2026). country: Optional country name to filter (e.g. "Netherlands"). session_name: Optional session name to keep, case-insensitive (e.g. "Race", "Qualifying", "Sprint"). latest_cf1_get_driversReturn driver list for a specific F1 session. Args: session_key: OpenF1 session identifier. Returns: data.drivers: list of driver objects with driver_number, full_name, team. meta.source: adapter that served the data.f1_get_lap_timesReturn lap times for a driver in a specific F1 session. Args: session_key: OpenF1 session identifier. driver_number: Driver's race number (driver numbers change by season; use f1_get_drivers). limit: Max laps to return, 1..200 (default 100 — covers most full races). offset: Number of laps to skip fof1_get_standingsReturn F1 driver and constructor championship standings for a year. Use this for "who is leading / who will win the F1 championship this year". For title probabilities use f1_simulate_championship. This is not a cricket or football tool. Args: year: Championship year (e.g. 2026). Returns: data.seasof1_get_race_resultsReturn the final classification for one F1 race, keyed by year and round. Args: year: Championship year (e.g. 2025). round: Round number within the season (1-based; e.g. 1 for the opener). Returns: data.results: Ergast/Jolpica RaceTable payload — finishing order, times, grid positions, points, and ff1_get_weatherReturn weather data for a specific F1 session. Args: session_key: OpenF1 session identifier. Returns: data.weather: list of weather snapshots with temperature, rainfall, wind. meta.source: adapter that served the data.f1_tyre_degradationFit a tyre degradation model for a driver + compound in a session. Args: session_key: OpenF1 session identifier. driver_number: Driver's race number. compound: Tyre compound (SOFT, MEDIUM, HARD, INTER, WET; "INTERMEDIATE" = INTER). Returns: data: {intercept, slope, residual_std, sample_count}. meta.f1_undercut_windowEstimate whether an undercut is viable for the attacker against the target. Args: session_key: OpenF1 session identifier. attacker_number: Attacking driver's race number. target_number: Target driver's race number. current_lap: Current lap number in the race. Returns: data: {laps_to_clear, viable, mf1_head_to_head_paceCompare lap-time pace distribution between two drivers in a session. Args: session_key: OpenF1 session identifier. driver_a: First driver's race number. driver_b: Second driver's race number. Returns: data: {driver_a_avg_s, driver_b_avg_s, delta_s, faster_driver}. The "avg" values are median lap timf1_weather_strategy_impactAnalyse weather data and recommend compound or pit-window adjustments. Args: session_key: OpenF1 session identifier. Returns: data: {has_rain, avg_track_temp_c, compound_recommendation, recommendation}. meta.estimated: true.f1_predict_pit_strategyPredict the optimal pit-stop strategy for a driver in an F1 race session. Args: session_key: OpenF1 session identifier for a recorded race. driver_number: Driver's race number (driver numbers change by season; use f1_get_drivers). current_lap: Current lap to project from (default 1 = full race aheadf1_simulate_championshipEstimate each driver's F1 drivers' title probability for the rest of a season. Monte Carlo over the remaining races and sprints (Plackett-Luce finishing orders weighted by each driver's season points rate), plus exact elimination maths: a driver who cannot catch the leader's current points even by wf1_qualifying_analysisAnalyse a qualifying session: best lap per driver, gap to pole, projected grid. Args: session_key: OpenF1 session identifier for a Qualifying session. Returns: data.grid: [{position, driver_number, full_name, team_name, best_lap_gap_s}]. data.pole_time_s: pole lap duration in seconds. data.drivers_af1_race_pace_compareCompare race-pace and tyre degradation between two F1 drivers in a session. Args: session_key: OpenF1 session identifier. driver_a: First driver's race number. driver_b: Second driver's race number. Returns: data: {by_compound, overall_faster, compounds_compared}. meta.estimated: true — degradationcricket_get_live_matchesReturn all currently live cricket matches across all series. Returns: data.matches: list of live match objects (team names, score, status). meta.source: which adapter served the response. meta.is_stale: true if data is from stale cache.cricket_get_scorecardReturn the full scorecard for a specific match. Args: match_id: The match identifier (e.g. from cricket_get_live_matches). Returns: data: full scorecard with innings, partnerships, bowling figures. meta.source: adapter that served the data.cricket_get_points_tableReturn the points table / standings for a cricket series. Args: series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI). Returns: data: points table rows with team, P, W, L, NRR, Points. meta.source: adapter that served the data.cricket_get_scheduleReturn the upcoming match schedule, optionally filtered by series. Args: series_id: Optional. Filter to a specific series. If omitted, returns all upcoming fixtures across all active series. limit: Max matches to return, 1..200 (default 50). offset: Number of matches to skip for paging (default 0).cricket_get_squadReturn the squad roster for a cricket team, optionally for a specific series. Args: team: Team code or name (e.g. "MI", "CSK", "IND", "AUS"). series_id: Optional. Series ID to pull the tournament-specific squad. If omitted, falls back to static seed data. Returns: data.players: list of players withcricket_get_live_oddsReturn live market head-to-head odds for upcoming/live IPL matches. IPL only (~March-May). An empty ``events`` list outside that window is a successful empty market, not an outage. Not international/Test/other T20 leagues. For World Cup 2026 football odds use ``football_get_odds``. Sourced from Thecricket_build_dream11_teamRecommend an optimal fantasy XI + captain + vice-captain for one fixture. Args: match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically. team_a: First team code/name (e.g. ``MI``). Required if match_id is absent. team_b: Second team code/name (e.g. ``CSK``). Required if match_cricket_captain_recommendationReturn the top-3 captain candidates ranked by projected points. IPL venues only (pitch seed is IPL grounds). Test/international matches and unknown venues fail rather than inventing a ranking. Same-role players often tie: projections use default form 55 and default opposition 0.5, not per-player hiscricket_differential_picksSuggest low-ownership picks with positive projected upside. Ownership is *estimated* — proxied by credit weight (lower-credit players tend to have lower ownership), not real ownership data. Flagged ``estimated: true`` in the response. Args: match_id: CricAPI match identifier; resolves team_a/team_b/cricket_player_form_indexReport a 0-100 form score for a player using the player_stats chain. Args: player_id: Upstream player identifier (CricAPI/Cricbuzz id). Returns: data.form_score: 0..100 indicator. data.trend: "rising" / "stable" / "falling". data.samples: how many recent innings were available. meta.source: which adcricket_get_pitch_reportSummarise pitch characteristics for a venue. Args: venue: Venue key (e.g. ``wankhede``), official name, or city. Returns: data: {batting_friendly 0..1, expected_first_inn, recommendation, venue, pitch_type}. meta.source: which adapter served the venue record.cricket_find_value_betsCompare model probabilities against market-implied IPL odds. Requires THEODDS_KEY. NOTE: cricket has no calibrated team-strength model wired yet (unlike the football Elo/Poisson path), so this tool currently returns an EMPTY ``value_bets`` list — scoring an edge against a neutral 50/50 prior would fcricket_head_to_headCompare two cricket teams head-to-head using squad form and player stats. Args: team_a: First team code or name (e.g. "MI", "India"). team_b: Second team code or name (e.g. "CSK", "Australia"). Returns: data: {team_a, team_b, team_a_edge_count, team_b_edge_count, key_players_a, key_players_b, h2h_wicricket_player_matchupAnalyse the head-to-head matchup between two cricket players based on role and career stats. Args: player_a: CricAPI player ID for the first player (names are not resolved). player_b: CricAPI player ID for the second player (names are not resolved). Returns: data: {matchup_type, edge_holder, edge_recross_sport_build_accumulatorModel the joint probability of multiple outcomes across football and cricket. Args: legs: Total legs across both sports (2-8). Default 3. min_edge: Minimum edge per leg. Default 0.05. Returns: data: same shape as football_build_accumulator, with sport field per leg. meta.estimated: true.
Tool changes
- 2026-10-24: sportiq_health, football_get_groups, football_get_fixtures, football_get_standings, football_get_squad, football_get_match_stats, football_get_top_scorers, football_get_odds, football_xg_model, football_match_predictor, football_simulate_group, football_simulate_bracket
- 2026-10-16: sportiq_health, football_get_groups, football_get_fixtures, football_get_standings, football_get_squad, football_get_match_stats, football_get_top_scorers, football_get_odds, football_xg_model, football_match_predictor, football_simulate_group, football_simulate_bracket
Repository · JSON · Text for agents · Registry updated 2026-10-23