The full reference is below, examples and all — and the same key opens the MCP server. Calling either needs a key: sign in with Google, create one in your account, and start on 10 free points. 1 call = 1 point = 1 cent.
Read-only access to the whole database — the same queries the site runs, as JSON.
Base URL https://fdb4.io. Authenticate with
Authorization: Bearer <key>. Every endpoint is
GET; nothing here writes.
Teams ordered by name, filterable by type, initial letter and name prefix.
curl -sS "https://fdb4.io/v1/teams?type=club&letter=A" \ -H "Authorization: Bearer $FDB_API_KEY" \ -H "Accept: application/json"
Illustrative shape — a couple of rows, not live data.
{
"data": [
{
"id": 431,
"slug": "arsenal",
"name": "Arsenal",
"full_name": "Arsenal FC",
"type": "club",
"country": {
"id": 1,
"name": "England",
"fifa_code": "ENG"
},
"exists_now": true
}
]
}
| Name | Type | Description |
|---|---|---|
| type | string | national_team or club. |
| letter | string | First letter A–Z, or # for non-letter initials. |
| q | string | Name prefix, matched against short and full name. |
The whole database as an MCP
server, so Claude, Cursor and any other AI client can query it directly — no client code to write.
Endpoint https://fdb4.io/mcp, streamable HTTP, authenticated with
Authorization: Bearer <key>.
Same key, same balance, same rate limit. One key opens both doors and they draw on one account: an MCP tool call costs 1 point exactly like a REST request. Connecting and listing the tools are free — you are only charged when a tool actually answers something.
claude mcp add --transport http footdb https://fdb4.io/mcp \
--header "Authorization: Bearer YOUR_KEY"
{
"mcpServers": {
"footdb": {
"type": "http",
"url": "https://fdb4.io/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}
curl -X POST https://fdb4.io/mcp \
-H "Authorization: Bearer $FDB_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| Tool | What it answers | Arguments |
|---|---|---|
predict_draws |
Rank teams by how overdue a draw is — the question this database exists to answer. | type, recent, wc2026, limit |
get_team_prediction |
How overdue a draw one named team is, plus the results that made it so. | team*, recent, wc2026 |
top_streaks |
The all-time leaderboard of no-draw runs — the longest any team has gone without drawing. | min, team_id, type, limit, page |
get_team_streaks |
Every no-draw run one team has ever had, plus the one it is on now. | team* |
list_teams |
Find a team and its id — the lookup every other team tool depends on. | q, type, letter, limit |
get_team |
One team's profile and its all-time draw statistics. | team* |
list_tournaments |
Every competition covered — leagues, domestic cups, continental cups, World Cups — with how many matches and how many draws each one holds. | tournament, limit |
list_countries |
Every country in the database, with its FIFA code and id. | q, limit |
search_results |
Search the match archive: finished matches, newest first, with scores. | team_id, competition_id, competition_item_id, outcome, type, from, to, limit, page |
head_to_head |
The complete record between two teams, and every match they have ever played. | a*, b*, type, item |
* required. List tools return 25 rows by default with the full total beside them; each page of a paginated call costs its own point.
One deviation from the MCP spec, stated up front: its authorization section expects OAuth 2.1 with dynamic client registration. FOOTDB uses the same static bearer keys as the REST API instead — simpler, and how the API is already sold. Every client that can send a custom header works; a client that speaks only OAuth will not connect. Tell us if you need it.
- Sign in with Google — no password, no form, nothing to wait for.
- Create a key in your account. It is shown once, so store it somewhere safe.
- Send it on every request as
Authorization: Bearer <key>— tohttps://fdb4.io/v1or tohttps://fdb4.io/mcp.
1 call = 1 point = 1 cent, on the API and the MCP server alike. Out of points? Top up — you pick the amount, there are no packages and no subscription. Bring someone with you and earn 10% of every point they are ever credited. No refunds, ever: the product is data, and data cannot be returned.
Existing keys not attached to an account are not charged until migrated.
The bearer token is missing, unknown, revoked or expired.
The account behind the key has fewer than one point left. 1 call = 1 point = 1 cent. New accounts get 10 free points and +2 every month you sign in. Existing keys not attached to an account are not charged until migrated.
{
"error": {
"code": "insufficient_balance",
"balance": 0,
"top_up_url": "https://fdb4.io/account/balance",
"monthly_grant": 2
}
}
Over the per-minute limit. The response carries a Retry-After header; a throttled request costs no points.