Skip to content
Agentmart
Submit a tool

Sportiq MCP

MCP tools for FIFA World Cup 2026 football, Formula 1, and IPL cricket — sims, strategy, fantasy.

Connector by Ninjabeam20 · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 10
Write a review

Chalk Labs

Need help deploying Sportiq MCP?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/ninjabeam20-sportiq-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://sportiq.utkarshgupta.org/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP tools for FIFA World Cup 2026 football, Formula 1, and IPL cricket — sims, strategy, fantasy.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
46 read · 0 write · 0 deleteRead-only
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 46

From the running server's own tool list (tools/list) on Oct 25, 2026.

Read 46 · Look things up without changing anything.

  • cricket_build_dream11_team
  • cricket_captain_recommendation
  • cricket_differential_picks
  • cricket_find_value_bets
  • cricket_get_live_matches
  • cricket_get_live_odds
  • cricket_get_pitch_report
  • cricket_get_points_table
  • cricket_get_schedule
  • cricket_get_scorecard
  • cricket_get_squad
  • cricket_head_to_head
Show 34 more tools
  • cricket_player_form_index
  • cricket_player_matchup
  • cross_sport_build_accumulator
  • f1_get_drivers
  • f1_get_lap_times
  • f1_get_race_results
  • f1_get_sessions
  • f1_get_standings
  • f1_get_weather
  • f1_head_to_head_pace
  • f1_predict_pit_strategy
  • f1_qualifying_analysis
  • f1_race_pace_compare
  • f1_simulate_championship
  • f1_tyre_degradation
  • f1_undercut_window
  • f1_weather_strategy_impact
  • football_build_accumulator
  • football_find_value_bets
  • football_form_trends
  • football_get_fixtures
  • football_get_groups
  • football_get_match_stats
  • football_get_odds
  • football_get_squad
  • football_get_standings
  • football_get_top_scorers
  • football_knockout_path
  • football_match_predictor
  • football_simulate_bracket
  • football_simulate_group
  • football_what_if
  • football_xg_model
  • sportiq_health

Network hosts it talks to 20

  • api.cricapi.com · found in code
  • api.football-data.org · found in code
  • api.github.com · found in code
  • api.jolpi.ca · found in code
  • api.openf1.org · found in code
  • api.the-odds-api.com · found in code
  • cricsheet.org · found in code
  • developers.cloudflare.com · found in code
  • docs.github.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • login.dream11.com · found in code
  • m.cricbuzz.com · found in code
  • mcp.rapidapi.com · found in code
  • pypistats.org · found in code
  • raw.githubusercontent.com · found in code
  • sport-iq-sports-analysis.vercel.app · found in code
  • sportiq.utkarshgupta.org · found in remote endpoint, install command, code
  • sports.ndtv.com · found in code
  • v3.football.api-sports.io · found in code

Files it touches

  • Your home directory (~)

Tools (46)

As the server listed them on Oct 25, 2026. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • cricket_build_dream11_teamread-only

    Recommend 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_id is absent. venue: Venue key/name (e.g. ``wankhede``). Required if match_id is absent. strategy: ``"balanced"`` only in Phase 2; future variants reserved. Returns: data.players: 11 picked players with name/role/credits/team/projected_points. data.captain: name of the …

  • cricket_captain_recommendationread-only

    Return 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 history. Args: match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically. team_a: First team code/name. Required if match_id is absent. team_b: Second team code/name. Required if match_id is absent. venue: Venue key/name (IPL ground, e.g. ``wankhede``). Required i…

  • cricket_differential_picksread-only

    Suggest 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/venue automatically. team_a: First team code/name. Required if match_id is absent. team_b: Second team code/name. Required if match_id is absent. venue: Venue key/name. Required if match_id is absent. ownership_threshold: percent ownership cap; affects estimated label. Returns…

  • cricket_find_value_betsread-only

    Compare 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 flag every market underdog, which would be misleading. It still reports how many events were screened so callers know odds were available. For raw de-vigged prices use ``cricket_get_live_odds``. Real edge detection lands when a cricket win model is wired (see cricket_head_to_head); it will flag outc…

  • cricket_get_live_matchesread-only

    Return 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_live_oddsread-only

    Return 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 The Odds API (requires THEODDS_KEY). Without a key the call returns a clean ALL_SOURCES_FAILED envelope rather than crashing. Args: team: Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every IPL event. The Odds API uses…

  • cricket_get_pitch_reportread-only

    Summarise 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_get_points_tableread-only

    Return 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_scheduleread-only

    Return 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). Returns: data.matches: page of matches dated today (UTC) or later, with teams, date, venue; filtered to ``series_id`` when the source labels series. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that serve…

  • cricket_get_scorecardread-only

    Return 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_squadread-only

    Return 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 with name, role, and credits. meta.source: adapter that served the data (cricapi / static_seed).

  • cricket_head_to_headread-only

    Compare 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_win_rate_a, h2h_win_rate_b, win_prob_a, win_prob_b}. meta.estimated: true. meta.estimate_quality: "uninformative" when no player stats were available (both sides at default form), else "player_stats".

  • cricket_player_form_indexread-only

    Report 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 adapter served the underlying stats. meta.estimated: true.

  • cricket_player_matchupread-only

    Analyse 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_reason, signals, role_a, role_b}. meta.estimated: true — heuristic model, not ball-by-ball H2H data.

  • cross_sport_build_accumulatorread-only

    Model 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.

