Integration guide, checked 5 November 2026
Use with Grok
Short answerIn an xAI API request, add a tool of type mcp with server_url https://fanduelapi.com/api/mcp, a server_label, and authorization set to Bearer and your key. Grok then calls the props tools itself.
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
- 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.
- Remote MCP tool in the xAI API
Your code holds the key; the request passes it to the MCP server.
Python import os from xai_sdk import Client from xai_sdk.chat import user from xai_sdk.tools import mcp client = Client(api_key=os.environ["XAI_API_KEY"]) chat = client.chat.create( model="grok-4", tools=[mcp( server_url="https://fanduelapi.com/api/mcp", server_label="fanduelapi", authorization="Bearer " + os.environ["FANDUEL_API_KEY"], )], ) chat.append(user("List FanDuel NBA assists props for tonight and the ones that moved.")) print(chat.sample().content) - 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.
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 and the llms.txt file.