{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_npn2synnp2ra","handle":"sportiq-mcp","url":"https://wellknown.network/agents/sportiq-mcp","links":{"self":"https://wellknown.network/agents/sportiq-mcp/record.json","html":"https://wellknown.network/agents/sportiq-mcp","markdown":"https://wellknown.network/agents/sportiq-mcp/record.md","api":"https://wellknown.network/api/v1/agents/sportiq-mcp","status":"https://wellknown.network/api/v1/agents/sportiq-mcp/status","claim":"https://wellknown.network/agents/sportiq-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/sportiq-mcp/claim.json","badge":"https://wellknown.network/agents/sportiq-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:sportiq.utkarshgupta.org:server:sportiq-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"sportiq-mcp","summary":"MCP tools for FIFA World Cup 2026 football, Formula 1, and IPL cricket — sims, strategy, fantasy.","description":"MCP tools for FIFA World Cup 2026 football, Formula 1, and IPL cricket — sims, strategy, fantasy.","publisher":{"name":"Ninjabeam20","url":null},"homepage":"https://github.com/Ninjabeam20/SportIQ-MCP","repository":"https://github.com/Ninjabeam20/SportIQ-MCP","version":"0.3.2","license":"MIT","protocols":["mcp"],"tags":["cricket","f1","fantasy","football","mcp","sports"],"pricing":null,"endpoints":[{"url":"https://sportiq.utkarshgupta.org/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"pypi:sportiq-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-02T14:53:06.147474Z","publishedAt":"2026-09-02T14:53:06.147474Z","registryName":"io.github.Ninjabeam20/sportiq-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","license":"pypi","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"pypi","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.hr","name":"HR & Recruiting","confidence":0.554,"provenance":"derived"},{"slug":"research.people-companies","name":"People & Company Research","confidence":0.554,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.51,"provenance":"derived"}],"categories":["commerce","data","productivity","research"],"language":"en"},"observed":{"status":"recently_observed","statusReason":"Responded 37h ago; 2 recent checks failed (latest 16h ago).","lastOkAt":"2026-09-09T21:28:00.619Z","lastProbedAt":"2026-09-10T18:23:30.068Z","statusComputedAt":"2026-09-10T18:24:52.289Z","reliability30d":{"probes":12,"successRate":0.8333,"p50Ms":749},"latestObservations":[{"at":"2026-09-10T18:23:30.068Z","kind":"mcp_initialize","ok":false,"httpStatus":530,"latencyMs":23,"error":"http 530","detail":null},{"at":"2026-09-10T04:25:58.047Z","kind":"mcp_initialize","ok":false,"httpStatus":530,"latencyMs":17,"error":"http 530","detail":null},{"at":"2026-09-09T21:28:00.619Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":780,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-09T13:24:04.750Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1094,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-09T04:23:46.783Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":678,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T21:24:02.421Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1067,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T15:24:15.192Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1123,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T09:25:57.753Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":885,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T02:21:26.331Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":868,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T18:21:48.141Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":941,"error":null,"detail":{"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"toolCount":44,"serverName":"sportiq","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.3.2","protocolVersion":"2025-06-18"}}],"tools":[{"name":"sportiq_health","description":"Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n    HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n    `adapters` (per-so"},{"name":"football_get_groups","description":"Return the FIFA World Cup 2026 group draw and advancement format.\n\nReturns:\n    data.groups: {group_letter: [4 team codes]} for all 12 groups.\n    data.format: "},{"name":"football_get_fixtures","description":"Return World Cup 2026 fixtures (live providers, else the group schedule).\n\nArgs:\n    limit: Max fixtures to return, 1..200 (default 50).\n    offset: Number of f"},{"name":"football_get_standings","description":"Return current World Cup 2026 group standings.\n\nArgs:\n    limit: Max standing rows to return, 1..200 (default 50).\n    offset: Number of rows to skip for paging"},{"name":"football_get_squad","description":"Return a national team's World Cup squad.\n\nArgs:\n    team: Team code or name (e.g. \"ARG\"). Without an API-Football key, the\n        static seed serves an empty-"},{"name":"football_get_match_stats","description":"Return a team's aggregate World Cup tournament statistics.\n\nNetwork-only enrichment: requires a configured API-Football (or\nfootball-data.org) key. There is no "},{"name":"football_get_top_scorers","description":"Return the World Cup 2026 top scorers.\n\nReturns:\n    data.scorers: list of {name, team, goals, assists}.\n    meta.source: adapter that served the data.\n"},{"name":"football_get_odds","description":"Return live market head-to-head odds for upcoming World Cup 2026 matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a cl"},{"name":"football_xg_model","description":"Estimate a match's expected goals and win/draw/loss probabilities.\n\nArgs:\n    home_team: First team code (e.g. \"ARG\").\n    away_team: Second team code (e.g. \"BR"},{"name":"football_match_predictor","description":"Predict a single match: most likely scoreline + outcome probabilities.\n\nArgs:\n    home_team: First team code.\n    away_team: Second team code.\n    neutral: True"},{"name":"football_simulate_group","description":"Monte Carlo one group within the full 12-group qualification context.\n\nArgs:\n    group: Group letter A-L.\n    iterations: Number of simulations (clamped to 100."},{"name":"football_simulate_bracket","description":"Monte Carlo the full World Cup 2026 — per-team round + title probabilities.\n\nSimulates all 12 groups, advances the top 2 + 8 best third-placed teams to a\n32-tea"},{"name":"football_knockout_path","description":"Round-by-round survival probabilities for one team in the full sim.\n\nArgs:\n    team: Team code (e.g. \"FRA\").\n    iterations: Number of tournament simulations (c"},{"name":"football_find_value_bets","description":"Surface the largest gaps between the model's win probability and the market.\n\nDe-vigs each market's 1X2 decimal odds (removes the margin so implied\nprobabilitie"},{"name":"football_form_trends","description":"Return rolling form, goal record, and xG trend for a football team.\n\nArgs:\n    team: Team name (e.g. \"Brazil\", \"Argentina\").\n\nReturns:\n    data: {form_string, w"},{"name":"football_build_accumulator","description":"Model the joint probability of several match outcomes from the top model-vs-market gaps.\n\nCalls ``football_find_value_bets`` internally to fetch live odds, then"},{"name":"f1_get_sessions","description":"Return F1 sessions for a given year, optionally filtered by country.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    country: Optional country name to filte"},{"name":"f1_get_drivers","description":"Return driver list for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.drivers: list of driver objects with driver_"},{"name":"f1_get_lap_times","description":"Return lap times for a driver in a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number (e.g. 1 for V"},{"name":"f1_get_standings","description":"Return F1 driver and constructor championship standings for a year.\n\nArgs:\n    year: Championship year (e.g. 2025).\n\nReturns:\n    data.driver_standings: driver "},{"name":"f1_get_race_results","description":"Return the final classification for one F1 race, keyed by year and round.\n\nArgs:\n    year: Championship year (e.g. 2025).\n    round: Round number within the sea"},{"name":"f1_get_weather","description":"Return weather data for a specific F1 session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data.weather: list of weather snapshots with tem"},{"name":"f1_tyre_degradation","description":"Fit a tyre degradation model for a driver + compound in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_number: Driver's race number.\n "},{"name":"f1_undercut_window","description":"Estimate whether an undercut is viable for the attacker against the target.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    attacker_number: Attacking dr"},{"name":"f1_head_to_head_pace","description":"Compare lap-time pace distribution between two drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race number"},{"name":"f1_weather_strategy_impact","description":"Analyse weather data and recommend compound or pit-window adjustments.\n\nArgs:\n    session_key: OpenF1 session identifier.\n\nReturns:\n    data: {has_rain, avg_tra"},{"name":"f1_predict_pit_strategy","description":"Predict the optimal pit-stop strategy for a driver in an F1 race session.\n\nArgs:\n    session_key: OpenF1 session identifier for a recorded race.\n    driver_numb"},{"name":"f1_qualifying_analysis","description":"Analyse a qualifying session: best lap per driver, gap to pole, projected grid.\n\nArgs:\n    session_key: OpenF1 session identifier for a Qualifying session.\n\nRet"},{"name":"f1_race_pace_compare","description":"Compare race-pace and tyre degradation between two F1 drivers in a session.\n\nArgs:\n    session_key: OpenF1 session identifier.\n    driver_a: First driver's race"},{"name":"cricket_get_live_matches","description":"Return all currently live cricket matches across all series.\n\nReturns:\n    data.matches: list of live match objects (team names, score, status).\n    meta.source"},{"name":"cricket_get_scorecard","description":"Return the full scorecard for a specific match.\n\nArgs:\n    match_id: The match identifier (e.g. from cricket_get_live_matches).\n\nReturns:\n    data: full scoreca"},{"name":"cricket_get_points_table","description":"Return the points table / standings for a cricket series.\n\nArgs:\n    series_id: The series identifier (e.g. IPL 2026 series ID from CricAPI).\n\nReturns:\n    data"},{"name":"cricket_get_schedule","description":"Return the upcoming match schedule, optionally filtered by series.\n\nArgs:\n    series_id: Optional. Filter to a specific series. If omitted, returns\n            "},{"name":"cricket_get_squad","description":"Return the squad roster for a cricket team, optionally for a specific series.\n\nArgs:\n    team: Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").\n    series_id"},{"name":"cricket_get_live_odds","description":"Return live market head-to-head odds for upcoming/live IPL matches.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean AL"},{"name":"cricket_build_dream11_team","description":"Recommend an optimal fantasy XI + captain + vice-captain for one fixture.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatica"},{"name":"cricket_captain_recommendation","description":"Return the top-3 captain candidates ranked by projected points.\n\nArgs:\n    match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n    t"},{"name":"cricket_differential_picks","description":"Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower owners"},{"name":"cricket_player_form_index","description":"Report a 0-100 form score for a player using the player_stats chain.\n\nArgs:\n    player_id: Upstream player identifier (CricAPI/Cricbuzz id).\n\nReturns:\n    data."},{"name":"cricket_get_pitch_report","description":"Summarise pitch characteristics for a venue.\n\nArgs:\n    venue: Venue key (e.g. ``wankhede``), official name, or city.\n\nReturns:\n    data: {batting_friendly 0..1"},{"name":"cricket_find_value_bets","description":"Compare model probabilities against market-implied IPL odds. Requires THEODDS_KEY.\n\nNOTE: cricket has no calibrated team-strength model wired yet (unlike the\nfo"},{"name":"cricket_head_to_head","description":"Compare two cricket teams head-to-head using squad form and player stats.\n\nArgs:\n    team_a: First team code or name (e.g. \"MI\", \"India\").\n    team_b: Second te"},{"name":"cricket_player_matchup","description":"Analyse the head-to-head matchup between two cricket players based on role and career stats.\n\nArgs:\n    player_a: Player ID or name for the first player.\n    pl"},{"name":"cross_sport_build_accumulator","description":"Model the joint probability of multiple outcomes across football and cricket.\n\nArgs:\n    legs: Total legs across both sports (2-8). Default 3.\n    min_edge: Min"}],"package":{"name":"sportiq-mcp","registry":"pypi","observedAt":"2026-09-10T13:21:24.904Z","publishedAt":"2026-09-02T14:46:36.052535Z","latestVersion":"0.3.2"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"sportiq-mcp","url":"https://pypi.org/project/sportiq-mcp/","firstSeenAt":"2026-09-06T05:23:03.734Z","fetchedAt":"2026-09-10T13:19:12.581Z","normalizedAt":"2026-09-10T13:19:12.581Z"},{"source":"mcp_registry","key":"io.github.Ninjabeam20/sportiq-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.Ninjabeam20%2Fsportiq-mcp","firstSeenAt":"2026-09-06T05:22:07.414Z","fetchedAt":"2026-09-10T04:20:31.124Z","normalizedAt":"2026-09-10T04:20:31.124Z"}]},"firstSeenAt":"2026-09-06T05:22:07.414Z","updatedAt":"2026-09-10T13:21:24.904Z"}