Show 31 more tools
  • f1_get_driversread-only

    Return 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_timesread-only

    Return 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 for paging (default 0). Returns: data.laps: page of lap objects with lap_number and lap_duration. OpenF1 does not put compound/tyre_life here — those live on the stints endpoint. data.pagination: {total, count, offset, limit, has_more, next_offset}. meta.source: a…

  • f1_get_race_resultsread-only

    Return 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 fastest laps for the race. meta.source: adapter that served the data.

  • f1_get_sessionsread-only

    Return 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_completed: When true, return only the single session that ended most recently (greatest date_end before now, UTC) — e.g. with session_name="Race", the latest finished Grand Prix. Returns: data.sessions: list of session objects with session_key, session_ty…

  • f1_get_standingsread-only

    Return 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.season / data.round: season and the last round counted. data.drivers: [{position, driver_number, code, name, team, points, wins}] (points are season totals). data.constructors: [{position, team, points, wins}]. Same shape from every source (Jolpica primary; the FastF1 fallb…

  • f1_get_weatherread-only

    Return 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_head_to_head_paceread-only

    Compare 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 times after dropping pit-out laps and slow outliers (safety-car / in-laps). meta.estimated: true.

  • f1_predict_pit_strategyread-only

    Predict 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 ahead). total_laps: Total race laps. If omitted, estimated from the regulation minimum race distance (305 km; Monaco 260 km) over the circuit's lap length; INVALID_INPUT when the circuit is unknown. An explicit value always wins. Returns: data.stop_laps: reco…

  • f1_qualifying_analysisread-only

    Analyse 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_analysed: count of drivers with valid laps. meta.estimated: true — grid derived from session laps, not official timing.

  • f1_race_pace_compareread-only

    Compare 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 — degradation model fit, not official timing.

  • f1_simulate_championshipread-only

    Estimate 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 winning every remaining race and sprint has title_prob 0.0. This is not a cricket or football tool. Args: year: Championship season (2018-2030, default 2026). iterations: Monte Carlo iterations, clamped to 1000-20000 (default 10000). seed: Optional RNG seed for reproducible probabilitie…

  • f1_tyre_degradationread-only

    Fit 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.estimated: true — model output, not telemetry oracle.

  • f1_undercut_windowread-only

    Estimate 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, marginal}. meta.gap_to_target_s: attacker-minus-target race time at current_lap. meta.gap_source: "cumulative_lap_time", or "default" (assumed 2.0 s, also in meta.assumed_gap_s) when either driver lacks a full lap history. meta.estimated: true.

  • f1_weather_strategy_impactread-only

    Analyse 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.

  • football_build_accumulatorread-only

    Model 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: Minimum edge threshold per leg. Default 0.05. Returns: data: {legs, legs_used, combined_odds, combined_model_prob, combined_edge, risk_flag, independence_warning}. meta.estimated: true.

  • football_find_value_betsread-only

    Surface 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. Flags outcomes where the model beats the de-vigged market by ``min_edge`` **and** the offered price has positive expected value, with the edge, the expected value and the model's fair odds. Events that have already started are skipped. Args: team: Optional FIFA code or team name to filter eve…

  • football_form_trendsread-only

    Return 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 — derived from available fixture data.

  • football_get_fixturesread-only

    Return 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: {total, count, offset, limit, has_more, next_offset}. meta.source: adapter that served the data (static_seed = group schedule only).

  • football_get_groupsread-only

    Return 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_match_statsread-only

    Return 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 (not a country code). Returns: data.team_stats: {team, played, wins, goals_for, goals_against}. meta.source: adapter that served the data.

  • football_get_oddsread-only

    Return 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 normally empty. Args: team: Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every WC event. Returns: data.events: list of {event_id, home, away, commence_time, bookmakers: [{name, home, draw, away, last_update}]} with dec…

  • football_get_squadread-only

    Return 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.source: adapter that served the data. meta.note: present when the seed served it — how to get live squads.

  • football_get_standingsread-only

    Return 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_more, next_offset}. meta.source: adapter that served the data.

  • football_get_top_scorersread-only

    Return the World Cup 2026 top scorers. Returns: data.scorers: list of {name, team, goals, assists}. meta.source: adapter that served the data.

  • football_knockout_pathread-only

    Round-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}. meta.estimated: true.

  • football_match_predictorread-only

    Predict 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_win, predicted_winner}. meta.estimated: true.

  • football_simulate_bracketread-only

    Monte 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; ~10000 gives stable ±2% probabilities). seed: Optional RNG seed for reproducible output. Returns: data.teams: {code: {reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}} sorted by win probability descending. data.champion: most likely winner. data.iteratio…

  • football_simulate_groupread-only

    Monte 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_advance, and avg_points. data.iterations: iterations actually run. meta.estimated: true. meta.conditioned_matches: completed matches locked in.

  • football_what_ifread-only

    Replay 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: replay_from: Stage to re-simulate from: "group" (whole tournament, no real results kept), "r32", "r16", "qf", "sf" or "final" (keeps every result before the final and simulates only the final). flip_winner_of: Optional tie to flip, as two FIFA codes or names joined b…

  • football_xg_modelread-only

    Estimate 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: {expected_home_goals, expected_away_goals, home_win, draw, away_win}. meta.estimated: true.

  • sportiq_healthread-only

    Report cache backend, per-adapter healthcheck, and quota status. Returns: HealthReport-shaped dict with `cache_backend`, `cache_ok`, `adapters` (per-source ok/detail), and `quotas`.

Signals

Stars
10
Forks
1
Open issues
0
Weekly downloads
108
Last commit
Oct 23, 2026 (9 days ago)
Last release
Oct 23, 2026 (9 days ago)
Last package publish
Oct 23, 2026 (9 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.Ninjabeam20/sportiq-mcp
Version
0.4.0
Auth
Auth not stated
Packages
pypi sportiq-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Sportiq MCP running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Sportiq MCP?

CallGet help
Cite this page

Sportiq MCP. Agent Mart. https://agentmart.dev/connectors/ninjabeam20-sportiq-mcp (last updated 2026-10-24)