get_sharp_line
Get Sharp Line
Answer an odds question about a fixture in ONE call (natural language in, worked line out).
Resolves the fixture, picks the consensus line, the best price per outcome across books, and
de-vigged fair odds from the sharpest book — returning a ready-to-read ``summary`` plus the
full ``comparison``. Prefer this over chaining find_match → compare_lines.
Args:
query: natural-language fixture, e.g. "Arsenal vs Man City" or a single team.
market_type: "1x2", "asian_handicap" (default) or "totals".
period: "full_time" (default) or "half_time".
format: odds format — decimal | hk | malay | american | indonesian | probability.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
verbosity: "full" (default) or "terse". "terse" empties the per-book ``books`` array inside
``comparison`` to save tokens; the ``summary`` and worked numbers are kept either way.
On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a disambiguation
prompt — do not assume a match; ask the user or re-call with a more specific query. A
``decision`` block (``safe_to_proceed`` / ``ask_user`` / ``next_action``) pre-computes the
go/no-go — branch on it instead of re-judging the result.
輸入參數datequery必填sportformatperiodverbositymarket_type
Find a football/basketball fixture by natural-language name.
Args:
query: e.g. "Man City vs Arsenal" or a single team name.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
Returns the best-matching event (with id, teams, league, kickoff, live score, the live match
``clock`` e.g. "2h 47" or "ht", and a confidence score) plus alternatives. Use the returned
``event_id`` with get_match_odds / compare_lines.
A ``decision`` block tells you whether it's ``safe_to_proceed`` and the suggested
``next_action`` (or ``ask_user`` when ambiguous).
輸入參數datequery必填sport
get_match_odds
Get Match Odds
Get all current odds for a match across bookmakers.
Args:
event_id: event id from find_match / list_today_matches (e.g. "evt_…").
markets: optional filter — any of "1x2", "asian_handicap", "totals".
bookmakers: optional filter — bookmaker keys, e.g. ["pinnacle", "crown"].
period: optional — "full_time" or "half_time" (default: both).
format: odds format — decimal | hk | malay | american | indonesian | probability.
輸入參數formatperiodmarketsevent_id必填bookmakers
compare_lines
Compare Lines
Compare one market across all bookmakers for a match.
Returns each book's quote line-by-line, the consensus line, the best price per outcome, each
book's overround, and de-vigged fair odds from the sharpest (lowest-margin) book.
Args:
event_id: event id (e.g. "evt_…").
market_type: "1x2", "asian_handicap" (default) or "totals".
period: "full_time" (default) or "half_time".
format: display odds format (analytics are computed in decimal regardless).
verbosity: "full" (default) or "terse". "terse" drops the per-book ``books`` array (the bulk
of the payload) and returns only the worked answer (best_prices / consensus_line /
fair_odds / summary).
輸入參數formatperiodevent_id必填verbositymarket_type
explain_handicap
Explain Asian Handicap
Explain an Asian handicap line.
Splits a quarter line into its components (e.g. -0.75 → -0.5 / -1.0) and states the
full-win / half-win / push / half-loss / full-loss conditions. ``line`` must be a multiple
of 0.25.
輸入參數line必填
list_today_matches
List Today's Matches
List today's (UTC) fixtures — "what games are on today / right now?".
Each fixture carries its status, live score, the live match ``clock`` (upstream minute text,
verbatim e.g. "1h 25" / "2h 47" / "ht") when in-running, and a ready-to-read ``summary`` (live
score & clock, or the kickoff time). Read ``clock`` for the real minute rather than estimating it
from kickoff. ``clock`` is null pre-match.
Args:
sport: optional filter — "football" or "basketball".
status: optional filter — "live", "scheduled" or "finished".
league: optional league filter — a name (fuzzy-matched, e.g. "World Cup") or an external id ("lg_…").
limit: max fixtures to return (1–200, default 50).
timezone: optional IANA timezone (e.g. "America/New_York", "Asia/Shanghai") to render each
fixture's kickoff in its ``summary`` as local time; default UTC.
輸入參數limitsportleaguestatustimezone
list_events
List Events (day or date range)
List the fixtures for a calendar day — or a bounded [date, date_to] range.
Unlike list_today_matches (today + anything still live), this is a strict window for whatever
``date`` you ask for. Pass ``date_to`` (inclusive, max 31 days after ``date``) to cover a whole
tournament window in ONE call — "all group-stage matches June 11–28" needs no per-day loop. UTC
is canonical: pass an IANA ``timezone`` and the day boundaries are computed in that zone (so
"June 12 in Shanghai" excludes a match that is still June 11 / already June 13 locally); each
fixture keeps its UTC ``scheduled_at`` and adds ``scheduled_at_local``. Capped to ``limit``
(``truncated`` flags overflow) — narrow with sport/status/league rather than paging.
Args:
date: REQUIRED calendar day "YYYY-MM-DD" (e.g. "2026-06-12") — the window start.
date_to: optional inclusive end day "YYYY-MM-DD" (max 31 days after ``date``); omit for a
single day.
timezone: optional IANA timezone (e.g. "Asia/Shanghai", "America/New_York") for the day
boundary; default is the UTC day.
sport: optional filter — "football" or "basketball".
status: optional filter — "scheduled", "live" or "finished".
league: optional league filter — a name (fuzzy-matched, e.g. "World Cup") or an external id ("lg_…").
limit: max fixtures to return (1–200, default 50).
輸入參數date必填limitsportleaguestatusdate_totimezone
Get the basics for a match in ONE call: the score, whether it's live, when it kicks off, and who's favored.
No betting knowledge needed — this answers "who's winning?", "what's the score?", "what time does
Brazil play (in my timezone)?", "who's the favorite?". Returns the live score + match clock, the
status, the kickoff time (in ``timezone`` if you pass an IANA name like "America/New_York"), the
favored team with a plain win probability (de-vigged from the 1x2 line), and a ready-to-read
``summary`` you can quote directly.
Args:
query: natural-language fixture or team, e.g. "Brazil vs Argentina" or just "Brazil".
timezone: optional IANA timezone (e.g. "America/New_York", "Asia/Shanghai") for the kickoff
time; default UTC.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a prompt — do not guess.
``favorite`` is best-effort (null when no 1x2 is on file for the fixture).
輸入參數datequery必填sporttimezone
list_bookmakers
List Bookmakers
List the bookmakers available on your tier.
Returns the curated catalogue (each with ``key``, ``name`` and ``class`` = "sharp" | "asian")
plus a ``note`` on tier coverage. Free tier excludes the sharp book (Pinnacle). Use the returned
``key`` values in the ``bookmakers`` filter of get_match_odds / compare_lines.
無需輸入參數。
get_opening_line
Get Opening Line
Get the opening odds (初盘) for a fixture, paired with the current price, in ONE call.
Resolves the fixture, then for each book returns its **true opening** (first-seen) quote alongside
the current quote — so you can read movement directly. For 1x2 that's a price move; for totals/AH
compare ``line`` (the opening line) vs ``current_line`` to read the line move (the sharp book often
opens days earlier). A market with no opening yet on file is omitted.
Args:
query: natural-language fixture, e.g. "Real Madrid vs Barcelona" or a single team.
markets: optional filter — any of "1x2", "asian_handicap", "totals".
bookmakers: optional filter — bookmaker keys, e.g. ["pinnacle", "crown"].
period: optional — "full_time" or "half_time" (default: both).
format: odds format — decimal | hk | malay | american | indonesian | probability.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a disambiguation
prompt — do not assume a match. Best-effort: a book/line with no opening on file is omitted.
輸入參數datequery必填sportformatperiodmarketsbookmakers
find_value
Find Value Bets
Find +EV value bets in a fixture — where a book's price beats the sharp fair line — in ONE call.
Resolves the fixture, de-vigs the sharp book (Pinnacle) at each line to get the fair price, then
flags every outcome whose best available price across books exceeds that fair price. DETECTION
ONLY: this surfaces the edge and which book holds it; it does NOT size stakes or link out to bet.
Args:
query: natural-language fixture, e.g. "Netherlands vs Algeria" or a single team.
markets: optional filter — any of "1x2", "asian_handicap", "totals" (default: all).
period: optional — "full_time" or "half_time" (default: both).
min_edge_pct: only report outcomes beating fair by at least this % (default 1.0).
format: odds format — decimal | hk | malay | american | indonesian | probability.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a prompt — do not
guess. Needs the sharp book to de-vig; on the Free tier ``note`` flags that fair is approximate.
輸入參數datequery必填sportformatperiodmarketsmin_edge_pct
compare_prob
Compare External Probability
Judge an external probability (e.g. a Polymarket/Kalshi price) against our sharp fair line — ONE call.
Resolves the fixture, de-vigs the sharp book to a fair probability (power de-vig for 3-way 1x2),
and reports the edge ``fair_prob − external_prob`` in percentage points, the ROI, and a verdict
(good / marginal / no_edge). DETECTION ONLY: InferSports never ingests prediction-market data,
sizes a stake, or picks — it gives you the sharp reference and the gap; the call is yours.
Args:
query: natural-language fixture, e.g. "France vs Argentina" or a single team.
external_prob: the external implied probability for ``outcome``, in (0,1). Pre-net it for the
venue's fee/spread (e.g. a Polymarket YES ask of 0.55 → 0.55).
market_type: "1x2" (default; the prediction-market-comparable moneyline), "asian_handicap"
(only ±0.5 maps cleanly to a binary), or "totals".
period: "full_time" (default) or "half_time".
outcome: which leg the probability is for — home/draw/away (1x2), home/away (AH), over/under.
external_label: optional source label echoed back, e.g. "polymarket" | "kalshi".
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
Read ``caveats`` before acting: a 1x2 fair is regulation 90-min (a prediction market that includes
extra time / "to advance" is a different market); quarter/integer AH carries push mass. On an
ambiguous query ``status`` is "ambiguous" — do not guess. ``status`` is "no_line" when no sharp
fair is available to judge against.
輸入參數datequery必填sportperiodoutcomemarket_typeexternal_prob必填external_label
score_prob
Score Probabilities (market-implied)
Market-implied correct-score probabilities for ONE football match — ONE call.
Inverts the de-vigged 1x2 (power de-vig) + totals prices into a bivariate-Poisson
(Dixon-Coles) score grid and returns the top-K scorelines with probabilities, the
fitted goal rates (lambda_home/lambda_away), and how much probability mass the list
covers. The asian-handicap fair price is held out of the fit and reported as
``ah_ev_check`` (≈0 means the three markets are internally consistent). This is the
market's own distribution, never an InferSports prediction. Football only, one match
per call.
Args:
query: natural-language fixture, e.g. "Mexico vs South Africa" or a single team.
sport: optional filter; only "football" is supported by this tool.
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
top: how many scorelines to return (default 5, max 10).
輸入參數topdatequery必填sport
find_arbitrage
Find Arbitrage
Find cross-book arbitrage in a fixture — a guaranteed-profit price split — in ONE call.
Resolves the fixture, then for each market/line takes the best price per outcome across books;
when the inverse prices sum to < 1 there is a locked margin regardless of result. Reports the
margin % and which book holds each leg (legs must come from ≥2 distinct books). DETECTION ONLY:
no stake sizing, no bet links — InferSports is read-only.
Args:
query: natural-language fixture, e.g. "Netherlands vs Algeria" or a single team.
markets: optional filter — any of "1x2", "asian_handicap", "totals" (default: all).
period: optional — "full_time" or "half_time" (default: both).
min_margin_pct: only report opportunities with at least this guaranteed margin (default 0).
format: odds format — decimal | hk | malay | american | indonesian | probability.
sport: optional filter — "football" or "basketball".
date: optional UTC date "YYYY-MM-DD" to disambiguate same-name fixtures.
On an ambiguous query, ``status`` is "ambiguous" and ``ask_user`` carries a prompt — do not guess.
輸入參數datequery必填sportformatperiodmarketsmin_margin_pct
Scan today's whole slate in ONE call — each fixture with honest status + value/arb signal.
The batch alternative to looping find_match → get_sharp_line per match. Returns every fixture in
the filter with its status (finished is excluded from "live"), live score/clock, and a
pre-computed value/arb signal; value/arb matches are sorted to the top and the list is truncated
to ``limit`` (so truncation drops the quiet ones). Line movement is NOT included (that needs the
opening lookup) — drill into a single fixture with get_opening_line. DETECTION ONLY / read-only.
Args:
sport: optional filter — "football" or "basketball".
status: optional filter — "live" | "scheduled" | "finished".
league: optional league filter — a name (fuzzy-matched, e.g. "World Cup") or an external id (lg_…).
markets: optional — limit the value/arb scan to "1x2"/"asian_handicap"/"totals" (default all).
period: optional — "full_time" or "half_time" (default both).
min_edge_pct: value threshold for the per-match signal (default 1.0).
min_margin_pct: arbitrage threshold for the per-match signal (default 0.0).
only_signal: if true, return only fixtures that have a value or arb signal.
format: odds format — decimal | hk | malay | american | indonesian | probability.
limit: max entries to return, signal-first (default 20, max 100).
輸入參數limitsportformatleagueperiodstatusmarketsonly_signalmin_edge_pctmin_margin_pct
Look back at finished-match scores from the 30-day results cache, most-recent-first.
Results-only: each entry is the final score, red cards and finished time (no odds). Unlike the
live tools, these survive a restart — use it for "what was the score of X?" or "yesterday's
results".
Args:
date: optional UTC kickoff date "YYYY-MM-DD" — the day the match was played.
team: optional case-insensitive substring matched against either team name.
league: optional case-insensitive substring matched against the league name.
limit: max results to return, most-recent-first (1–200, default 50).
輸入參數dateteamlimitleague
Get the cached final result for ONE finished match by event id.
Returns the final score, red cards and finished time. ``status`` is "found" or "not_found" (the
match isn't in the 30-day cache). Results-only — no odds.
Args:
event_id: event id (e.g. "evt_…") from find_match / list_results.
輸入參數event_id必填