The Odds API

live SportsMarkets

Sportsbook odds across 70+ books, 30+ leagues (NFL, NBA, MLB, NHL, soccer, MMA, golf, tennis, esports, cricket). Free tier 500 req/month.

6 tools
0ms auth
free tier 50 calls/day
🔑 Authentication

Platform key handled by Pipeworx. Or BYO: ?_apiKey=<key>.

Config with credentials
{
  "mcpServers": {
    "pipeworx-odds-api": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gateway.pipeworx.io/odds-api/mcp?_apiKey=your_key"
      ]
    }
  }
}

Tools

list_sports

List available sports/leagues. By default returns only in-season; pass all=true to include out-of-season.

No parameters required.

Try it
get_odds

Current odds for upcoming + live events in a league. Each market type costs 1 quota credit per region per call — pick markets carefully.

No parameters required.

Try it
get_event_odds

Odds for a single event — allows richer markets (player props, alt lines). Higher quota cost per call.

No parameters required.

Try it
get_scores

Live + recent final scores. Costs 2 requests per call.

No parameters required.

Try it
get_events

Upcoming + live events for a league (without odds — useful to discover event IDs).

No parameters required.

Try it
odds_api_quota

Monthly request credits left and used on the key serving this call, read from The Odds API usage headers. Says whether the odds and scores tools can return data right now and how large the plan is.

No parameters required.

Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/odds-api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/odds-api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_sports","arguments":{}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("list_sports", {});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("sportsbook odds across 70+ books, 30+ leagues (nfl, nba, mlb, nhl, soccer, mma, golf, tennis, esports, cricket)");