AgentStack
SKILL verified MIT Self-run

Infersports

skill-infersports-infersports-skill-infersports · by infersports

Live football & basketball odds and scores from InferSports — who's favored, the live score, today's matches and what's worth watching, a specific day's schedule (in your timezone), a one-line pre-match brief, one normalized sharp betting line, the sharp de-vigged fair probability, the market-implied most likely scorelines, whether an external prediction-market (Polymarket/Kalshi) price is good v…

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-infersports-infersports-skill-infersports

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Infersports? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

InferSports odds & scores

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).

Golden rule (determinism)

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.

Report the numbers, never a pick (read-only)

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.

Answer in the user's language

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.

The twelve verbs

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(" [--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 "" [--tz Asia/Shanghai] [--sport] [--date YYYY-MM-DD] | | What's the sharp line / handicap? | scripts/line.sh "" [--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 "" [--market 1x2\|asian_handicap\|totals] [--period] [--sport] [--date] | | What's the most likely score? / correct-score probabilities | scripts/scoreprob.sh "" [--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 "" --prob [--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 · scripts/convert.sh --handicap -0.75 | | What was the score of a finished match? | scripts/result.sh "" [--date YYYY-MM-DD] · scripts/result.sh --id evt_… |

How to chain them (cheaply)

  1. Broad question ("what's on today?") → 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.

  1. Drill into ONE match → match.sh (casual: score/favored) or line.sh (betting). Pass either the

team 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.

  1. today.sh is capped (default 20, max 50) so a busy weekend never floods your context. If you

see "more exist", narrow with --sport/--status/--league, or jump straight to match.sh "". --league takes a competition NAME (fuzzy — --league "World Cup" just works) or an lg_… id; an ambiguous name errors back with the candidate ids.

"Which team is stronger?" — strength from the odds

For the watcher who wants a strength reference (casual, not a pick):

  • Before kickoffpreview.sh "": the favored side + de-vigged win % + the Asian

handicap. 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.

  • LIVE → in-play prices answer "who wins FROM HERE given the score and clock", NOT who is the

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: 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.

  • The whole day at a glancedigest.sh — each line already carries the favored team + win %.

Strength is information, not advice — the no-pick rule above still applies.

Examples

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.

Reading the output

  • ask: … with a few evt_… | Home vs Away lines = the fixture was ambiguous. Put the question

to 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 sport

isn'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.

What this skill does NOT do

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](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.

Config (all optional)

  • 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).

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.