Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Football Database and Results

REMOTE · FDB4.IO · SCANNED SEP 28

Historical football results, draws and no-draw streaks. 11 read-only tools, 6 need no API key.

Available components

+39 this week 67 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3963 tokens (~360/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
  • Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Football Database and Results MCP server?

Football Database and Results is a hosted endpoint at https://fdb4.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · fdb4.io

# add to Claude Code
claude mcp add --transport http io-fdb4-football-database-and-results 'https://fdb4.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-fdb4-football-database-and-results": {
      "url": "https://fdb4.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-fdb4-football-database-and-results": {
      "type": "http",
      "url": "https://fdb4.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-fdb4-football-database-and-results]
url = "https://fdb4.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-fdb4-football-database-and-results": {
      "type": "remote",
      "url": "https://fdb4.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-fdb4-football-database-and-results --url 'https://fdb4.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-fdb4-football-database-and-results:
    url: "https://fdb4.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-fdb4-football-database-and-results": {
      "Transport": "http",
      "Url": "https://fdb4.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-fdb4-football-database-and-results -t streamable-http -u 'https://fdb4.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-fdb4-football-database-and-results": {
      "type": "http",
      "url": "https://fdb4.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Sept 26 +7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_draw_model” rewrote its description, which is the text the model reads security
    • Tool “get_team” rewrote its description, which is the text the model reads security
    • Tool “get_team_prediction” rewrote its description, which is the text the model reads security
    • Tool “get_team_streaks” rewrote its description, which is the text the model reads security
    • Tool “head_to_head” rewrote its description, which is the text the model reads security
    • Tool “list_countries” rewrote its description, which is the text the model reads security
    • Tool “list_teams” rewrote its description, which is the text the model reads security
    • Tool “list_tournaments” rewrote its description, which is the text the model reads security
    • Tool “predict_draws” rewrote its description, which is the text the model reads security
    • Tool “search_results” rewrote its description, which is the text the model reads security
    • Tool “top_streaks” rewrote its description, which is the text the model reads security
    • Tool “get_draw_model” now declares an output schema ▲ functional
    • Tool “get_team” now declares an output schema ▲ functional
    • Tool “get_team_prediction” now declares an output schema ▲ functional
    • Tool “get_team_streaks” now declares an output schema ▲ functional
    • Tool “head_to_head” now declares an output schema ▲ functional
    • Tool “list_countries” now declares an output schema ▲ functional
    • Tool “list_teams” now declares an output schema ▲ functional
    • Tool “list_tournaments” now declares an output schema ▲ functional
    • Tool “predict_draws” now declares an output schema ▲ functional
    • Tool “search_results” now declares an output schema ▲ functional
    • Tool “top_streaks” now declares an output schema ▲ functional
    • First check of Tool coverage: 100 functional
    • Server version: 1.0.0 → 1.2.0 functional
    • Tool “get_draw_model” changed its title: Get Draw Model Tool → Draw probability for one match cosmetic
    • Tool “get_team” changed its title: Get Team Tool → Team profile and draw statistics cosmetic
    • Tool “get_team_prediction” changed its title: Get Team Prediction Tool → Draw prediction for one team cosmetic
    • Tool “get_team_streaks” changed its title: Get Team Streaks Tool → No-draw runs of one team cosmetic
    • Tool “head_to_head” changed its title: Head To Head Tool → Head-to-head record cosmetic
    • Tool “list_countries” changed its title: List Countries Tool → Countries cosmetic
    • Tool “list_teams” changed its title: List Teams Tool → Find a team cosmetic
    • Tool “list_tournaments” changed its title: List Tournaments Tool → Competitions and seasons cosmetic
    • Tool “predict_draws” changed its title: Predict Draws Tool → Teams most overdue a draw cosmetic
    • Tool “search_results” changed its title: Search Results Tool → Match results archive cosmetic
    • Tool “top_streaks” changed its title: Top Streaks Tool → Longest no-draw runs of all time cosmetic
  • 23 Sept 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 22 Sept 26 +30
    • Authorization: fail → unverified ▼ security
    • Transport: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • MCP protocol: unverified → pass ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Destructive annotations: pass functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 100 functional
  • 31 Aug 26 28

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 28 Sept 2026 · Probed https://fdb4.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=fdb4.io CN=WE1,O=Google Trust Services,C=US 8 Aug 2026 6 Nov 2026 ECDSA 256 ECDSA-SHA256 f4cdd0385ccecec40e1eee582b839529
SANs: fdb4.io, *.fdb4.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of fdb4.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
fdb4.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://fdb4.io/mcp Verified 200
http (plaintext) http://fdb4.io/mcp Inconclusive 404
MCP tools · 11 exposed · ~2,890 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_draw_model ~362

[PAID] Every draw reading FDB4 holds for ONE match — use it when someone asks how likely a specific fixture is to end level, rather than which teams are overdue a draw (`predict_draws` answers that). Five readings come back side by side, because they are not interchangeable: the Dixon-Coles goals model's own probability with the expected goals behind it; the historical draw rate at this fixture's Elo rating gap; the one-parameter blend of those two the site has published since September 2026; the five-feature logistic model that now sits beside it with a 95% band around it; and the bookmaker's draw price where one is recorded. Also returned: when the logistic model was last fitted, over how many matches, and its coefficients — so an answer can explain itself. Identify the match by `match_id`, or by `team` (id or slug) plus an optional `date`; with no date you get that team's next fixture. `is_forecast` says whether the logistic figure is a real forecast (a fixture) or an in-sample description of a match the model was fitted on. Historical pattern, not a betting tip. Costs 1 point per call (1 point = 1 cent); paginated calls cost 1 point per page.

NameTypeReqDescription
datestring–With `team`, the match date as YYYY-MM-DD. Omit for that team's next fixture.
match_idinteger–The match id, from search_results or a fixture list. Give this or `team`.
teamstring–A team id or slug (431, arsenal), from list_teams. Give this or `match_id`.
NameTypeReqDescription
dataobjectyes–

No examples provided.

get_team ~168

[FREE] One team's profile and its all-time draw statistics. Returns the team's name, country and type alongside the numbers this database is built on: matches played, draws, draw percentage, the no-draw streak currently running, the longest one ever, the average of its longest runs, its draw debt and its rank in the draw-likelihood field. Use it to answer "how often does this team draw?" or "how long since they last drew?". Takes a numeric id or a slug, whichever you already hold; both come from list_teams. Free: no key needed, and it costs a key holder nothing either.

NameTypeReqDescription
teamstringyesNumeric team id or slug — 431 or "arsenal". Find either with list_teams.
NameTypeReqDescription
dataobjectyes–

No examples provided.

get_team_prediction ~251

[PAID] How overdue a draw one named team is, plus the results that made it so. Returns the team's draw-likelihood rank and score among all ranked teams, the signals behind it (draw rate, current no-draw streak, longest ever, draw debt), and its recent form — every match in the current no-draw run, with opponent, score and side. Use this when the question is about a specific team ("is Brazil due a draw?"); use predict_draws when the question is about the field. The prediction comes back null when the team exists but is not currently ranked (no played matches, or excluded by the `recent` filter). Historical pattern, not a betting tip. Costs 1 point per call (1 point = 1 cent); paginated calls cost 1 point per page.

NameTypeReqDescription
recentboolean–Rank within teams that have played recently, matching predict_draws. Default true.
teamstringyesNumeric team id or slug — 431 or "arsenal". Both come from list_teams.
wc2026boolean–Rank within the 2026 World Cup team group. Default false.
NameTypeReqDescription
dataobjectyes–

No examples provided.

get_team_streaks ~168

[FREE] Every no-draw run one team has ever had, plus the one it is on now. A no-draw run is a sequence of matches that ended in a win or a loss. This returns the run currently in progress with each match in it — date, competition, opponent, score — so you can say exactly when the team last drew and what has happened since, together with every recorded run in the team's history, longest first, each with its start and end dates. Runs span all competitions; per-competition runs are not split out. Free: no key needed, and it costs a key holder nothing either.

NameTypeReqDescription
teamstringyesNumeric team id or slug — 431 or "arsenal". Find either with list_teams.
NameTypeReqDescription
dataobjectyes–

No examples provided.

head_to_head ~246

[PAID] The complete record between two teams, and every match they have ever played. Answers "who wins more between these two, and how often do they draw?" — matches played, wins each way, draws, goals each way and the draw percentage, all from team A's perspective, followed by every meeting with its date, competition and score. Optionally narrow to one competition type or a single edition to compare only their league games, or only one season. Both teams are given as numeric ids, which list_teams returns. Costs 1 point per call (1 point = 1 cent); paginated calls cost 1 point per page.

NameTypeReqDescription
aintegeryesTeam A, as a numeric id from list_teams. The record is reported from this team's point of view.
bintegeryesTeam B, as a numeric id from list_teams. Must differ from a.
iteminteger–Restrict to a single edition or season id, from list_tournaments with a `tournament` argument.
typestring–Restrict to one competition type, such as league or cup.
NameTypeReqDescription
dataobjectyes–

No examples provided.

list_countries ~155

[FREE] Every country in the database, with its FIFA code and id. Use it to turn a country name into the id and FIFA code the rest of the data is keyed by, or to check which countries are covered at all. Search with `q`, which matches a name prefix or an exact FIFA code ("ENG"). Countries that no longer exist are included and flagged, because the match archive still holds their games. Free: no key needed, and it costs a key holder nothing either.

NameTypeReqDescription
limitinteger–How many countries to return. Default 25; the total is always reported.
qstring–Country name prefix, or an exact FIFA code such as ENG or BRA.
NameTypeReqDescription
dataarrayyesCountries matching the search.
hintstring–Present only when rows were left out: how to narrow the call.
returnedintegeryesHow many rows are in data.
totalintegeryesHow many rows matched before the limit.

No examples provided.

list_teams ~229

[FREE] Find a team and its id — the lookup every other team tool depends on. Search by name prefix with `q` ("arse" finds Arsenal), or browse by first letter, or list one kind of team. Each row carries the numeric id and the slug that get_team, get_team_streaks, get_team_prediction, head_to_head and search_results take. The database holds thousands of teams, so an unfiltered call returns the first 25 with the full total beside them. Always pass `q` when you know the name. Free: no key needed, and it costs a key holder nothing either.

NameTypeReqDescription
letterstring–First letter A-Z to browse by, or "#" for names starting with a non-letter.
limitinteger–How many teams to return. Default 25; the total number of matches is always reported.
qstring–Name prefix, matched against both the short and the full name. The fastest way to find one team.
typestring–Restrict to national teams or to clubs.
NameTypeReqDescription
dataarrayyesTeams matching the search.
hintstring–Present only when rows were left out: how to narrow the call.
returnedintegeryesHow many rows are in data.
totalintegeryesHow many rows matched before the limit.

No examples provided.

list_tournaments ~225

[FREE] Every competition covered — leagues, domestic cups, continental cups, World Cups — with how many matches and how many draws each one holds. Two uses. Without `tournament` it answers "what is in this database, and how draw-heavy is each competition?", returning each competition's id, slug, country, match count, draw count and draw percentage. With `tournament` (an id or slug) it returns that one competition in full: the years it covers, every edition newest first with its champion where one was decided, and the all-time winners ranking with title counts and years. The competition ids here are what search_results and head_to_head filter by. Free: no key needed, and it costs a key holder nothing either.

NameTypeReqDescription
limitinteger–How many competitions to list. Default 25; the total is always reported.
tournamentstring–One competition, by numeric id or slug (53 or "norway-cup"). Returns its editions, champions and all-time winners instead of the list.
NameTypeReqDescription
dataarrayyesCompetitions, or one competition's editions.
hintstring–Present only when rows were left out: how to narrow the call.
returnedintegeryesHow many rows are in data.
totalintegeryesHow many rows matched before the limit.

No examples provided.

predict_draws ~326

[PAID] Rank teams by how overdue a draw is — the question this database exists to answer. Every team has a historical draw rate and a run of matches since its last draw. When the run is long relative to how often that team normally draws, the team is carrying "draw debt", and this tool ranks the whole field by it, most overdue first. Ask it "which national teams are most due a draw?" or "who is overdue a draw in the World Cup 2026 field?" and it answers directly; nothing else here needs to be queried first. Each entry returns the rank, the score, and the signals behind it: matches played, draws, draw percentage, the current no-draw streak, the longest ever, and the debt figure. Filters subset which teams are listed — a team's score and rank are global and never change with them. Historical pattern, not a betting tip. Costs 1 point per call (1 point = 1 cent); paginated calls cost 1 point per page.

NameTypeReqDescription
limitinteger–How many ranked teams to return. Default 25, max 500. One call, one point, whatever the limit.
recentboolean–Only teams with a recent match, so the answer is about teams currently playing. Default true.
typestring–Restrict the ranking to national teams or to clubs. Omit to rank both together.
wc2026boolean–Restrict to the 2026 World Cup team group. Default false.
NameTypeReqDescription
dataarrayyesTeams ranked by how overdue a draw is, most overdue first.

No examples provided.

search_results ~503

[FREE for the last 7 days · PAID for the archive] Search the match archive: finished matches, newest first, with scores. This is the raw history behind every other tool — decades of results across national team football, domestic leagues and cups. Filter by team, competition, single season, outcome (home win, away win or draw) and date range, in any combination: "Arsenal's draws since 2020", "every match in the 2025/26 Premier League", "all draws in the World Cup". Each match returns its date, competition and edition, both teams, the score and whether it was a draw. Results are paginated, 50 per page by default; `page` walks through them and `meta.total` tells you how many matches matched before you start. Free, no key needed, for recent results: the first page of 50, and any `from` date inside the last 7 days. Reaching further back — an older `from`, a bigger `limit`, or page 2 onward — is the archive and costs 1 point per call (1 point = 1 cent), one point per page.

NameTypeReqDescription
competition_idinteger–Restrict to one competition. Id from list_tournaments.
competition_item_idinteger–Restrict to a single edition or season. Edition ids come from list_tournaments with a `tournament` argument.
fromstring–Earliest match date, inclusive, as YYYY-MM-DD. Inside the last 7 days the call is free and needs no key; earlier than that it costs 1 point.
limitinteger–Page size: 50, 100, 250 or 500. Default 50, which is also the largest free page. Anything else is treated as 100.
outcomestring–H for a home win, A for an away win, D for a draw.
pageinteger–Page number, from 1. Page 1 can be free; every page after it is a separate call and costs its own point.
team_idinteger–Matches involving this team, home or away. Numeric id from list_teams.
tostring–Latest match date, inclusive, as YYYY-MM-DD.
typestring–Restrict to national-team or club football.
NameTypeReqDescription
dataarrayyesMatches, newest first.
linksobject–first/last/prev/next page URLs on the REST API.
metaobject–Pagination: which page this is and how many rows exist.

No examples provided.

top_streaks ~257

[PAID] The all-time leaderboard of no-draw runs — the longest any team has gone without drawing. Answers "what is the longest run of matches without a draw on record?" and "who else has done it?". Each entry is one run: its length, the dates it started and ended, and the team. A team can appear more than once, since a great side may have several long runs. Filter to one team, to national teams or clubs, or to runs above a minimum length. Paginated, 25 per page by default; `page` walks the leaderboard and each page costs its own point. Costs 1 point per call (1 point = 1 cent); paginated calls cost 1 point per page.

NameTypeReqDescription
limitinteger–Page size. Default 25, max 500.
mininteger–Minimum run length to list. Default 5.
pageinteger–Page number, from 1. Each page is a separate call and costs its own point.
team_idinteger–Restrict to one team. Numeric id from list_teams.
typestring–Restrict to national teams or to clubs.
NameTypeReqDescription
dataarrayyesThe longest no-draw runs, longest first.
linksobject–first/last/prev/next page URLs on the REST API.
metaobject–Pagination: which page this is and how many rows exist.

No examples provided.

Common questions

What is the Football Database and Results MCP server?

Football Database and Results is an MCP server listed in the public MCP registry as io.fdb4/football-database-and-results. Historical football results, draws and no-draw streaks. 11 read-only tools, 6 need no API key. This page covers its hosted endpoint (https://fdb4.io/mcp).

Is the Football Database and Results MCP server safe to use?

Football Database and Results scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Football Database and Results MCP server expose?

Football Database and Results exposes 11 tools: predict_draws, get_team_prediction, get_draw_model, top_streaks, get_team_streaks, and 6 more. Their descriptions and schemas cost roughly 2,890 tokens of context every time the server is loaded.

Does the Football Database and Results MCP server require authentication?

No. We connected to Football Database and Results without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Football Database and Results MCP server still maintained?

Football Database and Results is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.