Documentation menu
nfl_odds
Pro tierSportsbook odds
Use for current NFL sportsbook market questions. Returns one compact game block with each bookmaker's moneyline, spread, and total line/prices plus one freshness block. Use nfl_schedule for dates, scores, weather, and historical closing lines. This tool reads the latest ingested snapshot; it does not place bets, recommend picks, or guarantee that a displayed price is still available.
- Minimum tier
- Pro
- Data coverage
- Varies by query
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
game_id | string | Optional | Exact NFL game ID, usually discovered with nfl_schedule. |
team | string | Optional | Team abbreviation; matches home or away games. |
season | integer | Optional | NFL season year. |
week | integer | Optional | NFL week. |
market | string | Optional | Market family (default all).Options: all, h2h, spreads, totals |
bookmaker | string | Optional | Optional lowercase bookmaker key. |
limit | integer | Optional | Max grouped games per page (default 100). |
offset | integer | Optional | Grouped-game offset for pagination. |
plan_id | string | Optional | Optional analysis correlation ID returned by nfl_plan. Pass the same plan_id to every tool call that belongs to that analysis. |
Example request
A Model Context Protocol tools/call over Streamable HTTP. Replace YOUR_API_KEY with a key from your dashboard. This is a low-level request example; MCP clients manage protocol initialization and browser OAuth for you.
curl -X POST https://mcp.nflmcp.com/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "nfl_odds",
"arguments": {
"season": 2026,
"week": 3,
"market": "spreads",
"limit": 10
}
}
}'Example response
Excerpt · lists trimmed{
"games": [
{
"game_id": "2026_03_CAR_CLE",
"commence_time": "2026-09-27 17:00:00",
"away_team": "CAR",
"home_team": "CLE",
"books": [
{
"bookmaker": "bet365",
"markets": {
"spread": {
"away": {
"line": -2.5,
"odds": -115
},
"home": {
"line": 2.5,
"odds": -105
}
}
},
"updated_at": "2026-09-25 01:55:43"
},
{
"bookmaker": "betmgm",
"markets": {
"spread": {
"away": {
"line": -2.5,
"odds": -115
},
"home": {
"line": 2.5,
"odds": -105
}
}
},
"updated_at": "2026-09-25 01:46:03"
},
{
"bookmaker": "betonline",
"markets": {
"spread": {
"away": {
"line": -2.5,
"odds": -116
},
"home": {
"line": 2.5,
"odds": -104
}
}
},
"updated_at": "2026-09-25 02:04:29"
}
]
},
{
"game_id": "2026_03_CIN_PIT",
"commence_time": "2026-09-27 17:00:00",
"away_team": "CIN",
"home_team": "PIT",
"books": [
{
"bookmaker": "bet365",
"markets": {
"spread": {
"away": {
"line": -3.5,
"odds": -110
},
"home": {
"line": 3.5,
"odds": -110
}
}
},
"updated_at": "2026-09-25 01:55:43"
},
{
"bookmaker": "betmgm",
"markets": {
"spread": {
"away": {
"line": -3.5,
"odds": -108
},
"home": {
"line": 3.5,
"odds": -110
}
}
},
"updated_at": "2026-09-25 01:50:33"
},
{
"bookmaker": "betonline",
"markets": {
"spread": {
"away": {
"line": -3.5,
"odds": -105
},
"home": {
"line": 3.5,
"odds": -115
}
}
},
"updated_at": "2026-09-25 02:04:29"
}
]
},
{
"game_id": "2026_03_HOU_IND",
"commence_time": "2026-09-27 17:00:00",
"away_team": "HOU",
"home_team": "IND",
"books": [
{
"bookmaker": "bet365",
"markets": {
"spread": {
"away": {
"line": -1.5,
"odds": -115
},
"home": {
"line": 1.5,
"odds": -105
}
}
},
"updated_at": "2026-09-25 01:55:43"
},
{
"bookmaker": "betmgm",
"markets": {
"spread": {
"away": {
"line": -1.5,
"odds": -110
},
"home": {
"line": 1.5,
"odds": -108
}
}
},
"updated_at": "2026-09-25 01:55:43"
},
{
"bookmaker": "betonline",
"markets": {
"spread": {
"away": {
"line": -1.5,
"odds": -115
},
"home": {
"line": 1.5,
"odds": -105
}
}
},
"updated_at": "2026-09-25 02:04:29"
}
]
}
],
"count": 10,
"book_count": 116,
"has_more": true,
"next_offset": 10,
"freshness": {
"observed_at": "2026-09-25 02:05:16.474032",
"provider_updated_at": "2026-09-25 02:04:43",
"live": false
}
}Saved reference output, not a live production result. Query your authenticated connection for current data and read its coverage, freshness, and missing-result hints. Understand the limitations.