Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted just now
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:e00e85ea44ff516efa33635481e69e01be1429f08a33af4aa6776a7ea578e36b | sha256sum