Skip to main content
Glama
5dollarfootball-api

football-api-mcp

football-api-mcp

MCP Badge

MCP (Model Context Protocol) server for the 5DollarFootballAPI — gives Claude, ChatGPT, Cursor and any MCP-capable AI assistant live football (soccer) data: fixtures, live scores, standings, statistics, betting odds and the full odds movement history, including corner and card lines.

Ask your assistant things like:

  • "What Premier League matches are on today, and what are the current scores?"

  • "Show the corner standings for league 39 this season."

  • "How did the 1x2 odds move for fixture 1234567 before kickoff?"

Setup

You need an API key from 5dollarfootballapi.com — the free tier (no card) covers fixtures, live scores and standings; odds tools need a paid plan (from $5/mo).

Claude Code

claude mcp add football-api -e FIVEDOLLARFOOTBALL_API_KEY=fb_live_your_key -- npx -y football-api-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "football-api": {
      "command": "npx",
      "args": ["-y", "football-api-mcp"],
      "env": { "FIVEDOLLARFOOTBALL_API_KEY": "fb_live_your_key" }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "football-api": {
      "command": "npx",
      "args": ["-y", "football-api-mcp"],
      "env": { "FIVEDOLLARFOOTBALL_API_KEY": "fb_live_your_key" }
    }
  }
}

ChatGPT (Developer mode)

ChatGPT only connects to remote MCP servers (Streamable HTTP over HTTPS), not local stdio commands, and needs a Plus/Pro/Business plan with Developer mode enabled. Run the server in HTTP mode and expose it with a tunnel:

FIVEDOLLARFOOTBALL_API_KEY=fb_live_your_key npx -y football-api-mcp --http --token pick-a-secret
# in another terminal — any tunnel works, e.g. cloudflared or ngrok
cloudflared tunnel --url http://localhost:3333

Then in ChatGPT (verified 2026-08): Settings → Security and login → Developer mode (toggle on), open Plugins in the sidebar, click the + (Create app), and in the New Plugin form set Connection to Server URL, paste https://<your-tunnel-host>/mcp/pick-a-secret, set Authentication to No Auth, tick the acknowledgement and Create, then Connect. --token matters here: ChatGPT cannot send custom headers, so the secret in the path is what keeps a leaked tunnel URL from spending your API key.

Options: --host (default 127.0.0.1), --port (default 3333), or the equivalent MCP_HTTP_HOST / MCP_HTTP_PORT / MCP_HTTP_TOKEN environment variables. The same HTTP mode works for any other remote-only MCP client.

Related MCP server: mcp-sofascore

Tools

Tool

What it does

get_fixtures

Fixtures for a calendar day (default today, UTC) with live scores, corners, cards

get_fixture

One fixture, optionally with the event timeline and match statistics

get_fixture_odds

Current odds: 1x2, Asian handicap, goal line, corner line, card lines, BTTS

get_odds_history

Every recorded price tick for a fixture and market — pre-match and in-play

get_bookmakers

Bookmaker slugs usable in the odds tools

get_standings

League table — points, corner or card standings

search_leagues / search_countries

Discover league and country ids by name

get_league_fixtures

A league season's fixtures and results

get_team_fixtures

A team's matches, most recent first

get_account_status

Your plan, usage and rate-limit state

Prompts

One-shot analysis templates you can invoke from any prompt-aware client:

Prompt

What it produces

todays-briefing

A grouped briefing of the day's fixtures, live scores and standout numbers

odds-movement-report

Opening vs closing analysis of one fixture's market with in-play reaction

corner-scout

A league's corner tendencies from its corner standings and recent results

Resources

Attachable context data: football://leagues/popular (popular league ids) and football://bookmakers (bookmaker slugs for the odds tools).

All tools are read-only. Errors come back as tool errors with the API's error code and request id, so the assistant can explain what went wrong.

Development

npm install
npm test          # in-memory MCP client/server tests, no network
FIVEDOLLARFOOTBALL_API_KEY=... npm start          # run over stdio
FIVEDOLLARFOOTBALL_API_KEY=... npm start -- --http # run over Streamable HTTP

The underlying HTTP client is the official fivedollarfootball package. Endpoint reference: 5dollarfootballapi.com/docs.

License

MIT

Available Tools

11 tools
get_account_statusA
Read-onlyIdempotent

