SportStatsAPI
Server Details
Fixtures, live scores, results, tables and match facts for 1,881 competitions in 8 sports.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes, but three tools target a single match (get_match, get_match_details, get_match_briefing) and two target a team (get_team, get_team_briefing), creating some boundary ambiguity. The descriptions do clarify the split (basic vs stats vs narrative briefing), so an agent can mostly disambiguate.
Names consistently use snake_case with a small verb set (find_, get_, list_), which is predictable and readable. The find_ vs get_ distinction (search-by-name vs fetch-by-id) is a minor deviation but meaningful, not chaotic.
13 tools is well-scoped for a sports data API covering sports, leagues, teams, players, matches, and standings. Each tool earns its place without obvious redundancy or bloat.
The surface covers the full lifecycle from discovery (list_sports, find_leagues, find_teams) through detail (match, team, player, standings, briefings, live). A notable gap is the absence of a player search/find tool (only get_player by id), plus no explicit head-to-head tool, but core workflows are covered.
Available Tools
13 toolsfind_leaguesARead-onlyInspect
Find leagues (competitions) of a sport and their ids, optionally by name or country. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| query | No | text the league or country name must contain, e.g. 'Premier League' or 'Germany' | |
| sport | Yes | sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball or american-football | |
| future | No | only leagues with upcoming matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds one genuinely useful behavioral fact not present in structured data — that the endpoint is 'Free' — but says nothing about result volume, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: verb and resource first, filters second, cost note last. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with no output schema and full parameter documentation elsewhere, the description covers intent, filters, and cost. It could be slightly more complete by noting result size or an example use case, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 lang, query, sport and future with examples and enums. The description only restates the name/country filtering idea, adding little beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (leagues/competitions) and clarifies that the result centers on league ids, which is the actual payload an agent needs. It does not explicitly contrast with the closest sibling (find_teams) or get_league_facts, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally by name or country' implies the intended lookup scenario and hints at the two filter modes, but there is no explicit when-to-use guidance, no statement of when not to use it, and no routing to alternatives such as find_teams or get_league_facts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_teamsARead-onlyInspect
Find teams by name, with their ids, country, venue and leagues.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| name | Yes | part of the team name, e.g. 'Bayern' | |
| limit | No | max teams (default 20, max 100) | |
| sport | Yes | sport (see list_sports) | |
| league_id | No | only teams of this league |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the return payload fields (ids, country, venue, leagues), which is genuinely useful since there is no output schema, but it says nothing about matching semantics, empty results, or that limit/pagination exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the verb, resource, key, and result fields all earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with fully described parameters, the description covers purpose and the shape of the returned data, compensating for the absent output schema. Only the lack of guidance against sibling lookups (get_team, find_leagues) keeps it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: every parameter (lang, name, limit, sport, league_id) is documented in the schema, including defaults and the list_sports pointer. The description adds no parameter detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find teams') plus the matching key ('by name') and the payload returned (ids, country, venue, leagues), which distinguishes it from the single-entity get_team. It never names a sibling tool explicitly, so the differentiation is inferred from 'by name'/'teams' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name' implies a partial-name search use case, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives like get_team or find_leagues. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_league_factsARead-onlyInspect
What finished matches changed, newest first: the match story (comebacks, late winners, red cards), runs started or ended, table places and zones, each also as a sentence (lang de, es, it, fr). Use for 'what happened in this league today'. Facts only.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| since | No | only matches updated after this RFC 3339 time | |
| sport | No | sport (default soccer; see list_sports) | |
| league_id | No | only this league (from list_leagues) | |
| min_importance | No | only facts of at least this importance, 0-100 (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the safety profile is covered; the description adds real behavioral detail beyond that: newest-first ordering, delta semantics ('what finished matches changed', 'runs started or ended'), and the 'facts only' scope limit. idempotentHint=false is consistent with a time-delta feed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core behavior (changed finished matches, newest first) before the content enumeration. Dense but every clause carries information; the closing 'Facts only' is a useful scope fence rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on describing returns and does so adequately by listing the fact categories and the localized sentence option. Combined with full schema coverage and clear annotations, an agent has what it needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (lang, since, sport, league_id, min_importance) are already documented in the schema, and the description only restates the lang options. No additional syntax or interaction detail is provided, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and enumerates the returned content (match story, runs, table places/zones, localized sentences). It reads as a 'what changed in this league' feed, which distinguishes it from get_standings and get_matches by scope. It stops short of naming a sibling to contrast with explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage cue — "Use for 'what happened in this league today'" — which frames it as a recency/change feed rather than a lookup. No when-not or named alternatives, but the context is clear enough to route correctly against get_matches/get_standings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_matchesBRead-onlyInspect
Matches in play right now, with score and minute or period.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | Yes | sport (see list_sports) | |
| league_id | No | only this league |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, non-open-world operation, so the safety picture is covered. The description adds a useful hint about payload content (score and minute or period), but says nothing about freshness, polling behavior, or what happens when nothing is in play.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause that front-loads the scope (live matches) and then the return content. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with no output schema, the description conveys scope and rough return shape, and annotations/schema cover the rest. Only the empty-result and freshness cases go unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters are self-documented (including the lang enum values and the pointer to list_sports for sport). The description adds no syntax, default, or scoping detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (matches) with a precise scope qualifier ("in play right now"), which cleanly separates it from get_matches and get_match. It stops short of naming those siblings explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no pointer to the obvious alternatives (get_matches for scheduled/finished fixtures, get_match for a single game). The agent must infer from the phrase "right now" alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_matchCRead-onlyInspect
One match: teams, score, status, events (goals, cards...), venue, referee.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | Yes | sport (see list_sports) | |
| match_id | Yes | match id from get_matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that the response includes teams, score, status, events, venue, and referee, but it does not extend behavioral context such as error handling, data freshness, or shape beyond the listed fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence fragment that front-loads the resource scope and then enumerates returned content. It is efficient and free of filler, though the fragmentary phrasing is less helpful than a complete clause would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations covering return content, the description does list the main fields returned, which is helpful. However, it does not explain the relationship to sibling match tools or provide enough context for an agent to confidently choose this over get_match_details or get_match_briefing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is clearly documented in the input schema, including lang, sport, and match_id. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource and lists the fields returned by a single-match lookup, but it does not explicitly distinguish this tool from siblings like get_match_details, get_match_briefing, or get_matches. It is clear enough to know it returns one match, but not why an agent should choose it over the closely named alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_matches, get_match_details, or get_match_briefing. The required sport and match_id parameters imply it needs an existing match identifier, but the description never states prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_match_briefingARead-onlyInspect
Ready briefing for one match (any sport): form, current streaks, home and away records, head-to-head, table position and gaps, stakes, schedule; for soccer also injuries, lineups and, after the match, the story (comeback, late winner, red cards). Each statement also as a sentence (lang de, es, it, fr). Facts only, no predictions. Prefer this for 'tell me about this match'.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | No | sport (default soccer; see list_sports) | |
| format | No | md for a short Markdown text instead of JSON | |
| match_id | Yes | match id from get_matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description still adds real behavioral context beyond them: the output is 'facts only, no predictions', content varies by sport (soccer-only injuries/lineups/story), and responses can be localized per language. It does not mention latency, rate limits, or behavior for unknown/invalid match_ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core deliverable, then constraints and routing, and every sentence carries information. The middle content list is dense and slightly list-heavy, but nothing is wasted or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return payload — and it does so explicitly, including sport-dependent differences and the post-match 'story' fields, plus the multilingual sentence form. An agent knows what it will get and how to ask for Markdown instead of JSON.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so lang, sport, format and match_id are already documented in the schema (including the de/es/it/fr values and the get_matches provenance of match_id). The description only echoes the language set and match scope, adding no syntax or constraint information beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Ready briefing for one match') and then enumerates exactly what the payload contains (form, streaks, home/away records, H2H, table gaps, stakes, schedule, plus soccer injuries/lineups/post-match story). That content inventory cleanly separates it from siblings like get_match, get_match_details and get_team_briefing without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Prefer this for "tell me about this match"' gives an explicit selection cue against the other match tools. It lacks an explicit when-NOT-to-use clause (e.g., prefer get_match_details when you want raw per-event data), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_match_detailsBRead-onlyInspect
Detail of one match: statistics or box score, lineups, injuries, or play-by-play.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| part | Yes | stats, lineups or injuries (soccer); stats (box score) or play_by_play (basketball, baseball, hockey, tennis, american-football) | |
| sport | Yes | sport (see list_sports) | |
| match_id | Yes | match id from get_matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful context about the range of payloads available per sport, but says nothing about response size, pagination, or whether a given part is always present for any sport.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that wastes no words and puts the resource ('one match') ahead of the payload list. It is efficient, though the terseness leaves several questions unanswered that a slightly longer description could have addressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries some burden of describing returns, which it does at a high level via the payload enumeration. However, it omits routing guidance relative to three closely related match siblings and gives no sense of response shape or sport-dependent availability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (lang, part, sport, match_id) is already documented in the schema with its allowed values and cross-references (list_sports, get_matches). The description only restates the payload vocabulary already present in the 'part' description, adding no new syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb+resource ('Detail of one match') and enumerates the content payloads available (statistics/box score, lineups, injuries, play-by-play). It is clear what the tool returns, but it does not distinguish itself from sibling tools like get_match or get_match_briefing, which plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this versus get_match, get_match_briefing, or get_live_matches. The enumeration of 'part' values implies that different content types are available, but the agent must infer which sibling to pick with no stated condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_matchesARead-onlyInspect
Matches (fixtures and results) by day or date range, optionally of one league. Without a date: today.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | day YYYY-MM-DD (UTC) | |
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| limit | No | max matches (default 20, max 100) | |
| sport | Yes | sport (see list_sports) | |
| offset | No | skip this many matches (paging) | |
| status | No | match status filter as the API reports it, e.g. FT or NS | |
| date_to | No | last day YYYY-MM-DD of a range | |
| date_from | No | first day YYYY-MM-DD of a range | |
| league_id | No | league id from find_leagues | |
| league_name | No | exact league name, picks one division where several share a league id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the default-date behavior, but says nothing about pagination behavior, result volume, or how a range interacts with limit/offset, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the core scope front-loaded and the default behavior appended. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter read-only list tool with no output schema, the description covers what is returned (matches = fixtures and results), the date scoping, and the default. It omits paging/language behavior, which the schema handles, so it is largely complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (date, date_from/date_to, league_id vs league_name, limit, offset, lang) is already documented in the schema. The description restates the date-range and league concepts but adds no semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (matches, explicitly fixtures and results) and the retrieval axis (by day or date range, optionally of one league). It is clearly distinct from get_match_details or get_standings, though it does not explicitly distinguish itself from the sibling get_live_matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies one useful usage rule — omit the date to get today's matches — which is implied guidance for the default case. It does not state when to prefer this over get_live_matches for in-progress games, nor any prerequisites, so usage is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playerCRead-onlyInspect
Player profile: position, nationality, birth date, height, team, career and photo link where known.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | Yes | sport (see list_sports) | |
| player_id | Yes | player id from a squad or lineup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and idempotentHint=false, so the safety profile is covered. The description adds a small nuance with 'where known', signaling optional/missing fields. It does not disclose behavior when a player_id is invalid or not found, which for a read tool with annotations covering the basics is a modest but acceptable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact fragment with zero filler, front-loading the most useful information (it returns a player profile with these fields). It is efficient, though it is a noun-phrase list rather than a structured statement of purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully documents the returned fields, which is the main completeness requirement here. It falls short on when-to-use and error behavior, but for a simple lookup whose annotations cover read-only safety, it is adequate without being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so lang, sport, and player_id are fully documented in the schema itself (including that player_id comes from a squad or lineup). The description adds no parameter meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the fields returned (position, nationality, birth date, height, team, career, photo) which effectively identifies it as a player-profile lookup, and the name supplies the verb. However it never states the action (retrieves a player profile) explicitly and does not differentiate from siblings like get_team or get_match beyond the player-specific field list. Purpose is inferable but stated as output content rather than intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. that a valid player_id must come from a squad/lineup call), and no routing to alternatives among the twelve siblings. The only hint toward usage lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_standingsCRead-onlyInspect
League table of a league.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | Yes | sport (see list_sports; not tennis) | |
| league_id | Yes | league id from find_leagues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description contributes nothing further: no indication of how the table is ordered, which fields it contains, whether it reflects live or final results, or how the lang parameter affects output. It is purely a restatement of the resource.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six words, front-loaded, with no filler sentences — structurally clean. But the brevity is under-specification rather than true conciseness, since the single sentence carries no operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description bears the burden of describing what standings look like (position, points, played, goal difference, etc.) and it says nothing. For a lookup tool whose value depends entirely on the shape of the returned table, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (lang, sport, league_id) are already documented in the schema, including the sport exclusion of tennis and the source lookup siblings. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'league table of a league' names the resource and uses domain vocabulary ('league table') that goes beyond simply restating the tool name, so an agent can tell it returns standings/rankings rather than fixtures or team data. However there is no verb and no differentiation from siblings like get_league_facts or find_leagues, leaving the purpose only loosely pinned down.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of any alternative tool. The only routing hint comes from the input schema ('see list_sports', 'league id from find_leagues'), not from the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teamBRead-onlyInspect
Team profile (country, founded, venue, leagues, logo link), optionally with its squad.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | Yes | sport (see list_sports; not tennis) | |
| squad | No | also return the squad (players) | |
| team_id | Yes | team id from find_teams or a match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully discloses the shape of the payload and that squad inclusion is optional, but says nothing about permissions, rate limits, or what happens on an invalid team_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs the field inventory and the optional squad expansion without filler. Minor drag from list items like 'logo link' that are arguably noise rather than decision-relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the job of describing the return payload, and it does so reasonably well for a read-only lookup with fully documented parameters. The remaining gap is the unresolved adjacency with get_team_briefing, which an agent must disambiguate unaided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (lang, sport, squad, team_id) are already documented with formats and constraints. The description only restates the squad option, adding no syntax or default detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (team profile) and enumerates the returned fields (country, founded, venue, leagues, logo link), plus the optional squad expansion. This makes the tool's output recognizable at a glance, but it offers no differentiation from the sibling get_team_briefing, which an agent could easily confuse with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as find_teams (to obtain a team_id) or get_team_briefing. The only routing hint ('team_id from find_teams or a match') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_briefingBRead-onlyInspect
Ready briefing for one team (any sport; for tennis a player): form, streaks (overall, home, away), home and away record, table place and gaps, last and next match, injuries (soccer); each also as a sentence (lang de, es, it, fr). Facts only.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | language of team, league and country names: de, es, it or fr (default English) | |
| sport | No | sport (default soccer); for tennis the id is a player id | |
| format | No | md for a short Markdown text instead of JSON | |
| team_id | Yes | team id from find_teams or a match (tennis: player id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful content-level context with 'Facts only' (no predictions/opinion) and notes that each block is also rendered as a sentence in de/es/it/fr. It does not explain the non-idempotency (live data) or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the payload front-loaded; every clause (fields, tennis exception, language, facts-only) carries information. The parenthetical list is long but not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly enumerates the returned sections and notes the multi-language rendering, so an agent knows what it gets back. The only real gap is the absence of when-to-use guidance against related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 lang, sport, format, and team_id. The description reinforces the tennis-is-a-player-id case and the multi-language sentence option, but adds little syntax or semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and enumerates exactly what the briefing contains (form, streaks, records, table place, last/next match, injuries), which lets an agent distinguish it from siblings like get_team (raw team data) or get_match_briefing (single match). It never uses a clear verb like 'get/return', but the enumeration compensates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_team, get_player, or get_match_briefing, and no prerequisites. Usage can only be inferred from the content list. The parenthetical 'for tennis a player' is parameter steering, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sportsBRead-onlyInspect
Sports available, with whether each has upcoming matches. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds two genuinely useful behavioral facts beyond the schema: the result includes an 'upcoming matches' availability flag, and the call is 'Free' (no credit/quota cost). It still says nothing about caching, ordering, or return shape beyond that flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Eleven words with the resource front-loaded and the two key facts (upcoming-match flag, free) trailing. It is composed of fragments rather than sentences, which is terse but unambiguous, and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of describing the response and does so at a high level (sports plus an upcoming-match flag). It does not mention whether names or IDs are returned, but for a zero-arg discovery list that omission is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the schema contributes nothing to explain and the baseline is 4. The description correctly wastes no words on parameters (there are none) and spends its budget on the return-side semantics instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (sports) and the returned attribute (whether each has upcoming matches), which is more specific than the bare name. It doesn't explicitly contrast itself with siblings like find_leagues or find_teams, but the scope (all sports, global) is inferable from the fragment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternative named. An agent must infer that this is a discovery/entry-point call rather than a filtered query, with nothing in the text to confirm or deny that.
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.
13 tool updates
- First observed
find_leagues - First observed
find_teams - First observed
get_league_facts - First observed
get_live_matches - First observed
get_match - First observed
get_match_briefing - First observed
get_match_details - First observed
get_matches - First observed
get_player - First observed
get_standings - First observed
get_team - First observed
get_team_briefing - First observed
list_sports
Related MCP Connectors
Live scores, fixtures, standings, team profiles and news for 2000+ football and basketball leagues.
Football form, fixtures, results and tables for six top European leagues.
Football fixtures, standings, and odds intelligence for AI agents.
Tables, results, fixtures, goal timing, season projections: 93 football leagues incl. lower tiers
Related MCP Servers
- AlicenseAqualityCmaintenanceLive football/soccer data from top European leagues, enabling queries for standings, fixtures, scorers, and team comparisons via natural language.613 npmMIT

sportapi-mcpofficial
AlicenseAqualityBmaintenanceLive and prematch sports odds, scores, live statistics and match search from SportAPI (football, basketball, tennis, esports and more). Works with demo data without an API key.11MIT- AlicenseNot gradedqualityBmaintenanceAccess football (soccer) data including competitions, matches, standings, and team details via the Football-Data.org API.105 npm2MIT
- AlicenseAqualityBmaintenanceProvides football fixtures, real results, and bet settlement with odds arithmetic, enabling AI agents to devig markets, evaluate prices, and settle picks without an API key.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.