Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets.

MITAuto-check passedBusiness, Finance & HR

Install Markets

skills CLI
$ npx skills add machina-sports/sports-skills --skill markets -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install machina-sports/sports-skills markets --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/machina-sports/sports-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/markets .claude/skills/markets && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
markets
GitHub stars
243
Token cost
~2.2k tokens
SKILL.md length
869 words
Files
2 (incl. references)
Skills in repo
23
Repo updated
First seen
Licence
MIT

At a glance

Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets.

  • Works in 4 steps: Get the ESPN event ID:… → Compare odds: compare_odds --sport=nba… → If arbitrage detected, response includes… → …
  • : user wants to see prediction market odds alongside ESPN game schedules
  • SKILL.md covers Quick Start, CRITICAL: Before Any Query, Important Notes and Workflows, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Markets is an agent skill from machina-sports/sports-skills. Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets. Unified dashboards, odds comparison, entity search, and bet evaluation across platforms. Use when: user wants to see prediction market odds alongside ESPN game schedules, compare odds across platforms, search for a team/player on Kalshi or Polymarket, check for arbitrage between ESPN odds and prediction markets, or evaluate a specific game's market value. Don't use when: user wants raw prediction market data…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/api-reference.md`).

It sits in Business, Finance & HR, covering Stock and market analysis. It works with Kalshi and Polymarket. The repository describes itself as: Open-source agent skills for live sports data and prediction markets. Football, F1, Kalshi, Polymarket. Zero API keys. SKILL.md format. The licence is MIT.

When your agent uses it

  • : user wants to see prediction market odds alongside ESPN game schedules
  • Compare odds across platforms
  • Search for a team/player on Kalshi
  • Check for arbitrage between ESPN odds and prediction markets

Example prompts

  • “s market value. Don”
  • “Use the markets skill to market orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets”
  • “/markets”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Get the ESPN event ID: get_sport_schedule --sport=nba
  2. Compare odds: compare_odds --sport=nba --event_id=
  3. If arbitrage detected, response includes allocation percentages and ROI — computed from reference prices (price_basis: "reference"), so…
  4. sources and completeness say which venues actually priced this game; a provider error is reported as error, not as "no markets".

What it can do on your machine

Read from SKILL.md and the folder at commit 09eb7e8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Markets loads about 2.2k tokens when it runs, and up to ~3.8k if it reads all its reference files. Until then it costs about 178 tokens; SKILL.md has 869 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~178
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from machina-sports/sports-skills at commit 09eb7e8, republished under its MIT licence (© machina-sports). 869 words, ~2,243 tokens.

Download SKILL.mdSave it as .claude/skills/markets/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
markets
description
Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets. Unified dashboards, odds comparison, entity search, and bet evaluation across platforms. Use when: user wants to see prediction market odds alongside ESPN game schedules, compare odds across platforms, search for a team/player on Kalshi or Polymarket, check for arbitrage between ESPN odds and prediction markets, or evaluate a specific game's market value. Don't use when: user wants raw prediction market data without ESPN context — use polymarket or kalshi directly. For pure odds math (conversion, de-vigging, Kelly) — use betting. For live scores without market data — use the sport-specific skill.
license
MIT
metadata.author
machina-sports
metadata.version
0.3.0

Markets Orchestration

Bridges ESPN live schedules (NBA, NFL, MLB, NHL, WNBA, CFB, CBB) with Kalshi and Polymarket prediction markets. Before writing queries, consult references/api-reference.md for supported sport codes, command parameters, and price normalization formats.

Quick Start

bash
sports-skills markets get_todays_markets --sport=nba
sports-skills markets search_entity --query="Lakers" --sport=nba
sports-skills markets compare_odds --sport=nba --event_id=401234567
sports-skills markets get_sport_markets --sport=nfl
sports-skills markets get_sport_schedule --sport=nba
sports-skills markets normalize_price --price=0.65 --source=polymarket
sports-skills markets evaluate_market --sport=nba --event_id=401234567
sports-skills markets match_markets --sport=mlb --date=2026-06-06
sports-skills markets get_market_price --venue=kalshi --ticker=KXMENWORLDCUP-26-FR
sports-skills markets get_price_history --venue=kalshi --ticker=KXMENWORLDCUP-26-FR --interval=1d

Python SDK:

python
from sports_skills import markets

markets.get_todays_markets(sport="nba")
markets.search_entity(query="Lakers", sport="nba")
markets.compare_odds(sport="nba", event_id="401234567")
markets.get_sport_markets(sport="nfl")
markets.get_sport_schedule(sport="nba", date="2025-02-26")
markets.normalize_price(price=0.65, source="polymarket")
markets.evaluate_market(sport="nba", event_id="401234567")
markets.match_markets(sport="mlb", date="2026-06-06")
markets.get_market_price(venue="kalshi", ticker="KXMENWORLDCUP-26-FR", at_time="2026-05-01T12:00:00+00:00")
markets.get_price_history(venue="polymarket", token_id="<token_id>", interval="1h")

CRITICAL: Before Any Query

CRITICAL: Before calling any orchestration command, verify:

  • A sport code is provided for sport-aware commands (get_todays_markets, compare_odds, get_sport_markets, evaluate_market).
  • Price sources are identified correctly before normalization: espn = American odds, polymarket = 0-1 probability, kalshi = 0-100 integer.

Important Notes

  • Sport context is passed through. --sport=nba maps automatically to the correct Polymarket sport code and Kalshi series ticker.
  • Both platforms use sport-aware search. Polymarket uses sport → series_id; Kalshi uses KXNBA, KXNFL, etc.
  • Prices are normalized. Everything is converted to implied probability for comparison.

Workflows

Today's NBA Dashboard
bash
sports-skills markets get_todays_markets --sport=nba

Returns each game with ESPN info, DraftKings odds, matching Kalshi markets, and matching Polymarket markets.

Find Arb on a Specific Game
  1. Get the ESPN event ID: get_sport_schedule --sport=nba
  2. Compare odds: compare_odds --sport=nba --event_id=<id>
  3. If arbitrage detected, response includes allocation percentages and ROI — computed from reference prices (price_basis: "reference"), so confirm both legs on each venue's order book before trading it.
  4. sources and completeness say which venues actually priced this game; a provider error is reported as error, not as "no markets".
Full Bet Evaluation
  1. evaluate_market --sport=nba --event_id=<id> --outcome=0 --fee_per_contract=<dollars per $1 contract>
  2. Verifies the market is this game's full-game winner market for the chosen side, then reads the ask off the order book
  3. Pipes ask + fee through betting.evaluate_bet: devig → edge → Kelly
  4. Returns fair probability, edge, EV, Kelly fraction, and recommendation

Without fee_per_contract the ask is reported but evaluation is null — the net numbers are refused rather than assumed free. A ticker or token_id that names another team, another date, or a derivative (first-half, spread) market is refused, not substituted. Fees are not currently settable via the CLI; use the Python wrapper (markets.evaluate_market(..., fee_per_contract=...)).

Same Game on Both Venues
  1. match_markets --sport=mlb --date=2026-06-06
  2. Each match pairs the Kalshi event (with market tickers) and the Polymarket event (with moneyline token IDs) for the same game — joined deterministically on date + team codes, fuzzy title match as fallback.
  3. Feed kalshi.market_tickers[i] and polymarket.markets[i].token_ids[j] straight into get_market_price to compare prices.
Price Movement Over Time
  1. get_market_price --venue=kalshi --ticker=<ticker> --at_time=2026-05-01 for a single point-in-time price (both yes/no sides, 0-1).
  2. get_price_history --venue=kalshi --ticker=<ticker> --interval=1d for the full series — same {timestamp, price} shape on either venue.
Show full SKILL.md (465 more words)Show less

Examples

Example 1: Today's games with prediction market odds User says: "What NBA games are on today and what are the prediction market odds?" Actions:

  1. Call get_todays_markets(sport="nba") Result: Unified dashboard with each game's ESPN info and Kalshi/Polymarket prices

Example 2: Cross-platform team search User says: "Find me Lakers markets on Kalshi and Polymarket" Actions:

  1. Call search_entity(query="Lakers", sport="nba") Result: All Lakers markets across both exchanges with prices and volume

Example 3: Odds comparison for a specific game User says: "Compare the odds for this Celtics game across ESPN and Polymarket" Actions:

  1. Get event_id from get_sport_schedule(sport="nba")
  2. Call compare_odds(sport="nba", event_id="<id>") Result: Normalized side-by-side comparison with automatic arbitrage check

Example 4: Full market evaluation User says: "Is there edge on the Chiefs game?" Actions:

  1. Get event_id from get_sport_schedule(sport="nfl")
  2. Call evaluate_market(sport="nfl", event_id="<id>") Result: Fair probability, edge percentage, EV, Kelly fraction, and bet recommendation

Example 5: Browse all markets for a sport User says: "Show me all NFL prediction markets" Actions:

  1. Call get_sport_markets(sport="nfl") Result: All open NFL markets across Kalshi and Polymarket

Example 6: Price conversion User says: "Convert a Polymarket price of 65 cents to American odds" Actions:

  1. Call normalize_price(price=0.65, source="polymarket") Result: Common structure with implied probability (0.65), American odds (-185.7), and decimal (1.54)

Example 7: Pair a game across venues User says: "Find the Mets game on both Kalshi and Polymarket" Actions:

  1. Call match_markets(sport="mlb", date="<game date>") Result: The game paired across venues — Kalshi market tickers and Polymarket moneyline token IDs side by side

Example 8: Historical price User says: "What was France's World Cup price a month ago?" Actions:

  1. Call get_market_price(venue="kalshi", ticker="KXMENWORLDCUP-26-FR", at_time="2026-05-03T12:00:00+00:00") Result: Yes/no prices (0-1) as of that moment; use get_price_history for the full curve

Commands that DO NOT exist — never call these

  • get_odds — does not exist. Use compare_odds to see odds across sources.
  • search_markets — does not exist on the markets module. Use search_entity instead.
  • get_schedule — does not exist. Use get_sport_schedule instead.

If a command is not listed in references/api-reference.md, it does not exist.

Troubleshooting

Error: No markets returned for a sport Cause: Sport code may be missing or incorrect Solution: Check references/api-reference.md for valid sport codes. Use the exact code (e.g., nba, epl, laliga)

Error: compare_odds returns no data for an event Cause: The event_id is incorrect or the game has not been indexed yet Solution: Call get_sport_schedule(sport=...) to retrieve the correct event_id first

Error: One source shows warnings in the response Cause: Kalshi or Polymarket is temporarily unavailable Solution: The module returns partial results — use what is available. Retry the unavailable source separately using the kalshi or polymarket skill directly

Error: normalize_price returns unexpected American odds value Cause: Wrong source parameter — Kalshi uses 0-100 integers, Polymarket uses 0-1 decimals Solution: Verify the source. Kalshi price of 65 requires source="kalshi", Polymarket price of 0.65 requires source="polymarket"

© machina-sports, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/markets of machina-sports/sports-skills.

  • SKILL.md
  • references/api-reference.md

Open the folder on GitHubat commit 09eb7e8

Compare with similar skills

Markets next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Markets compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Markets this skillmachina-sports/sports-skills243—~2.2kAutomated safety check: PassMIT
Digital Oraclekomako-workshop/digital-oracle878—~5.9kAutomated safety check: PassMIT
Polymarket Tennislivetennisapi/livetennisapi-mcp152—~3kAutomated safety check: PassMIT
Feedsalsk1992/CloddsBot3k—~1.8kAutomated safety check: PassMIT
Marketsalsk1992/CloddsBot3k—~286Automated safety check: PassMIT
Dr Manhattanguzus/dr-manhattan204—~2kAutomated safety check: PassApache-2.0

Similar skills

  • Digital Oracle

    komako-workshop/digital-oracle

    Answer prediction questions using market trading data, not opinions.

    878 GitHub stars~5.9k tokensUpdated 2 mo ago
    Business, Finance & HRAuto-check passed
  • Polymarket Tennis

    livetennisapi/livetennisapi-mcp

    Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.

    152 GitHub stars~3k tokensUpdated 4 days ago
    Business, Finance & HRAuto-check passed
  • Feeds

    alsk1992/CloddsBot

    Real-time market data feeds from 8 prediction market platforms

    3k GitHub stars~1.8k tokensUpdated 8 days ago
    Business, Finance & HRAuto-check passed
  • Markets

    alsk1992/CloddsBot

    Search and view prediction market data from Polymarket, Kalshi, Manifold, and Metaculus

    3k GitHub stars~286 tokensUpdated 8 days ago
    Business, Finance & HRAuto-check passed
  • Dr Manhattan

    guzus/dr-manhattan

    Trade prediction markets (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) using a unified CCXT-style API.

    204 GitHub stars~2k tokensUpdated 2 mo ago
    Business, Finance & HRAuto-check passed
  • Catalyst Confirmation

    Superior-Trade/superior-skills

    A skill your agent uses when a Polymarket prediction-market thesis rests on an external event — CPI, Fed, elections, court rulings, ETF decisions — and needs market confirmation before committing.

    215 GitHub stars~667 tokensUpdated 1 mo ago
    Business, Finance & HRAuto-check passed

More from machina-sports/sports-skills

All 23 skills in this repo
  • Cbb Data

    machina-sports/sports-skills

    College Basketball (CBB) data via ESPN public endpoints and the NCAA's official endpoints — scores, standings, rosters, schedules, game summaries, play-by-play, win probability, rankings, futures…

    245 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Cfb Data

    machina-sports/sports-skills

    College Football (CFB) data via ESPN public endpoints and the NCAA's official endpoints — scores, standings, rosters, schedules, game summaries, play-by-play, rankings, injuries, futures…

    245 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Cricket Data

    machina-sports/sports-skills

    Cricket data via ESPN public endpoints and Cricsheet open data — live-ish series scoreboards, standings, match summaries and news (ESPN), plus historical ball-by-ball, player stats, and player…

    245 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Fastf1

    machina-sports/sports-skills

    Formula 1 data — race schedules, results, lap timing, driver and team info.

    245 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Golf Data

    machina-sports/sports-skills

    PGA Tour, LPGA, and DP World Tour golf data via ESPN public endpoints — tournament leaderboards, scorecards, season schedules, golfer profiles/overviews, and news.

    245 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Kalshi

    machina-sports/sports-skills

    Kalshi prediction markets — events, series, markets, trades, and candlestick data.

    245 GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Questions about Markets

What does Markets do?

Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets. Markets is an agent skill from machina-sports/sports-skills. Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets.

When should I use Markets?

Markets fits situations like: : user wants to see prediction market odds alongside ESPN game schedules; compare odds across platforms; search for a team/player on Kalshi; check for arbitrage between ESPN odds and prediction markets.

How do I install Markets in Claude Code?

Run `npx skills add machina-sports/sports-skills --skill markets -a claude-code`. Or copy the skill folder (skills/markets in machina-sports/sports-skills) into .claude/skills/markets in your project. Claude Code loads it when a task matches its description.

How do I install Markets in Codex?

Run `npx skills add machina-sports/sports-skills --skill markets -a codex`. Or copy the skill folder (skills/markets in machina-sports/sports-skills) into .agents/skills/markets in your project. Codex loads it when a task matches its description.

Can I use Markets in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add machina-sports/sports-skills --skill markets -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/markets, .gemini/skills/markets, .github/skills/markets and .opencode/skills/markets in your project.

What does Markets need to run?

SKILL.md names no scripts, command-line tools or credentials: Markets is instructions for the agent only. Our summary lists: Python 3.

Does Markets access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Markets safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Markets use?

Markets is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Markets use?

About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.5k tokens, read only when the agent opens those files.

What are the alternatives to Markets?

Skills that share tags, products or a category with Markets: Digital Oracle (komako-workshop/digital-oracle, 878 stars), Polymarket Tennis (livetennisapi/livetennisapi-mcp, 152 stars), Feeds (alsk1992/CloddsBot, 3k stars) and Markets (alsk1992/CloddsBot, 3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Markets?

machina-sports (a GitHub organization) maintains it in machina-sports/sports-skills, which has 243 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 5, 2026.

Source: machina-sports/sports-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.