Your API plan, usage and rate-limit state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a small amount of value by naming the returned aspects (plan, usage, rate-limit state), but it does not disclose response format, pagination, or any operational caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact phrase with no filler, redundancies, or unnecessary words. It front-loads the key returned concepts immediately and earns every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, parameterless status endpoint, the high-level return description is largely sufficient. It could have added a use case such as 'check before making API calls' or an exact field list, but the low complexity keeps the missing details minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the input schema is trivially complete and the description cannot add parameter-level detail. The rubric baseline for a 0-parameter tool is 4, and this description appropriately makes no parameter claims beyond what the schema covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource clearly — API plan, usage, and rate-limit state — which is a specific scope distinct from the data-fetching sibling tools. It lacks an explicit verb, reading as a noun phrase rather than 'returns' or 'retrieves', but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool, no prerequisites, and no comparison to alternative tools. It merely states what the endpoint reports; any usage context must be inferred from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bookmakersA
Read-onlyIdempotent

List the bookmaker slugs usable in the odds tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the useful context that this feeds the odds tools, but it does not disclose return format or any edge cases. This is acceptable given the annotations carry most of the behavioral burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that states the action, the resource, and the intended use. Every word earns its place, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only enumeration tool with strong annotations and a clear purpose, the description is complete. No output schema exists, but the description's statement of what the tool lists and why is adequate for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema confirms this (100% coverage), so there is no parameter semantics burden on the description. A baseline of 4 is appropriate for a parameterless tool where the schema fully documents the absence of inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('bookmaker slugs'), and states their purpose ('usable in the odds tools'). This makes the tool's function immediately clear and distinct from the sibling tools, which focus on fixtures, odds, standings, and search operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates this tool is useful as a prerequisite for the odds tools, providing clear context for when to call it. It does not explicitly exclude alternatives, but no sibling tool serves the same purpose of listing bookmaker slugs, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fixtureA
Read-onlyIdempotent

Get one fixture by id, optionally with the event timeline (goals, cards, corners) and match statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
fixture_idYesFixture id
include_statsNoInclude match statistics
include_eventsNoInclude the event timeline

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only, idempotent, and non-destructive behavior, so the description's burden is lower. It adds useful context by clarifying that the event timeline includes goals, cards, and corners, but it does not describe response shape, defaults, or behavior when the optional flags are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no redundant words. It conveys the core action and the optional extended data efficiently without repeating schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-fixture getter with strong annotations and fully documented parameters, the description plus schema are largely sufficient. No output schema exists, so a bit more detail about the response shape would strengthen it, but the return value is reasonably implied by the tool name and optional-inclusion statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds minor semantic value by explicitly enumerating what the event timeline contains, but it does not add syntax, defaults, or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('one fixture by id'), and the optional content (event timeline and match statistics). It is clear and distinguishes itself from plural fixture-listing tools, though it does not explicitly name any sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Get one fixture by id' implies the tool should be used when a single fixture id is known, and the optional flags signal when to include additional data. However, it does not explicitly contrast with sibling tools like get_fixtures, get_league_fixtures, or get_team_fixtures, nor does it state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fixture_oddsA
Read-onlyIdempotent

Current betting odds for a fixture: 1x2, Asian handicap, goal line, corner line, card lines, BTTS — per bookmaker.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoOne market only, e.g. 1x2, asian, goalline, corner, cards, btts (default: all)
bookmakersNoBookmaker slugs, e.g. ["bet365","pinnacle"] (default bet365; GET bookmakers via get_bookmakers)
fixture_idYesFixture id

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate read-only, idempotent, non-destructive behavior. The description adds useful scope details (markets, per bookmaker) but does not disclose additional behavioral traits such as data freshness, odds volatility, or what happens when a fixture has no odds available. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence that immediately states what the tool returns, which markets it covers, and that results are per bookmaker. There is no filler or redundant information; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description reasonably conveys the returned domain: current odds across multiple market types per bookmaker. It could go further by hinting at the output structure for each market, but it is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100% and the parameter descriptions already explain market, bookmakers, and fixture_id. The description's market list roughly repeats the schema's market examples, adding no extra semantic meaning beyond what the schema provides. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource relationship: 'Current betting odds for a fixture', and enumerates the market types and per-bookmaker scope. The word 'Current' distinguishes it from sibling get_odds_history, so an agent can tell this tool from related ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when current odds are needed, rather than historical odds or raw fixture data. However, it does not explicitly name alternatives like get_odds_history or state when not to use the tool, leaving the routing logic to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fixturesA
Read-onlyIdempotent

