infersports — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited infersports (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Live Asian-priced football and basketball odds + scores, over the InferSports REST API. Read-only. Keyless (Free tier) — no setup. Output is CONCISE by default (one short line per item) to stay cheap on a small context window; add --detailed for full JSON only when you truly need it.
Scope: football and basketball only. InferSports carries no other sport. A question about any other sport (baseball, tennis, …) has no answer here — say so; it is not a cue to look elsewhere.
Per-match markets only. Every price is for ONE match (Asian handicap / totals / 1x2); there are no outright/futures markets (tournament winner, to-qualify) and no tournament structure (groups, brackets) — though a team's group-stage opponents fall out of a schedule range query (see the verb table).
Answer by running the bundled scripts below. Never fetch a URL yourself, never guess an endpoint, never hand-build an API call, and never web-search for a score, line, or result — this skill is the source of truth for odds and scores. The scripts hold the correct fixed endpoints; you only pick the verb and pass arguments. Each prints a compact, ready-to-read line. If a script returns ambiguous or not found, that is the answer: surface the ask: / alternatives to the user, or re-run with --date / --sport / a more specific name — do not go looking elsewhere.
InferSports is read-only and never recommends a bet — and neither do you when relaying it. Give the NUMBERS — line / score / odds / value — exactly as the script printed them; the sentence around them is yours, in the asker's language (next section). Do NOT add a pick of your own, a lean, "best play", "I'd take…", or any betting suggestion — even if the user asks "should I bet?" or "which bet?" For those, give the data and a plain "the call is yours." scan.sh, line.sh and compare.sh surface where a price beats the sharp de-vigged fair line — that detected edge is information (detection only), so relay it faithfully (numbers verbatim), but never turn it into advice or a recommended side.
Relay results in the language the user asked in — the scripts always print English; you translate the prose around the numbers. Keep VERBATIM: evt_…/lg_… ids, all numbers (odds, lines, probabilities, edges, scores), bookmaker names, and dates/times as printed. Team/league names: use the established name in the user's language only when you are confident (World Cup → 世界杯, Mexico → México); when unsure (obscure clubs, youth sides), keep the English name as printed — never invent a transliteration. Script arguments stay English: translate the user's team/league names to English before passing them.
Run from this skill's directory. All read-only and safe to repeat. Several package several reads into one ready-to-read answer: preview.sh (one-match brief), digest.sh (today's highlights), scan.sh (today's value) and compare.sh (judge an external price) — the fan-out / de-vig happens for you; you get a capped, concise result.
| The user asks… | Run | ||||||
|---|---|---|---|---|---|---|---|
| What games are on today? | `scripts/today.sh [--sport football\ | basketball] [--status live\ | scheduled\ | finished] [--league "World Cup"] [--tz Asia/Shanghai] [--limit N]` | |||
| What's on a specific day? / this Friday / June 12 in my timezone — or a competition ("World Cup games today?") | `scripts/events.sh --date YYYY-MM-DD [--to YYYY-MM-DD] [--tz Asia/Shanghai] [--sport football\ | basketball] [--status live\ | scheduled\ | finished] [--league "World Cup"] [--limit N]` | |||
| A whole schedule window — "all group-stage matches", "Argentina's remaining fixtures" | scripts/events.sh --date YYYY-MM-DD --to YYYY-MM-DD --league "World Cup" — ONE call (range inclusive, ≤31 days); never loop day-by-day. For one team, run the range then keep its lines. | ||||||
| What's worth watching today? / today's highlights | `scripts/digest.sh [--sport football\ | basketball] [--limit N(<=12)] [--status live\ | scheduled\ | finished]` | |||
| Who's favored? / What's the score? / When do they play? | scripts/match.sh "<team, A vs B, or evt_… id>" [--tz Asia/Shanghai] | ||||||
| Which team is stronger? / a quick one-line brief (pre-match: favored % + sharp line + kickoff; live: score + from-here % + the pre-match opening line) | scripts/preview.sh "<team, A vs B, or evt_… id>" [--tz Asia/Shanghai] [--sport] [--date YYYY-MM-DD] | ||||||
| What's the sharp line / handicap? | `scripts/line.sh "<team, A vs B, or evt_… id>" [--market asian_handicap\ | 1x2\ | totals] [--format hk\ | malay\ | …] [--sport] [--date YYYY-MM-DD]` | ||
| What's the sharp fair (de-vigged) probability? / the reference to check a price against | `scripts/fair.sh "<team, A vs B, or evt_… id>" [--market 1x2\ | asian_handicap\ | totals] [--period] [--sport] [--date]` | ||||
| What's the most likely score? / correct-score probabilities | scripts/scoreprob.sh "<team, A vs B, or evt_… id>" [--top N(1-10)] [--sport] [--date YYYY-MM-DD] — market-implied scoreline distribution (football, one match) | ||||||
| Is my Polymarket/Kalshi (external) price good? / is this prediction-market price fair? | `scripts/compare.sh "<team, A vs B, or evt_… id>" --prob <0..1> [--outcome home\ | draw\ | away\ | over\ | under] [--market 1x2\ | asian_handicap\ | totals] [--label polymarket]` |
| Where's the value today? / today's edges | `scripts/scan.sh [--sport football\ | basketball] [--market 1x2\ | asian_handicap\ | totals] [--min-edge PCT] [--limit N] [--status live\ | scheduled\ | finished]` | |
| Convert odds / explain a handicap | scripts/convert.sh <value> <from> <to[,to2,…]> · scripts/convert.sh --handicap -0.75 | ||||||
| What was the score of a finished match? | scripts/result.sh "<team>" [--date YYYY-MM-DD] · scripts/result.sh --id evt_… |
today.sh; a specific day ("what's on June 12?","this Friday") → events.sh --date YYYY-MM-DD (add --tz so the day is your local day, not UTC); a multi-day window ("the whole group stage", "next week's fixtures") → add --to YYYY-MM-DD — one range call, never a per-day loop (tournament rounds cross UTC midnight, so a guessed loop drops fixtures). All return one line per match, capped, each starting with an evt_… id.
match.sh (casual: score/favored) or line.sh (betting). Pass either theteam name or the evt_… id straight from today.sh — both work (the id is resolved for you). If a name is ambiguous (senior vs U21, two same-day fixtures), pin it with --date YYYY-MM-DD and/or --sport, or use the more specific name (e.g. "Estonia U21"). A date written into the query (e.g. "Estonia vs Lithuania 2026-06-07") is understood too.
today.sh is capped (default 20, max 50) so a busy weekend never floods your context. If yousee "more exist", narrow with --sport/--status/--league, or jump straight to match.sh "<team>". --league takes a competition NAME (fuzzy — --league "World Cup" just works) or an lg_… id; an ambiguous name errors back with the candidate ids.
For the watcher who wants a strength reference (casual, not a pick):
preview.sh "<fixture>": the favored side + de-vigged win % + the Asianhandicap. Read the AH line as plain language: 0 = evenly matched; ±0.25 a slight edge; −0.5/−0.75 favored; −1 about a goal better; −1.5/−2 dominant; −2.5+ a class apart.
stronger team (a 0-0 deep in the second half makes the draw the "favorite"). preview.sh on a live match therefore swaps the live line for pre-match: <team> opened -N — the opening line, the strength reference from before kickoff. Answer with both: strength (the opening line, read on the scale above) and the current situation (score + from-here %). Near full time books pull the 1x2, so the from-here segment may be absent — the opening line still answers strength.
digest.sh — each line already carries the favored team + win %.Strength is information, not advice — the no-pick rule above still applies.
scripts/match.sh "Brazil vs Argentina" --tz America/Sao_Paulo
# → Brazil vs Argentina — LIVE 1h 12 1-0.
# favorite: Brazil (61.4%)
scripts/line.sh "Man City vs Arsenal" --format hk
# → Man City vs Arsenal — consensus AH home -0.5; best home 1.08 …; fair 1.99/2.01.
scripts/convert.sh 2.08 decimal hk,malay,american,probability
# → decimal=2.08 hk=1.08 malay=-0.93 american=108 probability=0.4808
scripts/digest.sh --sport football --limit 5
# → Worth watching today (2026-06-08) — top 5 of 75
# evt_… | A v B | LIVE 1-0 1h 36 | 5 books · value
# evt_… | C v D | 13:00 UTC | 7 books
scripts/preview.sh "France vs Argentina" --tz Europe/Paris
# → France vs Argentina — France favored (84.0%) · AH -2.25 · kicks off 21:10 Europe/Paris
scripts/preview.sh "SJK Seinajoki vs Inter Turku" # live → strength comes from the OPENING line
# → SJK Seinajoki vs Inter Turku — LIVE 1-1 ht · from here: draw 38.8% · pre-match: Inter Turku opened -0.5
scripts/scan.sh --sport football --market asian_handicap --min-edge 1 --limit 5
# → Value scan 2026-06-08 — 5 shown (scanned 76)
# evt_… | A v B | sbobet AH -1 home @2.14 | fair 2.08 | +2.9% | scheduled
# Detection only — the edge is information, not a pick.
scripts/compare.sh "France vs Argentina" --prob 0.52 --outcome home --label polymarket
# → France v Argentina — 1x2 home: sharp fair 55.6% vs polymarket 52.0% → +3.6pp (ROI +6.9%) · GOOD · de-vig pinnacle/power
# ⚠ 1x2 fair = regulation 90-min … (caveats) ; Detection only — the call is yours.
# (You pre-net the prediction-market price for its fee/spread; we never ingest that data.)
scripts/fair.sh "France vs Argentina"
# → France v Argentina — sharp fair (1x2): home 55.6% / draw 28.2% / away 22.5% · de-vig pinnacle
scripts/today.sh --status live --sport football --limit 15
scripts/result.sh "Myanmar" --date 2026-06-06
scripts/events.sh --date 2026-06-12 --tz Asia/Shanghai --sport football
scripts/today.sh --league "World Cup" # a competition by name — World Cup fixtures today
# → Events 2026-06-12 (Asia/Shanghai) — 2 shown
# evt_… | Mexico vs South Africa — Kicks off 03:00 Asia/Shanghai on Jun 12.
# evt_… | Korea Republic vs Czechia — Kicks off 10:00 Asia/Shanghai on Jun 12.ask: … with a few evt_… | Home vs Away lines = the fixture was ambiguous. Put the questionto the user (or use their hint) and re-run with the chosen team / --date / --sport. Do not guess, and do not web-search instead.
ERROR: … then FIX: … = do exactly what FIX says; it is the repair step.not found = the match isn't live/scheduled, isn't in the 30-day results cache, **or the sportisn't covered (football + basketball only — baseball/tennis/etc. return not found). Treat it as a final answer: say plainly it isn't in InferSports (you may suggest `today.sh` for football/basketball). Do not** web-search it or quote odds from another source — this skill speaks only for InferSports.
It wraps the highest-frequency reads plus two packaged scans (preview.sh, scan.sh). For arbitrage detection, opening-line (初盘) movement, full per-book breakdowns, or the bookmaker catalogue, see references/full-api.md — the full REST docs and the 16-tool MCP server. (scan.sh already gives today's value top-N; the full API adds per-book depth and arb.) InferSports is informational and read-only — it never places, recommends, or sizes a bet.
INFERSPORTS_API_KEY — an isk_… key to raise rate limits / unlock the sharp book. Default keyless = Free tier (enough for these verbs).INFERSPORTS_API_BASE — override the API host (default https://api.infersports.dev).INFERSPORTS_MOCK=1 — answer from bundled fixtures/ instead of the network (offline, deterministic; for testing the skill).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.