Use with Claude Code, Codex & AI Agents

A fresh agent session, given nothing but this page, should be able to discover and use SportWizzard's live sports betting data with no human help. Everything below is copy-paste — real endpoints, real responses, verified this session.

Base URL & authentication

Base URL  →  https://api.sportwizzard.com

Every endpoint lives under /api/v1 and returns one consistent envelope: { success, data, nextCursor, meta }. Authenticate with the X-Api-Key header — Authorization: Bearer <api_key> also works, if that's what your tooling defaults to. Reference endpoints (/leagues, /seasons, /sportsbooks, /teams, /players, /markets, /status, /events) require no key at all.

Current state (pre-billing, transitional): billing enforcement hasn't flipped on yet, so every endpoint — including odds, stats, edges, and arbitrage — is currently reachable with no key. Send one anyway if you have it; don't build automation that assumes anonymous access stays open. Get a key at your account (API Keys tab, requires sign-in).

The endpoints to start with

1. Discover what's live

Leagues are seasonal and rotate — call this before assuming a league has no data.

curl "https://api.sportwizzard.com/api/v1/leagues"
# {"success":true,"data":["mma","dota2","mlb","brazil-sa","lol","fifa-world-cup",
#   "tennis","wnba","cs2","pga-tour","mls"],"meta":{"count":11}}

A league not in that list (e.g. nba/nfl outside their season) still returns 200 from /odds//events//edges — with a valid, empty data: []. That means "out of season," not "broken" or "unsupported." Those responses also carry a meta.note explaining which requested league has no season and listing the active ones — the hint travels with the response, so you don't have to guess.

2. List events for a league

curl "https://api.sportwizzard.com/api/v1/events?league=mlb&limit=3"

3. Pull live odds

Scope with any of league/sportsbook/market/event_id/player_id/team_id — unscoped paginates hard.

curl "https://api.sportwizzard.com/api/v1/odds?league=mlb&limit=5" \
  -H "X-Api-Key: sw_live_your_api_key_here"

4. DFS edges & arbitrage (derived signals)

Soft DFS lines vs. sharp-book no-vig fair value — a screening signal to verify yourself, not a guaranteed +EV bet.

curl "https://api.sportwizzard.com/api/v1/edges?min_edge=0.02&limit=5" \
  -H "X-Api-Key: sw_live_your_api_key_here"

curl "https://api.sportwizzard.com/api/v1/arbitrage?min_profit=0.01&limit=5" \
  -H "X-Api-Key: sw_live_your_api_key_here"

5. Bootstrap a full local copy

curl --compressed "https://api.sportwizzard.com/api/v1/snapshot" \
  -H "X-Api-Key: sw_live_your_api_key_here" -o snapshot.json
# then stay in sync: /api/v1/odds/updated?since={last-sync-timestamp}

MCP server setup

Model Context Protocol

20 read-only tools over the same v1 API

Live odds, DFS edges, cross-book arbitrage, events, box-score stats, and reference data — as MCP tools instead of raw HTTP. Open source: github.com/adamruehle/sportwizzard-mcp.

Hosted (recommended, no install): Streamable HTTP at mcp.sportwizzard.com, bearer-key auth. Verified live this session — a request with no key gets a clear JSON-RPC error pointing at /account, not a connection failure.

claude mcp add --transport http sportwizzard https://mcp.sportwizzard.com/mcp \
  --header "Authorization: Bearer sw_live_your_api_key_here"

From source (stdio): no clone/build step needed — npx installs straight from GitHub:

npx -y github:adamruehle/sportwizzard-mcp

The shorter npx -y sportwizzard-mcp (no github: prefix) will work once published to npm — as of this page's last verification the package was not yet on the registry (404); the form above works today regardless.

.mcp.json — hosted (recommended)
{
  "mcpServers": {
    "sportwizzard": {
      "type": "http",
      "url": "https://mcp.sportwizzard.com/mcp",
      "headers": {
        "Authorization": "Bearer sw_live_..."
      }
    }
  }
}
.mcp.json — from source (stdio)
{
  "mcpServers": {
    "sportwizzard": {
      "command": "npx",
      "args": ["-y", "github:adamruehle/sportwizzard-mcp"],
      "env": { "SPORTWIZZARD_API_KEY": "sw_live_..." }
    }
  }
}
Try before you have a key
{ "env": { "SPORTWIZZARD_MOCK": "1" } }

Ground rules for agents

Don't hardcode a league list — resolve it from /api/v1/leagues at call time. Odds rows are flat and self-describing (one row per sportsbook × market × selection) — group by eventId to reconstruct a board, and filter on side/market/marketSubtype rather than parsing the human-readable selection string. /edges and /arbitrage are convenience signals computed from the same odds data, not guarantees — relay that caveat if you surface them to a user. Cursors (nextCursor) are opaque — pass them back verbatim.

Further reading

AGENTS.md (this content, plain text) · llms-full.txt (every endpoint, full example requests/responses) · openapi.json (machine-readable spec, source of truth for response shapes) · Interactive reference (try-it console) · Human-readable docs.

Get an API key

Free tier includes 5,000 credits/month. Data endpoints work with no key at all today (pre-billing) — a key is still recommended.