List football fixtures for a calendar day (UTC). Defaults to today. Includes live scores, corners and cards for each match.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDay to list, YYYY-MM-DD (UTC). Default: today
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
pageNoPage number (default 1)
statusNoFilter by match status (default all)
league_idNoOnly this league

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds a default-to-today behavior and notes that live scores, corners, and cards are included, but does not go deeper into pagination or response behavior. This is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary purpose and key default are front-loaded, and the output-information detail is relevant and compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With all parameters covered by the schema, annotations covering read-only/idempotent behavior, and a description that names the output highlights, the tool is largely complete for invocation. The only notable gap is the lack of explicit routing against league/team-specific sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters. The description only re-emphasizes the date scope and default, which does not meaningfully add beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('football fixtures'), and a precise scope ('for a calendar day (UTC)'). It also distinguishes itself from sibling tools like get_league_fixtures and get_team_fixtures by emphasizing the date-based listing scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for date-based fixture lookups and mentions the UTC/day default, but it does not explicitly say when to prefer this over get_league_fixtures, get_team_fixtures, or get_fixture. No alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_league_fixturesB
Read-onlyIdempotent

A league season's fixtures and results.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
pageNoPage number (default 1)
seasonNoSeason, e.g. "2026" or "26/27" (default: newest with fixtures)
statusNoFilter by match status (default all)
league_idYesLeague id

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful detail that results are included alongside fixtures, but it does not disclose pagination behavior, default season handling, or status-filter semantics beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, extremely concise sentence with no filler or redundant content. It front-loads the core resource scope, though it is so brief that it sacrifices useful operational context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and several closely related sibling tools, a one-line noun phrase is not enough. The description omits default season behavior, pagination, status filtering, and any distinction from get_fixtures or get_team_fixtures, leaving the agent under-informed for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter already has a meaningful description in the schema. The tool description adds no additional parameter semantics, which matches the baseline of 3 for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource clearly: a league season's fixtures and results. The verb 'get' is present in the tool name, and the 'league season' scope distinguishes it from team-level or general fixture tools. However, it does not explicitly state the action or name a sibling it is not, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus get_fixtures, get_team_fixtures, or get_standings. The description does not mention defaults like season selection, status filtering, or pagination, leaving the agent to infer usage from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_odds_historyA
Read-onlyIdempotent

Full price-movement history (every recorded tick) for one fixture and market. Each tick has the price, match minute, running score and UTC timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
marketYesMarket: 1x2, asian, goalline, corner, corner_asian, cards, cards_asian, btts, or a *_half variant
bookmakerNoBookmaker slug (default bet365)
fixture_idYesFixture id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a safe, read-only, idempotent operation. The description adds meaningful behavioral context by specifying that the response contains every recorded tick and describing the tick fields (price, match minute, running score, UTC timestamp), which is helpful beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The primary purpose is front-loaded, and the detail about tick contents is delivered in a tightly scoped second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately explains what the response contains. It covers the key return fields and scope. Minor omissions such as ordering or pagination behavior are partly covered by the page parameter in the schema, so the description remains sufficiently complete for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces that fixture_id and market are the core selectors but does not add new parameter-level semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('full price-movement history') with scope constraints ('one fixture and market') and clarifies it returns every recorded tick. This clearly differentiates it from siblings like get_fixture_odds, which presumably returns current or near-term odds, by the historical and tick-level nature of the data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when you need the complete tick-level price history for a fixture and market. However, it does not explicitly contrast it with get_fixture_odds or state when not to use it, leaving the agent to infer the appropriate alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_standingsA
Read-onlyIdempotent

League table for a league and season. type "corner" and "card" return corner/card standings instead of points.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
typeNoTable type (default total)
seasonNoSeason, e.g. "2026" or "26/27" (default: current)
league_idYesLeague id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds the behavioral nuance that type='corner' or 'card' changes the result from points-based standings to corner/card standings, going beyond the schema's bare enum labels.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the core purpose is front-loaded and the type behavior is the only additional detail. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup tool, the description covers purpose and the main optional variation, while the schema fully documents all four parameters and annotations cover safety. It does not describe output format, but with no output schema this is a minor gap rather than a blocker.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the semantic effect of the 'type' parameter—corner and card return alternative standings—rather than just listing table types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description names the specific resource ('League table') and the verb ('return'), and scopes it to a league and season. It also distinguishes corner/card table variants, so an agent can tell this apart from fixture/odds/bookmaker siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames when the tool applies: for standings of a given league and season, with optional type variants for corner/card tables. It does not explicitly name alternatives or say when not to use it, but the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_fixturesB
Read-onlyIdempotent

A team's matches home or away, most recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
pageNoPage number (default 1)
statusNoFilter by match status (default all)
team_idYesTeam id

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive safety profile, so the description only needs to add extra behavioral context. It adds the most-recent-first ordering and the home/away scope, but it does not explain status filtering or pagination behavior. This is not a contradiction and the added context is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler, and the core subject is presented immediately. The phrase 'home or away' is a little awkward, but the overall structure is compact and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list endpoint, the description conveys the essential subject and ordering. However, with four parameters and no output schema, it does not mention status/page defaults or the shape of the returned fixtures, so an agent would need to infer or discover some behavioral details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so team_id, lang, page, and status are already documented structurally. The description adds no parameter-level details beyond implying team_id is the central selector, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as a team's matches, includes the home/away scope, and states the sort order as most recent first. It is distinct enough from get_league_fixtures and get_fixtures because it focuses on a specific team, though it lacks an explicit verb and 'home or away' is slightly ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus siblings such as get_fixtures or get_league_fixtures, and it does not mention any exclusions or alternatives. The team-specific scope is implied, but the routing decision is left entirely to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_countriesA
Read-onlyIdempotent

