# Connect any MCP client to FanDuel API

FanDuel API (https://fanduelapi.com) is an independent API for FanDuel Sportsbook data: every player prop and game market FanDuel lists in NBA, NFL, NHL, MLB, college basketball and college football, and soccer (the Premier League, La Liga, Serie A, the Bundesliga, Ligue 1, the Champions League, MLS and international matches), with every match market and yes-only player markets such as anytime goalscorer, shots, shots on target, assists and goalkeeper saves, normalized per player and stat with over and under prices in American and decimal odds, plus every line and price move with its timestamp, over REST, webhooks and MCP with one key. FanDuel API is an independent data service operated by FF API Inc. It is not affiliated with, endorsed by or sponsored by FanDuel.

Source page: https://fanduelapi.com/use-with-any-mcp-client (this is its markdown version, https://fanduelapi.com/use-with-any-mcp-client.md).

## Free offer

- Free plan: 100 credits a month, data delayed 5 minutes, no card. REST and MCP on every plan.
- Real-time data starts at Developer, $49 a month for 10,000 credits.
- Get a free key: https://fanduelapi.com/sign-up?ref=ai-claudebot

## Quickstart

1. Create a free account at https://fanduelapi.com/sign-up?ref=ai-claudebot and create an API key in the dashboard (https://fanduelapi.com/dashboard/keys). Keys start with `fd_`. Store it as `FANDUEL_API_KEY`.
2. Make a first call with curl:

```bash
curl "https://fanduelapi.com/api/v1/props?sport=nba&stat=points&limit=5" \
  -H "Authorization: Bearer $FANDUEL_API_KEY"
```

3. Or with Python (`pip install requests`):

```python
import os
import time
from datetime import datetime, timezone

import requests

BASE = "https://fanduelapi.com/api/v1"
SESSION = requests.Session()
SESSION.headers["Authorization"] = f"Bearer {os.environ['FANDUEL_API_KEY']}"


def get(path, **params):
    """GET one endpoint and return its data list, waiting out rate limits."""
    while True:
        r = SESSION.get(f"{BASE}{path}", params=params, timeout=10)
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", "5")))
            continue
        r.raise_for_status()
        return r.json()["data"]


def price(odds):
    """American odds as text. A suspended market can come back with no price."""
    return "off" if odds is None else f"{odds:+d}"

props = get("/props", sport="nba", stat="points")
for p in props:
    print(f"{p['player']:<26} {str(p['line']):>5}  over {price(p['over_american']):>5}  under {price(p['under_american']):>5}")
```

4. Stay current with `GET /api/v1/changes?since=<cursor>` instead of re-reading every prop. Full reference: https://fanduelapi.com/openapi.json and https://fanduelapi.com/llms-full.txt.

## Use it from Claude (MCP)

Claude Code, with your key read from the shell:

```bash
claude mcp add --transport http --scope user fanduelapi https://fanduelapi.com/api/mcp \
  --header "Authorization: Bearer $FANDUEL_API_KEY"
```

Claude on the web or desktop: Settings, Connectors, Add custom connector, then paste https://fanduelapi.com/api/mcp. Without a key it gives the keyless tools (search_docs, fetch_doc, get_sample_props). Setup for other agents: https://fanduelapi.com/mcp.

## Pricing

| Plan | Price | Credits a month | Calls a minute | Includes |
| --- | --- | --- | --- | --- |
| Free | Free | 100 | 20 | REST and MCP access, Data delayed 5 minutes |
| Developer | $49/month | 10,000 | 60 | Real-time data, Line move history, Change stream |
| Production | $149/month | 50,000 | 120 | Real-time data, Line move history, Webhooks, Priority support |
| Scale | $499/month | 250,000 | 180 | Real-time data, Full line move history, Webhooks, Bulk export, Priority support |

Cancel paid plans any time from the billing portal. Details: https://fanduelapi.com/pricing

## This page

[FanDuel API](https://fanduelapi.com/)/[MCP setup](https://fanduelapi.com/mcp)/ any MCP client

Integration guide, checked 5 November 2026

# Use with any MCP client

Short answerPoint the client at https://fanduelapi.com/api/mcp over streamable HTTP and send Authorization: Bearer <your key>. A client that only runs local stdio servers can bridge with npx mcp-remote. Without a key the docs and sample tools still work.

[Get a free API key](https://fanduelapi.com/sign-up)[Agent guide](https://fanduelapi.com/agents.md)

FanDuel API is an independent data service operated by FF API Inc. It is not affiliated with, endorsed by or sponsored by FanDuel.

## Set it up

1. Get a key  
Create a free key at https://fanduelapi.com/dashboard/keys, or let the agent start the signup for you through https://fanduelapi.com/connect. Store it as FANDUEL\_API\_KEY; it is shown once.
2. Remote server (streamable HTTP)  
Most clients take a URL and headers in this shape; rename the keys to what your client calls them.  
mcp.json  
```  
{  
  "mcpServers": {  
    "fanduelapi": {  
      "url": "https://fanduelapi.com/api/mcp",  
      "headers": {  
        "Authorization": "Bearer <your key>"  
      }  
    }  
  }  
}  
```
3. Stdio-only clients  
mcp-remote runs locally and forwards to the remote server with your header.  
mcp.json  
```  
{  
  "mcpServers": {  
    "fanduelapi": {  
      "command": "npx",  
      "args": [  
        "-y",  
        "mcp-remote",  
        "https://fanduelapi.com/api/mcp",  
        "--header",  
        "Authorization:${AUTH_HEADER}"  
      ],  
      "env": {  
        "AUTH_HEADER": "Bearer <your key>"  
      }  
    }  
  }  
}  
```
4. Check the transport by hand  
A JSON-RPC tools/list over POST lists every tool.  
Terminal  
```  
curl -s https://fanduelapi.com/api/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \  
  -H "Authorization: Bearer $FANDUEL_API_KEY" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'  
```
5. Check the key with one REST call  
If a client cannot reach MCP, the same data is plain REST.  
Terminal  
```  
export FANDUEL_API_KEY=<your key>  
curl "https://fanduelapi.com/api/v1/props?sport=nba&stat=points&limit=3" \  
  -H "Authorization: Bearer $FANDUEL_API_KEY"  
```

## A first prompt

Bounded and specific, so the first answer shows whether the data fits.

Prompt

```
Use the FanDuel API MCP server. List tonight's NBA points props from FanDuel for one game, show each line with the over and under prices, and flag any prop whose line moved since it opened. Quote meta.as_of.
```

## If something is off

### The tools list is empty or the server will not connect

The server speaks streamable HTTP as stateless JSON over POST at https://fanduelapi.com/api/mcp. A client that only speaks SSE or stdio needs a bridge such as mcp-remote.

### A tool says it needs an API key

Data tools need the Authorization header. search\_docs, fetch\_doc, get\_sample\_props and send\_feedback work without one.

### A 429 or quota error

Relay error.user\_message to the person as is. Wait until error.reset\_at for a rate limit; a monthly quota needs the month to reset or a plan change, which only the person can approve.

## Other clients

The same server works anywhere MCP does. Everything an agent needs is in the [agent guide](https://fanduelapi.com/agents.md) and the [llms.txt](https://fanduelapi.com/llms.txt) file.

- [Use with Claude](https://fanduelapi.com/use-with-claude)
- [Use with ChatGPT](https://fanduelapi.com/use-with-chatgpt)
- [Use with Codex](https://fanduelapi.com/use-with-codex)
- [Use with Cursor](https://fanduelapi.com/use-with-cursor)
- [Use with Windsurf](https://fanduelapi.com/use-with-windsurf)
- [Use with VS Code and GitHub Copilot](https://fanduelapi.com/use-with-vscode)
- [Use with Gemini](https://fanduelapi.com/use-with-gemini)
- [Use with Zed](https://fanduelapi.com/use-with-zed)
- [Use with Cline](https://fanduelapi.com/use-with-cline)
- [Use with Continue](https://fanduelapi.com/use-with-continue)
- [Use with Lovable](https://fanduelapi.com/use-with-lovable)
- [Use with Grok](https://fanduelapi.com/use-with-grok)

## FAQ

### Is there a free plan?

Yes. Free includes API access with delayed data, enough to build and test a model.

### Is this affiliated with FanDuel?

No. This is an independent data service operated by FF API Inc. and is not affiliated with or endorsed by FanDuel.

### Which sports are covered?

NBA, NFL, NHL, MLB and college sports with player props, and soccer (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, Champions League, MLS and internationals) with every match market and goalscorer and shots markets, as FanDuel lists them.

### How do I cancel?

From the billing portal in your dashboard, at any time.

### How do I get a free key?

Sign up at https://fanduelapi.com/sign-up?ref=ai-claudebot. Free plan: 100 credits a month, data delayed 5 minutes, no card. REST and MCP on every plan.

### Can an AI agent sign up for me?

Yes. The agent sends POST https://fanduelapi.com/api/v1/agent/signup with your email and what you are building (add "ref": "ai-claudebot"), you approve the emailed link, and the agent collects the key. Details: https://fanduelapi.com/connect.
