agentsclimarketplace

Infersports

Skill infersports/infersports-skill/plugins/infersports/skills/infersports

InferSports Agent Skill — live Asian-priced football & basketball odds + scores. Read-only, keyless. Claude Code / Codex / OpenClaw.

Install
npx -y skills add infersports/infersports-skill --skill infersports

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

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 vs that fair line, today's value spots (where a book beats the sharp fair line), odds-format conversion, and finished-match results. Use whenever the user asks about a match, the score, who's winning or favored, kickoff time, what's on or worth watching today, the fixtures on a specific day, a pre-match preview, a betting line or Asian handicap, the fair/de-vigged odds, the most likely score or correct-score probabilities, whether a Polymarket/Kalshi price is fair or good, where today's value/edges are, odds in another format, or a past result. Read-only; keyless, no account or API key needed.

SKILL.md

13.3 KB, as published. Nobody here has run it

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 highlightsscripts/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 againstscripts/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 probabilitiesscripts/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 edgesscripts/scan.sh [--sport football|basketball] [--market 1x2|asian_handicap|totals] [--min-edge PCT] [--limit N] [--status live|scheduled|finished]
Convert odds / explain a handicapscripts/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_…

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.
  2. 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.
  3. 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 "<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.

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

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

  • Before kickoffpreview.sh "<fixture>": 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: <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.
  • 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 — 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).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.