List countries (optionally filtered by name substring), for use with search_leagues.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
pageNoPage number (default 1)
searchNoCountry name substring

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety behavior. It adds a small behavioral touch by noting the filter is optional and substring-based, but it does not reveal details like pagination behavior or result shape, which would add further transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the core action ('List countries'), then states the optional filter and the intended usage context. There is no wasted wording and every clause adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with rich annotations and fully documented parameters, the description adequately explains the tool's purpose, filter behavior, and relationship to search_leagues. An output schema is absent, but for a straightforward country-listing tool the key calling context is covered; slight gaps around return format and pagination keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have descriptions in the schema, so schema coverage is 100% and the schema carries the load. The description's mention of filtering by name substring adds no meaning beyond the existing 'search' parameter description, so it earns the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says 'List countries', which is a clear verb+resource pairing, and notes the optional 'name substring' filter. It also identifies its intended role as a helper for search_leagues, which differentiates it from the other listed tools that are all about fixtures, odds, or standings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for use with search_leagues' gives clear context on when this tool is relevant: as a lookup/filtering aid before searching leagues. No alternative country-listing sibling exists among the provided tools, so explicit exclusion is unnecessary; the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_leaguesA
Read-onlyIdempotent

Find leagues by name, country or popularity. Use this to discover league ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code for team/league names, e.g. en, es, de, ja, zh-cn
pageNoPage number (default 1)
searchNoLeague name substring
popularNoOnly popular leagues
country_idNoOnly this country (see search_countries)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds search semantics and the output intent of discovering league IDs, but it does not disclose pagination behavior, ordering, or result limits. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no wasted words. The core function is front-loaded, and the usage guidance is included in the second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All 5 parameters are optional and fully documented in the schema, and the annotations cover the behavioral safety profile. The description explains the main purpose and return intent, discovering league IDs, which is sufficient for a simple search tool even without an output schema. Slightly more detail about pagination or response shape would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% parameter description coverage, so the baseline is 3. The description summarizes the filters as 'name, country or popularity', which roughly maps to search, country_id, and popular, but it adds no detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Find leagues' by name, country, or popularity. The added phrase 'Use this to discover league ids' gives an actionable purpose and distinguishes it from sibling tools that consume league IDs, though it does not explicitly contrast with search_countries or other alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear invocation context: use it when you need to discover league IDs. This implies it is the right choice before calling tools like get_league_fixtures or get_standings, but it does not explicitly state when not to use it or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.3.0
    • First observedget_account_status
    • First observedget_bookmakers
    • First observedget_fixture
    • First observedget_fixture_odds
    • First observedget_fixtures
    • First observedget_league_fixtures
    • First observedget_odds_history
    • First observedget_standings
    • First observedget_team_fixtures
    • First observedsearch_countries
    • First observedsearch_leagues

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource/scope: fixtures are separated by day, id, league, and team; odds, standings, searches, and account status are clearly distinct. The descriptions make the boundaries between the fixture-listing tools explicit enough that an agent should not misselect.

Naming Consistency5/5

All tools follow a consistent snake_case action_noun pattern, with get_ used for retrieval and search_ used specifically for discovery. This is a predictable and readable convention across the entire toolset.

Tool Count5/5

11 tools is a well-scoped count for a football data and odds API. Each tool covers a meaningful area such as fixtures, standings, odds, discovery, or account status without feeling bloated or sparse.

Completeness4/5

Core workflows around fixtures, standings, odds history, and league/country discovery are covered well. The main gap is the lack of a team search or direct team lookup, which makes get_team_fixtures harder to use unless team IDs are first extracted from fixture data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides tools to query football match data, odds, standings, and team statistics via natural language, integrating with the football-scraper-api.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides live football match data from Sofascore, including formations, injuries, betting odds, and league positions, enabling natural language queries about matches.
    1
    -
  • F
    license
    B
    quality
    B
    maintenance
    Enables access to live FotMob football data for fixture lookup, team and player research, match details, lineups, league discovery, and search-based entity lookup.
    7
    8
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language querying of football/soccer data via the API-Football service, providing access to leagues, teams, players, fixtures, standings, and statistics.
    3
    -