mcpField
P
prediction-market-odds

prediction-market-odds

github.com/gooseworks-aiOther1.3k38 installsUpdated 3d ago
Repository

About prediction-market-odds

A skill for retrieving prediction-market odds and activity through the Dome API. It supports Polymarket and Kalshi data, including market listings, prices, trading activity, and sports markets.

Key features

  1. 01Retrieve Polymarket markets
  2. 02Retrieve Kalshi markets
  3. 03Search markets
  4. 04View Polymarket activity and orders
  5. 05Browse sports markets
  6. 06Read prices as event probabilities

Use cases

  1. 01Check odds for an event
  2. 02Compare prediction-market listings
  3. 03Review recent market trading activity
  4. 04Find sports prediction markets

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gooseworks-ai/goose-skills --skill prediction-market-odds

After installing, type/prediction-market-oddsin Claude Code to confirm it loaded.

Bundled filesskill.meta.json

Details

From the project README

Prediction Market Odds

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Get current odds, prices, and market data from prediction markets like Polymarket and Kalshi.

When to Use

  • User asks about prediction market odds
  • User wants to know probability of an event
  • User asks "what are the odds of [event]?"
  • Research on market sentiment
  • Election or event probability checks

How It Works

Uses the Dome API to aggregate prediction market data from Polymarket and Kalshi.

Usage

Get Polymarket Markets
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/markets","query":{"status":"open"}}'
curl equivalent
curl -X POST "https://api.orth.sh/v1/run" \

  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/markets"}'
Search Markets
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/markets","query":{"search":"election"}}'
Get Kalshi Markets
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/kalshi/markets"}'
Get Polymarket Activity
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/activity"}'
Get Market Orders
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/orders"}'
Get Sports Markets
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/matching-markets/sports"}'
Get Specific Sport Markets
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/matching-markets/sports/nba"}'

Supported Sports

  • nba
  • nfl
  • mlb
  • nhl
  • soccer
  • tennis

Response

Markets Response (/polymarket/markets, /kalshi/markets)

Returns markets array:

  • title (string) - Market question (e.g., "Will Trump nationalize elections?")
  • market_slug (string) - URL-friendly identifier
  • condition_id (string) - Blockchain condition ID
  • start_time / end_time (integer) - Unix timestamps
  • completed_time (integer|null) - Null if still open
  • tags (array) - Category tags (e.g., ["politics", "us election"])
  • volume_1_week / volume_1_month / volume_1_year / volume_total (number) - Trading volume in USD
  • side_a / side_b (object) - id and label (typically "Yes"/"No")
  • winning_side (object|null) - Null if unresolved
  • image (string) - Market thumbnail URL
Activity Response (/polymarket/activity)

Returns activities array:

  • title (string) - Market title
  • market_slug (string) - Market identifier
  • side (string) - Trade side: BUY, SELL, or MERGE
  • shares (integer) - Raw share amount
  • shares_normalized (number) - Human-readable share amount
  • price (number) - Trade price (0-1, represents probability)
  • timestamp (integer) - Unix timestamp of the trade
  • user (string) - Wallet address of the trader
  • tx_hash (string) - Blockchain transaction hash

Examples

User: "What are the odds on Polymarket right now?"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/markets","query":{"status":"open"}}'

User: "Show me Kalshi prediction markets"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/kalshi/markets"}'

User: "What's happening in prediction markets?"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/polymarket/activity"}'

User: "Any sports betting markets?"

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"dome","path":"/matching-markets/sports"}'

Understanding Odds

  • Prices are shown as decimals (0.65 = 65% probability)
  • "Yes" price = probability market thinks event will happen
  • Higher volume = more confidence/liquidity
  • Prices change based on trading activity

Error Handling

  • 400 - search requires status parameter (open or closed) — always include both
  • 401 - Invalid API key
  • 429 - Rate limit — wait and retry
  • Empty markets array means no markets match the search term
  • Activity endpoint returns recent trades globally — no filters required

Tips

  • Check multiple markets for the same event
  • Volume indicates market confidence
  • Recent activity shows sentiment shifts
  • Polymarket focuses on politics/world events, Kalshi on finance/weather

Comments

Markdown supported