Server definition
- Hash
- sha256:e00e85ea44ff516efa33635481e69e01be1429f08a33af4aa6776a7ea578e36b
- What it is
- What a remote MCP server returned when asked what it offers: 44 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"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 automatically.\n team_a: First team code/name (e.g. ``MI``). Required if match_id is absent.\n team_b: Second team code/name (e.g. ``CSK``). Required if match_id is absent.\n venue: Venue key/name (e.g. ``wankhede``). Required if match_id is absent.\n strategy: ``\"balanced\"`` only in Phase 2; future variants reserved.\n\nReturns:\n data.players: 11 picked players with name/role/credits/team/projected_points.\n data.captain: name of the chosen captain.\n data.vice_captain: name of the chosen VC.\n data.total_credits: sum of credits used (<= 100).\n data.total_projected_points: fantasy points including C x2 and VC x1.5 boosts.\n meta.estimated: true — projections are model output, not a fantasy oracle.\n\nExample:\n cricket_build_dream11_team(team_a=\"MI\", team_b=\"CSK\", venue=\"wankhede\")\n cricket_build_dream11_team(match_id=\"abc123\")\n",
"inputSchema": {
"properties": {
"match_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CricAPI match identifier; resolves team_a/team_b/venue automatically.",
"title": "Match Id"
},
"strategy": {
"default": "balanced",
"description": "``\"balanced\"`` only in Phase 2; future variants reserved.",
"title": "Strategy",
"type": "string"
},
"team_a": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "First team code/name (e.g. ``MI``). Required if match_id is absent.",
"title": "Team A"
},
"team_b": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Second team code/name (e.g. ``CSK``). Required if match_id is absent.",
"title": "Team B"
},
"venue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Venue key/name (e.g. ``wankhede``). Required if match_id is absent.",
"title": "Venue"
}
},
"title": "cricket_build_dream11_teamArguments",
"type": "object"
},
"name": "cricket_build_dream11_team",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"description": "Return the top-3 captain candidates ranked by projected points.\n\nIPL venues only (pitch seed is IPL grounds). Test/international matches\nand unknown venues fail rather than inventing a ranking. Same-role\nplayers often tie: projections use default form 55 and default\nopposition 0.5, not per-player history.\n\nArgs:\n match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n team_a: First team code/name. Required if match_id is absent.\n team_b: Second team code/name. Required if match_id is absent.\n venue: Venue key/name (IPL ground, e.g. ``wankhede``). Required if match_id is absent.\n\nReturns:\n data.candidates: list of 3 dicts with name/role/team/projected_points.\n meta.source: model:captain_score.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"match_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CricAPI match identifier; resolves team_a/team_b/venue automatically.",
"title": "Match Id"
},
"team_a": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "First team code/name. Required if match_id is absent.",
"title": "Team A"
},
"team_b": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Second team code/name. Required if match_id is absent.",
"title": "Team B"
},
"venue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Venue key/name (IPL ground, e.g. ``wankhede``). Required if match_id is absent.",
"title": "Venue"
}
},
"title": "cricket_captain_recommendationArguments",
"type": "object"
},
"name": "cricket_captain_recommendation",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"description": "Suggest low-ownership picks with positive projected upside.\n\nOwnership is *estimated* — proxied by credit weight (lower-credit players\ntend to have lower ownership), not real ownership data. Flagged\n``estimated: true`` in the response.\n\nArgs:\n match_id: CricAPI match identifier; resolves team_a/team_b/venue automatically.\n team_a: First team code/name. Required if match_id is absent.\n team_b: Second team code/name. Required if match_id is absent.\n venue: Venue key/name. Required if match_id is absent.\n ownership_threshold: percent ownership cap; affects estimated label.\n\nReturns:\n data.picks: list of {name, role, team, credits, projected_points,\n estimated_ownership_pct}.\n meta.source: model:captain_score (filtered).\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"match_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CricAPI match identifier; resolves team_a/team_b/venue automatically.",
"title": "Match Id"
},
"ownership_threshold": {
"default": 20,
"description": "percent ownership cap; affects estimated label.",
"title": "Ownership Threshold",
"type": "integer"
},
"team_a": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "First team code/name. Required if match_id is absent.",
"title": "Team A"
},
"team_b": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Second team code/name. Required if match_id is absent.",
"title": "Team B"
},
"venue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Venue key/name. Required if match_id is absent.",
"title": "Venue"
}
},
"title": "cricket_differential_picksArguments",
"type": "object"
},
"name": "cricket_differential_picks",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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\nfootball Elo/Poisson path), so this tool currently returns an EMPTY\n``value_bets`` list — scoring an edge against a neutral 50/50 prior would flag\nevery market underdog, which would be misleading. It\nstill reports how many events were screened so callers know odds were\navailable. For raw de-vigged prices use ``cricket_get_live_odds``. Real edge\ndetection lands when a cricket win model is wired (see cricket_head_to_head).\n\nArgs:\n team: Optional team name to filter events (case-insensitive substring).\n Omit to scan every IPL odds event.\n min_edge: Minimum edge (model_prob - devigged_market_prob), 0..1.\n Default 0.05. Currently informational only (no bets emitted).\n\nReturns:\n data.value_bets: always ``[]`` until a cricket model is wired.\n data.events_analysed: count of events screened (both teams present).\n data.model: ``\"neutral_baseline\"``. data.note: why no bets are emitted.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"min_edge": {
"default": 0.05,
"description": "Minimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05. Currently informational only (no bets emitted).",
"title": "Min Edge",
"type": "number"
},
"team": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional team name to filter events (case-insensitive substring). Omit to scan every IPL odds event.",
"title": "Team"
}
},
"title": "cricket_find_value_betsArguments",
"type": "object"
},
"name": "cricket_find_value_bets",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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: which adapter served the response.\n meta.is_stale: true if data is from stale cache.\n",
"inputSchema": {
"properties": {},
"title": "cricket_get_live_matchesArguments",
"type": "object"
},
"name": "cricket_get_live_matches",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"description": "Return live market head-to-head odds for upcoming/live IPL matches.\n\nIPL only (~March-May). An empty ``events`` list outside that window is a\nsuccessful empty market, not an outage. Not international/Test/other T20\nleagues. For World Cup 2026 football odds use ``football_get_odds``.\n\nSourced from The Odds API (requires THEODDS_KEY). Without a key the call\nreturns a clean ALL_SOURCES_FAILED envelope rather than crashing.\n\nArgs:\n team: Optional team name to filter events (case-insensitive substring,\n matched against both sides). Omit to return every IPL event. The\n Odds API uses its own opaque event ids, so a CricAPI match_id\n cannot be resolved to an event yet — filtering is by team name.\n\nReturns:\n data.events: list of {event_id, home, away, commence_time, bookmakers:\n [{name, home, away}]} with decimal h2h prices per bookmaker.\n Empty when no IPL events are listed (typical off-season).\n meta.source: adapter that served the data (theodds / cache:stale).\n",
"inputSchema": {
"properties": {
"team": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every IPL event. The Odds API uses its own opaque event ids, so a CricAPI match_id cannot be resolved to an event yet — filtering is by team name.",
"title": "Team"
}
},
"title": "cricket_get_live_oddsArguments",
"type": "object"
},
"name": "cricket_get_live_odds",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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, expected_first_inn, recommendation,\n venue, pitch_type}.\n meta.source: which adapter served the venue record.\n",
"inputSchema": {
"properties": {
"venue": {
"description": "Venue key (e.g. ``wankhede``), official name, or city.",
"title": "Venue",
"type": "string"
}
},
"required": [
"venue"
],
"title": "cricket_get_pitch_reportArguments",
"type": "object"
},
"name": "cricket_get_pitch_report",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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: points table rows with team, P, W, L, NRR, Points.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"series_id": {
"description": "The series identifier (e.g. IPL 2026 series ID from CricAPI).",
"title": "Series Id",
"type": "string"
}
},
"required": [
"series_id"
],
"title": "cricket_get_points_tableArguments",
"type": "object"
},
"name": "cricket_get_points_table",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 all upcoming fixtures across all active series.\n limit: Max matches to return, 1..200 (default 50).\n offset: Number of matches to skip for paging (default 0).\n\nReturns:\n data.matches: page of upcoming matches with teams, date, venue.\n data.pagination: {total, count, offset, limit, has_more, next_offset}.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"description": "Max matches to return, 1..200 (default 50).",
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of matches to skip for paging (default 0).",
"title": "Offset",
"type": "integer"
},
"series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional. Filter to a specific series. If omitted, returns all upcoming fixtures across all active series.",
"title": "Series Id"
}
},
"title": "cricket_get_scheduleArguments",
"type": "object"
},
"name": "cricket_get_schedule",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 scorecard with innings, partnerships, bowling figures.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"match_id": {
"description": "The match identifier (e.g. from cricket_get_live_matches).",
"title": "Match Id",
"type": "string"
}
},
"required": [
"match_id"
],
"title": "cricket_get_scorecardArguments",
"type": "object"
},
"name": "cricket_get_scorecard",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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: Optional. Series ID to pull the tournament-specific squad.\n If omitted, falls back to static seed data.\n\nReturns:\n data.players: list of players with name, role, and credits.\n meta.source: adapter that served the data (cricapi / static_seed).\n",
"inputSchema": {
"properties": {
"series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional. Series ID to pull the tournament-specific squad. If omitted, falls back to static seed data.",
"title": "Series Id"
},
"team": {
"description": "Team code or name (e.g. \"MI\", \"CSK\", \"IND\", \"AUS\").",
"title": "Team",
"type": "string"
}
},
"required": [
"team"
],
"title": "cricket_get_squadArguments",
"type": "object"
},
"name": "cricket_get_squad",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 team code or name (e.g. \"CSK\", \"Australia\").\n\nReturns:\n data: {team_a, team_b, team_a_edge_count, team_b_edge_count,\n key_players_a, key_players_b, h2h_win_rate_a, h2h_win_rate_b,\n win_prob_a, win_prob_b}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"team_a": {
"description": "First team code or name (e.g. \"MI\", \"India\").",
"title": "Team A",
"type": "string"
},
"team_b": {
"description": "Second team code or name (e.g. \"CSK\", \"Australia\").",
"title": "Team B",
"type": "string"
}
},
"required": [
"team_a",
"team_b"
],
"title": "cricket_head_to_headArguments",
"type": "object"
},
"name": "cricket_head_to_head",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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.form_score: 0..100 indicator.\n data.trend: \"rising\" / \"stable\" / \"falling\".\n data.samples: how many recent innings were available.\n meta.source: which adapter served the underlying stats.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"player_id": {
"description": "Upstream player identifier (CricAPI/Cricbuzz id).",
"title": "Player Id",
"type": "string"
}
},
"required": [
"player_id"
],
"title": "cricket_player_form_indexArguments",
"type": "object"
},
"name": "cricket_player_form_index",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 player_b: Player ID or name for the second player.\n\nReturns:\n data: {matchup_type, edge_holder, edge_reason, signals, role_a, role_b}.\n meta.estimated: true — heuristic model, not ball-by-ball H2H data.\n",
"inputSchema": {
"properties": {
"player_a": {
"description": "Player ID or name for the first player.",
"title": "Player A",
"type": "string"
},
"player_b": {
"description": "Player ID or name for the second player.",
"title": "Player B",
"type": "string"
}
},
"required": [
"player_a",
"player_b"
],
"title": "cricket_player_matchupArguments",
"type": "object"
},
"name": "cricket_player_matchup",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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: Minimum edge per leg. Default 0.05.\n\nReturns:\n data: same shape as football_build_accumulator, with sport field per leg.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"legs": {
"default": 3,
"description": "Total legs across both sports (2-8). Default 3.",
"title": "Legs",
"type": "integer"
},
"min_edge": {
"default": 0.05,
"description": "Minimum edge per leg. Default 0.05.",
"title": "Min Edge",
"type": "number"
}
},
"title": "cross_sport_build_accumulatorArguments",
"type": "object"
},
"name": "cross_sport_build_accumulator",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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_number, full_name, team.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key"
],
"title": "f1_get_driversArguments",
"type": "object"
},
"name": "f1_get_drivers",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 Verstappen).\n limit: Max laps to return, 1..200 (default 100 — covers most full races).\n offset: Number of laps to skip for paging (default 0).\n\nReturns:\n data.laps: page of lap objects with lap_number and lap_duration. OpenF1\n does not put compound/tyre_life here — those live on the stints endpoint.\n data.pagination: {total, count, offset, limit, has_more, next_offset}.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"driver_number": {
"description": "Driver's race number (e.g. 1 for Verstappen).",
"title": "Driver Number",
"type": "integer"
},
"limit": {
"default": 100,
"description": "Max laps to return, 1..200 (default 100 — covers most full races).",
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of laps to skip for paging (default 0).",
"title": "Offset",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key",
"driver_number"
],
"title": "f1_get_lap_timesArguments",
"type": "object"
},
"name": "f1_get_lap_times",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 season (1-based; e.g. 1 for the opener).\n\nReturns:\n data.results: Ergast/Jolpica RaceTable payload — finishing order, times,\n grid positions, points, and fastest laps for the race.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"round": {
"description": "Round number within the season (1-based; e.g. 1 for the opener).",
"title": "Round",
"type": "integer"
},
"year": {
"description": "Championship year (e.g. 2025).",
"title": "Year",
"type": "integer"
}
},
"required": [
"year",
"round"
],
"title": "f1_get_race_resultsArguments",
"type": "object"
},
"name": "f1_get_race_results",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 filter (e.g. \"Monaco\").\n\nReturns:\n data.sessions: list of session objects with session_key, session_type, date.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional country name to filter (e.g. \"Monaco\").",
"title": "Country"
},
"year": {
"description": "Championship year (e.g. 2025).",
"title": "Year",
"type": "integer"
}
},
"required": [
"year"
],
"title": "f1_get_sessionsArguments",
"type": "object"
},
"name": "f1_get_sessions",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"description": "Return F1 driver and constructor championship standings for a year.\n\nUse this for \"who is leading / who will win the F1 championship this year\".\nThere is no F1 title Monte Carlo — current points and position are the answer.\nThis is not a cricket or football tool.\n\nArgs:\n year: Championship year (e.g. 2026).\n\nReturns:\n data.driver_standings: driver championship positions and points.\n data.constructor_standings: constructor championship positions and points.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"year": {
"description": "Championship year (e.g. 2026).",
"title": "Year",
"type": "integer"
}
},
"required": [
"year"
],
"title": "f1_get_standingsArguments",
"type": "object"
},
"name": "f1_get_standings",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 temperature, rainfall, wind.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key"
],
"title": "f1_get_weatherArguments",
"type": "object"
},
"name": "f1_get_weather",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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.\n driver_b: Second driver's race number.\n\nReturns:\n data: {driver_a_avg_s, driver_b_avg_s, delta_s, faster_driver}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"driver_a": {
"description": "First driver's race number.",
"title": "Driver A",
"type": "integer"
},
"driver_b": {
"description": "Second driver's race number.",
"title": "Driver B",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key",
"driver_a",
"driver_b"
],
"title": "f1_head_to_head_paceArguments",
"type": "object"
},
"name": "f1_head_to_head_pace",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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_number: Driver's race number (e.g. 1 for Verstappen).\n current_lap: Current lap to project from (default 1 = full race ahead).\n total_laps: Total race laps. If omitted, inferred from the highest\n observed lap_number in the fetched laps (correct for Monaco 78 /\n Spa 44), falling back to 57 when no laps are available. An explicit\n value always wins.\n\nReturns:\n data.stop_laps: recommended pit laps.\n data.compound_sequence: tyre compounds for each stint.\n data.expected_finish_position: currently always None (not modelled).\n data.confidence: 0.0-1.0 model confidence.\n meta.total_laps: race length used (explicit arg, else inferred from laps).\n meta.estimated: true.\n\nExample:\n f1_predict_pit_strategy(session_key=9158, driver_number=1)\n f1_predict_pit_strategy(session_key=9158, driver_number=16, current_lap=20, total_laps=78)\n",
"inputSchema": {
"properties": {
"current_lap": {
"default": 1,
"description": "Current lap to project from (default 1 = full race ahead).",
"title": "Current Lap",
"type": "integer"
},
"driver_number": {
"description": "Driver's race number (e.g. 1 for Verstappen).",
"title": "Driver Number",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier for a recorded race.",
"title": "Session Key",
"type": "integer"
},
"total_laps": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Total race laps. If omitted, inferred from the highest observed lap_number in the fetched laps (correct for Monaco 78 / Spa 44), falling back to 57 when no laps are available. An explicit value always wins.",
"title": "Total Laps"
}
},
"required": [
"session_key",
"driver_number"
],
"title": "f1_predict_pit_strategyArguments",
"type": "object"
},
"name": "f1_predict_pit_strategy",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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\nReturns:\n data.grid: [{position, driver_number, full_name, team_name, best_lap_gap_s}].\n data.pole_time_s: pole lap duration in seconds.\n data.drivers_analysed: count of drivers with valid laps.\n meta.estimated: true — grid derived from session laps, not official timing.\n",
"inputSchema": {
"properties": {
"session_key": {
"description": "OpenF1 session identifier for a Qualifying session.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key"
],
"title": "f1_qualifying_analysisArguments",
"type": "object"
},
"name": "f1_qualifying_analysis",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 number.\n driver_b: Second driver's race number.\n\nReturns:\n data: {by_compound, overall_faster, compounds_compared}.\n meta.estimated: true — degradation model fit, not official timing.\n",
"inputSchema": {
"properties": {
"driver_a": {
"description": "First driver's race number.",
"title": "Driver A",
"type": "integer"
},
"driver_b": {
"description": "Second driver's race number.",
"title": "Driver B",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key",
"driver_a",
"driver_b"
],
"title": "f1_race_pace_compareArguments",
"type": "object"
},
"name": "f1_race_pace_compare",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 compound: Tyre compound (SOFT, MEDIUM, HARD, INTER, WET).\n\nReturns:\n data: {intercept, slope, residual_std, sample_count}.\n meta.estimated: true — model output, not telemetry oracle.\n",
"inputSchema": {
"properties": {
"compound": {
"description": "Tyre compound (SOFT, MEDIUM, HARD, INTER, WET).",
"title": "Compound",
"type": "string"
},
"driver_number": {
"description": "Driver's race number.",
"title": "Driver Number",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key",
"driver_number",
"compound"
],
"title": "f1_tyre_degradationArguments",
"type": "object"
},
"name": "f1_tyre_degradation",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 driver's race number.\n target_number: Target driver's race number.\n current_lap: Current lap number in the race.\n\nReturns:\n data: {laps_to_clear, viable, marginal}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"attacker_number": {
"description": "Attacking driver's race number.",
"title": "Attacker Number",
"type": "integer"
},
"current_lap": {
"description": "Current lap number in the race.",
"title": "Current Lap",
"type": "integer"
},
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
},
"target_number": {
"description": "Target driver's race number.",
"title": "Target Number",
"type": "integer"
}
},
"required": [
"session_key",
"attacker_number",
"target_number",
"current_lap"
],
"title": "f1_undercut_windowArguments",
"type": "object"
},
"name": "f1_undercut_window",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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_track_temp_c, compound_recommendation, recommendation}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"session_key": {
"description": "OpenF1 session identifier.",
"title": "Session Key",
"type": "integer"
}
},
"required": [
"session_key"
],
"title": "f1_weather_strategy_impactArguments",
"type": "object"
},
"name": "f1_weather_strategy_impact",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 selects\nthe strongest legs and combines them under the joint-probability model.\n\nArgs:\n legs: Number of legs (2-8). Default 3.\n min_edge: Minimum edge threshold per leg. Default 0.05.\n\nReturns:\n data: {legs, legs_used, combined_odds, combined_model_prob, combined_edge,\n risk_flag, independence_warning}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"legs": {
"default": 3,
"description": "Number of legs (2-8). Default 3.",
"title": "Legs",
"type": "integer"
},
"min_edge": {
"default": 0.05,
"description": "Minimum edge threshold per leg. Default 0.05.",
"title": "Min Edge",
"type": "number"
}
},
"title": "football_build_accumulatorArguments",
"type": "object"
},
"name": "football_build_accumulator",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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\nprobabilities sum to 1) and compares them to this server's own match-outcome\nprobabilities — the same Elo/Poisson path ``football_match_predictor`` uses.\nWhere the model probability exceeds the de-vigged market probability by at\nleast ``min_edge``, the outcome is flagged with its edge and the\nmodel's fair odds.\n\nArgs:\n team: Optional team name to filter events (case-insensitive substring,\n matched against both sides). Omit to scan every WC 2026 odds event.\n min_edge: Minimum edge (model_prob - devigged_market_prob), 0..1.\n Default 0.05 (5 percentage points).\n\nReturns:\n data.value_bets: list of {event_id, home, away, outcome, model_prob,\n fair_odds, market_odds, edge, bookmaker}, sorted by edge descending.\n data.events_analysed: events with both teams rated (model-comparable).\n meta.estimated: true. meta.is_stale reflects the odds freshness.\n",
"inputSchema": {
"properties": {
"min_edge": {
"default": 0.05,
"description": "Minimum edge (model_prob - devigged_market_prob), 0..1. Default 0.05 (5 percentage points).",
"title": "Min Edge",
"type": "number"
},
"team": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to scan every WC 2026 odds event.",
"title": "Team"
}
},
"title": "football_find_value_betsArguments",
"type": "object"
},
"name": "football_find_value_bets",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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, wins, draws, losses, goals_scored, goals_conceded,\n xg_for, xg_against, recent_trend, matches_analysed}.\n meta.estimated: true — derived from available fixture data.\n",
"inputSchema": {
"properties": {
"team": {
"description": "Team name (e.g. \"Brazil\", \"Argentina\").",
"title": "Team",
"type": "string"
}
},
"required": [
"team"
],
"title": "football_form_trendsArguments",
"type": "object"
},
"name": "football_form_trends",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 fixtures to skip for paging (default 0).\n\nReturns:\n data.fixtures: page of {home, away, date/group, status, home_goals, away_goals}.\n data.pagination: {total, count, offset, limit, has_more, next_offset}.\n meta.source: adapter that served the data (static_seed = group schedule only).\n",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"description": "Max fixtures to return, 1..200 (default 50).",
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of fixtures to skip for paging (default 0).",
"title": "Offset",
"type": "integer"
}
},
"title": "football_get_fixturesArguments",
"type": "object"
},
"name": "football_get_fixtures",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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: 48-team / 12-group / top-2 + 8-best-thirds rule.\n data.teams: team-code -> {name, fifa_code} metadata.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {},
"title": "football_get_groupsArguments",
"type": "object"
},
"name": "football_get_groups",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 offline static fallback, so without a\nkey the call returns a clean ALL_SOURCES_FAILED envelope.\n\nArgs:\n team: API-Football numeric team id (not a country code).\n\nReturns:\n data.team_stats: {team, played, wins, goals_for, goals_against}.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"team": {
"description": "API-Football numeric team id (not a country code).",
"title": "Team",
"type": "integer"
}
},
"required": [
"team"
],
"title": "football_get_match_statsArguments",
"type": "object"
},
"name": "football_get_match_stats",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 clean ALL_SOURCES_FAILED envelope rather than crashing.\n\nArgs:\n team: Optional team name to filter events (case-insensitive substring,\n matched against both sides). Omit to return every WC event.\n\nReturns:\n data.events: list of {event_id, home, away, commence_time, bookmakers:\n [{name, home, draw, away}]} with decimal 1X2 prices per bookmaker.\n meta.source: adapter that served the data (theodds / cache:stale).\n",
"inputSchema": {
"properties": {
"team": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional team name to filter events (case-insensitive substring, matched against both sides). Omit to return every WC event.",
"title": "Team"
}
},
"title": "football_get_oddsArguments",
"type": "object"
},
"name": "football_get_odds",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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-but-valid squad (rosters are a follow-up).\n\nReturns:\n data.squad: list of {name, number, position, age}.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"team": {
"description": "Team code or name (e.g. \"ARG\"). Without an API-Football key, the static seed serves an empty-but-valid squad (rosters are a follow-up).",
"title": "Team",
"type": "string"
}
},
"required": [
"team"
],
"title": "football_get_squadArguments",
"type": "object"
},
"name": "football_get_squad",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 (default 0).\n\nReturns:\n data.standings: page of {rank, team, group, points, played, goals_diff}.\n data.pagination: {total, count, offset, limit, has_more, next_offset}.\n meta.source: adapter that served the data.\n",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"description": "Max standing rows to return, 1..200 (default 50).",
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of rows to skip for paging (default 0).",
"title": "Offset",
"type": "integer"
}
},
"title": "football_get_standingsArguments",
"type": "object"
},
"name": "football_get_standings",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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",
"inputSchema": {
"properties": {},
"title": "football_get_top_scorersArguments",
"type": "object"
},
"name": "football_get_top_scorers",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 (clamped to 100..20000).\n seed: Optional RNG seed.\n\nReturns:\n data: {team, reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"iterations": {
"default": 10000,
"description": "Number of tournament simulations (clamped to 100..20000).",
"title": "Iterations",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional RNG seed.",
"title": "Seed"
},
"team": {
"description": "Team code (e.g. \"FRA\").",
"title": "Team",
"type": "string"
}
},
"required": [
"team"
],
"title": "football_knockout_pathArguments",
"type": "object"
},
"name": "football_knockout_path",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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 for a neutral venue (World Cup default).\n\nReturns:\n data: {most_likely_score, home_win, draw, away_win, predicted_winner}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"away_team": {
"description": "Second team code.",
"title": "Away Team",
"type": "string"
},
"home_team": {
"description": "First team code.",
"title": "Home Team",
"type": "string"
},
"neutral": {
"default": true,
"description": "True for a neutral venue (World Cup default).",
"title": "Neutral",
"type": "boolean"
}
},
"required": [
"home_team",
"away_team"
],
"title": "football_match_predictorArguments",
"type": "object"
},
"name": "football_match_predictor",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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-team knockout, and plays it to a champion, ``iterations`` times.\n\nArgs:\n iterations: Number of tournament simulations (clamped to 100..20000;\n ~10000 gives stable ±2% probabilities).\n seed: Optional RNG seed for reproducible output.\n\nReturns:\n data.teams: {code: {reach_r32, reach_r16, reach_qf, reach_sf, reach_final, win}}\n sorted by win probability descending.\n data.champion: most likely winner.\n data.iterations: iterations run.\n meta.estimated: true. meta.conditioned_matches: completed matches locked in\n (played group results fixed, decided knockout ties locked).\n\nExample:\n football_simulate_bracket()\n football_simulate_bracket(iterations=20000, seed=42)\n",
"inputSchema": {
"properties": {
"iterations": {
"default": 10000,
"description": "Number of tournament simulations (clamped to 100..20000; ~10000 gives stable ±2% probabilities).",
"title": "Iterations",
"type": "integer"
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional RNG seed for reproducible output.",
"title": "Seed"
}
},
"title": "football_simulate_bracketArguments",
"type": "object"
},
"name": "football_simulate_bracket",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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..20000).\n\nReturns:\n data.teams: Per-team position probabilities, p_auto_advance,\n p_best_third_advance, truthful combined p_advance, and avg_points.\n data.iterations: iterations actually run.\n meta.estimated: true. meta.conditioned_matches: completed matches locked in.\n",
"inputSchema": {
"properties": {
"group": {
"description": "Group letter A-L.",
"title": "Group",
"type": "string"
},
"iterations": {
"default": 5000,
"description": "Number of simulations (clamped to 100..20000).",
"title": "Iterations",
"type": "integer"
}
},
"required": [
"group"
],
"title": "football_simulate_groupArguments",
"type": "object"
},
"name": "football_simulate_group",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"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. \"BRA\").\n neutral: True for a neutral venue (no home advantage). World Cup default.\n\nReturns:\n data: {expected_home_goals, expected_away_goals, home_win, draw, away_win}.\n meta.estimated: true.\n",
"inputSchema": {
"properties": {
"away_team": {
"description": "Second team code (e.g. \"BRA\").",
"title": "Away Team",
"type": "string"
},
"home_team": {
"description": "First team code (e.g. \"ARG\").",
"title": "Home Team",
"type": "string"
},
"neutral": {
"default": true,
"description": "True for a neutral venue (no home advantage). World Cup default.",
"title": "Neutral",
"type": "boolean"
}
},
"required": [
"home_team",
"away_team"
],
"title": "football_xg_modelArguments",
"type": "object"
},
"name": "football_xg_model",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
},
{
"description": "Report cache backend, per-adapter healthcheck, and quota status.\n\nReturns:\n HealthReport-shaped dict with `cache_backend`, `cache_ok`,\n `adapters` (per-source ok/detail), and `quotas`.\n",
"inputSchema": {
"properties": {},
"title": "sportiq_healthArguments",
"type": "object"
},
"name": "sportiq_health",
"outputSchema": {
"properties": {
"data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Data"
},
"error": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Error"
},
"meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta"
}
},
"title": "Envelope",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:e00e85ea44ff516efa33635481e69e01be1429f08a33af4aa6776a7ea578e36b | sha256sum