Skills polymarket
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/antonelli182/sports-skills-polymarket" ~/.claude/skills/openclaw-skills-polymarket && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/antonelli182/sports-skills-polymarket" ~/.openclaw/skills/openclaw-skills-polymarket && rm -rf "$T"
skills/antonelli182/sports-skills-polymarket/SKILL.mdPolymarket — Sports Prediction Markets
Before writing queries, consult
references/api-reference.md for sport codes, command parameters, and price format.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills polymarket search_markets --sport=nba --sports_market_types=moneyline sports-skills polymarket get_todays_events --sport=epl sports-skills polymarket search_markets --sport=epl --query="Leeds" --sports_market_types=moneyline sports-skills polymarket get_sports_config
Python SDK (alternative):
from sports_skills import polymarket polymarket.search_markets(sport='nba', sports_market_types='moneyline') polymarket.get_todays_events(sport='epl') polymarket.search_markets(sport='epl', query='Leeds') polymarket.get_sports_config()
CRITICAL: Before Any Query
CRITICAL: Before calling any market endpoint, verify:
- The
parameter is always passed tosport
andsearch_markets
for single-game markets.get_todays_events - Prices are probabilities on a 0-1 scale (0.65 = 65%) — no conversion needed.
- For price/orderbook endpoints, use
(CLOB), nottoken_id
(Gamma). Callmarket_id
first to getget_market_details
.clobTokenIds
Without the
sport parameter:
WRONG: search_markets(query="Leeds") → 0 results RIGHT: search_markets(sport='epl', query='Leeds') → returns all Leeds markets
Prerequisites
Core commands (no dependencies, no API keys): All read commands work out of the box.
Trading commands require
py_clob_client:
pip install sports-skills[polymarket]
Additionally requires a configured wallet:
export POLYMARKET_PRIVATE_KEY=0x...
Workflows
Find Single-Game Markets for a Sport
(or epl, nfl, bun, etc.)search_markets --sport=nba- Each market includes outcomes with prices (price = probability).
- For detailed prices, use
.get_market_prices --token_id=<clob_token_id>
Today's Events for a League
— returns events sorted by start date.get_todays_events --sport=epl- Each event includes nested markets (moneyline, spreads, totals, props).
- Pick a market, get
from outcomes, thenclob_token_id
.get_market_prices
Live Odds Check
search_markets --sport=nba --query="Lakers" --sports_market_types=moneyline
for live CLOB prices.get_market_prices --token_id=<id>- Present probabilities.
Price Trend Analysis
- Find market via
.search_markets --sport=nba - Get
from the outcomes.clob_token_id get_price_history --token_id=<id> --interval=1w- Present price movement.
Commands
| Command | Description |
|---|---|
| Available sport codes |
| Today's events for a league |
| Find markets by sport, keyword, and type |
| Browse all sports markets |
| Browse sports events |
| List series (leagues) |
| Single market details |
| Single event details |
| Current CLOB prices |
| Full order book |
| Historical prices |
| Most recent trade |
See
references/api-reference.md for full parameter lists and return shapes.
Examples
Example 1: Tonight's NBA favorites User says: "Who's favored in tonight's NBA games?" Actions:
- Call
Result: Each matchup with implied win probabilities (price = probability)search_markets(sport='nba', sports_market_types='moneyline')
Example 2: Team-specific odds User says: "Show me Leeds vs Man City odds" Actions:
- Call
Result: Leeds moneyline market with outcome pricessearch_markets(sport='epl', query='Leeds', sports_market_types='moneyline')
Example 3: Today's EPL events User says: "What EPL matches are on today?" Actions:
- Call
Result: Today's EPL events with nested markets (moneyline, spreads, totals, props)get_todays_events(sport='epl')
Example 4: League winner futures User says: "Who will win the Premier League?" Actions:
- Call
— returns futuressearch_markets(query='Premier League') - Sort results by Yes outcome price descending Result: Top contenders ranked by win probability
Example 5: Bundesliga odds User says: "Show me Bundesliga odds for Dortmund vs Bayern" Actions:
- Call
Result: Dortmund/Bayern moneyline market with outcome pricessearch_markets(sport='bun', query='Dortmund', sports_market_types='moneyline')
Commands that DO NOT exist — never call these
— does not exist. Usecli_search_markets
instead.search_markets— does not exist. Usecli_sports_list
instead.get_sports_config/get_market_odds/get_odds— prices ARE probabilities. Useget_current_odds
.get_market_prices(token_id=...)— the price IS the implied probability.get_implied_probability— useget_markets
(browse) orget_sports_markets
(search).search_markets— this is a football-data command, not polymarket.get_team_schedule
If a command is not listed in
references/api-reference.md, it does not exist.
Troubleshooting
Error:
search_markets returns 0 results
Cause: The sport parameter is missing — without it, search only checks high-volume markets and misses single-game events
Solution: Always pass sport='<code>' to search_markets. Check references/api-reference.md for valid sport codes
Error:
get_market_prices fails or returns wrong data
Cause: market_id (Gamma) was used instead of token_id (CLOB)
Solution: Call get_market_details(market_id=<id>) first to get the CLOB clobTokenIds, then use those with get_market_prices
Error: Prices seem stale or unchanged Cause: Low-liquidity market — may have wide spreads and infrequent trades Solution: Check
get_last_trade_price(token_id=<id>) for the most recent actual trade price
Error: Trading commands fail Cause:
py_clob_client is not installed or wallet is not configured
Solution: Run pip install sports-skills[polymarket] and set POLYMARKET_PRIVATE_KEY environment variable