Documentation menu
nfl_query
Pro tierCustom SQL
LAST RESORT: Execute raw SQL only when nfl_search_plays, nfl_team_stats, nfl_player_stats, and nfl_compare cannot answer the question. Requires calling nfl_schema first. Read-only SELECT only. 500 row cap. 10s timeout. Traps: player names in `plays` are short form ('P.Mahomes'); `player_stats` uses full display names. `schedules.total` is ACTUAL points scored — the betting line is `total_line`. `officials` joins to other tables via the standard `game_id`.
- Minimum tier
- Pro
- Data coverage
- Varies by query
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sql | string | Required | A SQL SELECT query. |
max_rows | integer | Optional | Max rows to return (default 100, max 500)Default: 100 |
Example request
A Model Context Protocol tools/call over Streamable HTTP. Replace YOUR_API_KEY with a key from your dashboard.
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_query",
"arguments": {
"sql": "SELECT season, COUNT(*) AS plays FROM plays WHERE season = 2024 GROUP BY season",
"max_rows": 5
}
}
}'Example response
{
"rows": [
{
"season": 2024,
"plays": 46779
}
],
"row_count": 1,
"truncated": false
}