/kalshi
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about
$ npx -y skills add machina-sports/sports-skills --skill kalshi --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/kalshi
Context preview
The summary Claude sees to decide when to auto-load this skill.
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about
SKILL.md
kalshi.SKILL.mdname: kalshi
description: |
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts.
Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes.
Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead.
license: MIT
metadata:
author: machina-sports
version: "0.2.0"
Kalshi — Prediction Markets
Before writing queries, consult `references/api-reference.md` for sport codes, series tickers, and command parameters.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills kalshi search_markets --sport=nba
sports-skills kalshi get_todays_events --sport=nba
sports-skills kalshi get_sports_config
sports-skills kalshi get_markets --series_ticker=KXNBA --status=open
Python SDK (alternative):
from sports_skills import kalshi
kalshi.search_markets(sport='nba')
kalshi.search_markets(sport='nba', query='Lakers')
kalshi.get_todays_events(sport='nba')
kalshi.get_sports_config()
kalshi.get_markets(series_ticker="KXNBA", status="open")
CRITICAL: Before Any Query
CRITICAL: Before calling any market endpoint, verify:
- The `sport` parameter is always passed to `search_markets` and `get_todays_events` for single-game markets.
- Prices are on a 0-100 integer scale (20 = 20% implied probability) — do not treat as American odds.
- `status="open"` is used when querying markets to exclude settled/closed markets.
Without the `sport` parameter:
WRONG: search_markets(query="Leeds") → 0 results
RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds markets
Important Notes
- **On Kalshi, "Football" = NFL.** For football/soccer (EPL, La Liga, etc.), use sport codes: `epl`, `ucl`, `laliga`, `bundesliga`, `seriea`, `ligue1`, `mls`, `worldcup`.
- **Prices are probabilities.** A `last_price` of 20 means 20% implied probability. Scale is 0-100 (not 0-1 like Polymarket).
- **Always use `status="open"`** when querying markets, otherwise results include settled/closed markets.
- **Shared interface with Polymarket:** `search_markets(sport=...)`, `get_todays_events(sport=...)`, and `get_sports_config()` work the same way on both platforms.
Workflows
Sport Market Search (Recommended)
1. `search_markets --sport=nba` — finds all open NBA markets. 2. Optionally add `--query="Lakers"` to filter by keyword. 3. Results include yes_bid, no_bid, volume for each market.
Today's Events
1. `get_todays_events --sport=nba` — open events with nested markets. 2. Present events with prices (price = implied probability, 0-100 scale).
Futures Market Check
1. `get_markets --series_ticker=<ticker> --status=open` 2. Sort by `last_price` descending. 3. Present top contenders with probability and volume.
Market Price History
1. Get market ticker from `search_markets --sport=nba`. 2. `get_market_candlesticks --series_ticker=<s> --ticker=<t> --start_ts=<start> --end_ts=<end> --period_interval=60` 3. Present OHLC with volume.
Commands
See `references/api-reference.md` for the full command list with parameters.
| Command | Description | |---|---| | `get_sports_config` | Available sport codes and series tickers | | `get_todays_events` | Today's events for a sport with nested markets | | `search_markets` | Find markets by sport and/or keyword | | `get_esports_odds` | Esports markets (cs2/lol/dota2): prices in cents (0-100) plus `implied_probability` (0-1) and `decimal_odds` | | `get_markets` | Market listing (raw API) | | `get_event` | Event details | | `get_market` | Market details | | `get_trades` | Recent trades | | `get_market_candlesticks` | OHLC price history |
Examples
Example 1: NBA market search User says: "What NBA markets are on Kalshi?" Actions: 1. Call `search_markets(sport='nba')` Result: All open NBA markets with yes/no prices and volume
Example 2: EPL game markets User says: "Show me Leeds vs Man City odds on Kalshi" Actions: 1. Call `search_markets(sport='epl', query='Leeds')` Result: Leeds EPL markets across all EPL series with prices and volume
Example 3: Today's EPL events User says: "What EPL games are available on Kalshi?" Actions: 1. Call `get_todays_events(sport='epl')` Result: Today's EPL events with nested markets
Example 4: Champions League futures User says: "Who will win the Champions League?" Actions: 1. Call `search_markets(sport='ucl')` or `get_markets(series_ticker="KXUCL", status="open")` 2. Sort by `last_price` descending (price = implied probability) Result: Top UCL contenders with `yes_sub_title`, `last_price` (%), and volume
Example 5: Market price history User says: "Show me the price history for this NBA game" Actions: 1. Get market ticker from `search_markets(sport='nba')` 2. Call `get_market_candlesticks(series_ticker="KXNBA", ticker="...", start_ts=..., end_ts=..., period_interval=60)` Result: OHLC price data with volume
Commands that DO NOT exist — never call these
- ~~`get_odds`~~ — does not exist. Use `search_markets` or `get_markets` to find market prices.
- ~~`get_team_schedule`~~ — does not exist. Kalshi has markets, not schedules. Use the sport-specific skill for schedules.
- ~~`get_scores`~~ / ~~`get_results`~~ — does not exist. Kalshi is a prediction market. Use the sport-specific skill.
If
Read more
name: kalshi description: | Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead. license: MIT metadata: author: machina-sports version: "0.2.0"
Kalshi — Prediction Markets
Before writing queries, consult `references/api-reference.md` for sport codes, series tickers, and command parameters.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills kalshi search_markets --sport=nba sports-skills kalshi get_todays_events --sport=nba sports-skills kalshi get_sports_config sports-skills kalshi get_markets --series_ticker=KXNBA --status=open
Python SDK (alternative):
from sports_skills import kalshi kalshi.search_markets(sport='nba') kalshi.search_markets(sport='nba', query='Lakers') kalshi.get_todays_events(sport='nba') kalshi.get_sports_config() kalshi.get_markets(series_ticker="KXNBA", status="open")
CRITICAL: Before Any Query
CRITICAL: Before calling any market endpoint, verify:
- The `sport` parameter is always passed to `search_markets` and `get_todays_events` for single-game markets.
- Prices are on a 0-100 integer scale (20 = 20% implied probability) — do not treat as American odds.
- `status="open"` is used when querying markets to exclude settled/closed markets.
Without the `sport` parameter:
WRONG: search_markets(query="Leeds") → 0 results RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds markets
Important Notes
- **On Kalshi, "Football" = NFL.** For football/soccer (EPL, La Liga, etc.), use sport codes: `epl`, `ucl`, `laliga`, `bundesliga`, `seriea`, `ligue1`, `mls`, `worldcup`.
- **Prices are probabilities.** A `last_price` of 20 means 20% implied probability. Scale is 0-100 (not 0-1 like Polymarket).
- **Always use `status="open"`** when querying markets, otherwise results include settled/closed markets.
- **Shared interface with Polymarket:** `search_markets(sport=...)`, `get_todays_events(sport=...)`, and `get_sports_config()` work the same way on both platforms.
Workflows
Sport Market Search (Recommended)
1. `search_markets --sport=nba` — finds all open NBA markets. 2. Optionally add `--query="Lakers"` to filter by keyword. 3. Results include yes_bid, no_bid, volume for each market.
Today's Events
1. `get_todays_events --sport=nba` — open events with nested markets. 2. Present events with prices (price = implied probability, 0-100 scale).
Futures Market Check
1. `get_markets --series_ticker=<ticker> --status=open` 2. Sort by `last_price` descending. 3. Present top contenders with probability and volume.
Market Price History
1. Get market ticker from `search_markets --sport=nba`. 2. `get_market_candlesticks --series_ticker=<s> --ticker=<t> --start_ts=<start> --end_ts=<end> --period_interval=60` 3. Present OHLC with volume.
Commands
See `references/api-reference.md` for the full command list with parameters.
| Command | Description | |---|---| | `get_sports_config` | Available sport codes and series tickers | | `get_todays_events` | Today's events for a sport with nested markets | | `search_markets` | Find markets by sport and/or keyword | | `get_esports_odds` | Esports markets (cs2/lol/dota2): prices in cents (0-100) plus `implied_probability` (0-1) and `decimal_odds` | | `get_markets` | Market listing (raw API) | | `get_event` | Event details | | `get_market` | Market details | | `get_trades` | Recent trades | | `get_market_candlesticks` | OHLC price history |
Examples
Example 1: NBA market search User says: "What NBA markets are on Kalshi?" Actions: 1. Call `search_markets(sport='nba')` Result: All open NBA markets with yes/no prices and volume
Example 2: EPL game markets User says: "Show me Leeds vs Man City odds on Kalshi" Actions: 1. Call `search_markets(sport='epl', query='Leeds')` Result: Leeds EPL markets across all EPL series with prices and volume
Example 3: Today's EPL events User says: "What EPL games are available on Kalshi?" Actions: 1. Call `get_todays_events(sport='epl')` Result: Today's EPL events with nested markets
Example 4: Champions League futures User says: "Who will win the Champions League?" Actions: 1. Call `search_markets(sport='ucl')` or `get_markets(series_ticker="KXUCL", status="open")` 2. Sort by `last_price` descending (price = implied probability) Result: Top UCL contenders with `yes_sub_title`, `last_price` (%), and volume
Example 5: Market price history User says: "Show me the price history for this NBA game" Actions: 1. Get market ticker from `search_markets(sport='nba')` 2. Call `get_market_candlesticks(series_ticker="KXNBA", ticker="...", start_ts=..., end_ts=..., period_interval=60)` Result: OHLC price data with volume
Commands that DO NOT exist — never call these
- ~~`get_odds`~~ — does not exist. Use `search_markets` or `get_markets` to find market prices.
- ~~`get_team_schedule`~~ — does not exist. Kalshi has markets, not schedules. Use the sport-specific skill for schedules.
- ~~`get_scores`~~ / ~~`get_results`~~ — does not exist. Kalshi is a prediction market. Use the sport-specific skill.
If
Open-source agent skills for live sports data and prediction markets. Built for the Agent Skills spec. Works with sportsclaw, OpenClaw, Claude Code, Cursor, Copilot, Gemini CLI, Hermes Agent, and every major AI agent. Zero API keys. Zero signup.
Other skills on sports-skills.
- /betting
Betting analysis — odds conversion, de-vigging, edge detection, Kelly criterion, arbitrage detection, parlay analysis, and line movement. Pure computation, no API calls. Works with odds from any source: ESPN (American odds), Polymarket (decimal probabilities), Kalshi (integer
Open skill - /cbb-data
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, team/player stats, and news for Division I men's basketball, plus official D2/D3
Open skill - /cfb-data
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, team/player stats, and news for FBS, plus official FCS scoreboards, NCAA game detail with
Open skill - /cricket-data
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 registry (Cricsheet, ODC-BY 1.0). Zero config, no API keys. Use when: user asks about
Open skill - /esports
Esports data — Dota 2 (OpenDota) and League of Legends esports (Leaguepedia). Pro matches, tournaments, teams, and structured LoL competitive data. Use when: user asks about Dota 2 pro matches/teams/leagues, or LoL esports tournaments/rosters/results. Don't use when: user asks
Open skill - /fastf1
Formula 1 data — race schedules, results, lap timing, driver and team info. Powered by the FastF1 library. Covers F1 sessions, qualifying, practice, race results, sector times, tire strategy. Use when: user asks about F1 race results, qualifying, lap times, driver stats, team
Open skill

