Skip to main content
Glama

Server Details

Football form, fixtures, results and tables for six top European leagues.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
GoodTurnStudio/goodturn-mcp
GitHub Stars
0
Server Listing
goodturn-mcp

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation3/5

get_fixtures, get_results, and get_table are clearly distinct, but get_team bundles position, form, and next games, which overlaps significantly with get_table (position), get_fixtures (next games), and compare_teams (position/form head-to-head). Descriptions help orient the agent, but tool boundaries blur for single-team queries.

Naming Consistency5/5

All five tools follow a strict snake_case verb_noun pattern (compare_teams, get_fixtures, get_results, get_table, get_team). No deviations or mixed conventions.

Tool Count5/5

Five tools is well-scoped for a football form/stats server, with each covering a natural query type (single team, comparison, fixtures, results, table). Nothing feels redundant at the count level.

Completeness4/5

The surface covers the core lifecycle a fan needs: table, fixtures, results, team summary, and head-to-head comparison. Minor gaps exist (no league/team discovery list, no historical head-to-head beyond current season), but agents can work around these from the descriptions.

Available Tools

5 tools
compare_teamsTwo clubs side by side before they meetA
Read-onlyIdempotent
Inspect

Two clubs side by side before they meet. For requests like "Arsenal v Leeds, how do they compare?". Gives positions, form, goals, this season's meeting and the next date they play. Stats only, not betting advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
awayYesA different club from home.
homeYesThe home club, for example Arsenal.
team1NoOlder name for home, kept for existing callers; home is the current name.
team2NoOlder name for away, kept for existing callers; away is the current name.
countryNoUS or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known).

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds a useful scope caveat ("Stats only, not betting advice") and lists returned categories, but nothing about rate limits or lookups that might fail for unknown clubs.

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?

Three short sentences, front-loaded with the identity of the tool, then an example trigger, then a scope boundary. No sentence is filler.

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 usefully enumerates what comes back (positions, form, goals, this season's meeting, next date). It omits the country parameter's effect, but the schema already documents that fully.

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%, and the schema itself documents home/away ordering, the legacy team1/team2 aliases and the country kick-off-time behavior. The description adds no parameter meaning beyond the example team pair, so the baseline 3 applies.

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 resource and scope: two clubs compared side by side with positions, form, goals and meetings. This clearly separates it from singular siblings like get_team and get_table, though it never names an alternative tool.

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?

It gives a concrete triggering request ("Arsenal v Leeds, how do they compare?") and implies pre-match use, which is enough context to select it. There is no explicit when-not or named alternative, so it falls 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_fixturesUpcoming fixtures for a club or a leagueA
Read-onlyIdempotent
Inspect

Upcoming fixtures for a club or a league. For requests like "who do Liverpool play next?" or "what's on in La Liga this weekend?". Without team or league, gives the Premier League.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow far ahead, a whole number from 1 to 60. Default 21. If nothing falls in the window (an international break), the next fixtures are returned anyway.
teamNoA club name, for example Liverpool or Real Madrid.
leagueNoOne of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404.
countryNoUS or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/openWorld/destructive=false, so safety is covered. The description usefully adds behavior beyond them: what happens when neither team nor league is supplied, and the international-break fallback is captured in the schema. No contradictions; a genuinely useful default is disclosed.

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?

Three short sentences, front-loaded with the verb+resource before examples. The example queries earn their place by clarifying intent, though they are illustrative rather than strictly necessary.

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, zero-parameter-required read tool with fully documented schema and no output schema, the description covers purpose, usage triggers, and default behavior. The only mild gap is not distinguishing itself from get_results, but nothing needed to invoke it correctly is missing.

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 is already documented (days window and default, team, enumerated leagues, country kick-off behavior). The description only restates the team/league idea and adds no format or unit detail 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.

Purpose5/5

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

States a specific verb and resource (upcoming fixtures) plus a scope (a club or a league), which cleanly separates it from siblings like get_results (past matches) and get_table (standings). The default-League behavior is stated up front so the agent knows what happens with no input.

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?

Gives concrete natural-language trigger examples ('who do Liverpool play next?', 'what's on in La Liga this weekend?') and explicitly defines the no-argument fallback (Premier League). It never names the sibling it competes with (get_results for played matches), so routing is only implied rather than contrasted.

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

get_resultsLatest results for a club, or the last round of a leagueA
Read-onlyIdempotent
Inspect

Latest results for a club, or the last round of a league. For requests like "how did Chelsea get on?" or "what were the Serie A results?". Without team or league, gives the Premier League.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoHow many of the club's results, a whole number from 1 to 20. Default 5.
teamNoA club name, for example Liverpool or Real Madrid.
leagueNoOne of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds an important behavioral trait beyond the annotations: with no team or league it defaults to the Premier League. It does not describe return shape, freshness/latency, or the 404 behavior for unknown leagues.

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?

Two short sentences with the capability front-loaded, followed by examples. The example queries take space but earn it by anchoring intent matching. No filler.

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 carries the burden of telling the agent what to expect, and it does so adequately for a read-only lookup tool. The only gap is the interaction between n and the league mode, but for a simple, well-annotated tool this is close to 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?

Schema description coverage is 100%, so the schema already documents all three parameters including the 1-20 range and valid league names. The description only reinforces defaults (Premier League fallback); it does not clarify whether n applies when a league (last round) is requested, which is a residual semantic gap. Baseline 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 states a specific verb+resource ('Latest results for a club, or the last round of a league'), which tells an agent exactly what is returned. It implicitly separates itself from get_fixtures (upcoming) and get_table (standings), but never names a sibling to make the distinction explicit.

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?

It gives concrete example intents ('how did Chelsea get on?', 'what were the Serie A results?'), so an agent can map a user question to this tool with confidence. It does not state when NOT to use it or point to siblings for adjacent needs.

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

get_tableLeague tableA
Read-onlyIdempotent
Inspect

League table. For requests like "show me the Championship table" or "who is top of La Liga?". Points include official deductions; a deducted club's row has points_deducted.

ParametersJSON Schema
NameRequiredDescriptionDefault
leagueNoOne of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. Default premier league.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds real domain context that annotations cannot: points include official deductions and deducted clubs carry a points_deducted row, which matters for interpreting standings.

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?

Three short sentences, front-loaded with the resource and then the example intents. Every sentence carries information, though the examples and the deduction note could be slightly tighter.

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 usefully explains the one non-obvious return field (points_deducted) and how points are computed. For a single-optional-param read tool this is nearly complete; only explicit sibling routing is absent.

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% and the schema already documents the accepted league values, variants, default, and 404 behavior. The description adds nothing about the league parameter, so the baseline 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 names a specific resource, the league table/standings, and the example queries show precisely what question it answers. It is clearly distinguishable from siblings like get_fixtures, get_results, and get_team, though it never states a verb beyond the title restatement.

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 example requests ("show me the Championship table", "who is top of La Liga?") imply the usage context well, but there is no explicit when-to-use statement or routing guidance relative to compare_teams or get_results.

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

get_teamA club's league position, recent form and next gamesA
Read-onlyIdempotent
Inspect

A club's league position, recent form and next games. For requests like "how are Arsenal doing?", "what's Spurs' form?", "when do Birmingham play next?"

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOlder name for team, kept for existing callers; team is the current name.
teamYesClub name as the user said it, up to 80 characters. Nicknames and small typos are fine.
leagueNoOne of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. Only needed if two clubs share a name.
countryNoTwo-letter country code for the shirt link (US, GB and IE get local Amazon links). Default from the request. When passed as US or CA, the say line also gives the next kick-off in US Eastern time.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile needs no restating. The description adds the return contents, which is valuable since no output schema exists, but says nothing about lookup failure behavior, name-resolution ambiguity, or the output-formatting effects of country.

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 sentences, front-loaded with what the tool returns followed by concrete user-intent examples. Nothing is wasted and the shape is immediately scannable.

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 read-only lookup with rich schema descriptions and no output schema, the description is nearly sufficient: it names the returned fields and shows triggering phrases. It would be complete if it flagged disambiguation (league) or the 404 path, but those live in the schema.

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 all four parameters (including q/team duplication, league enum-ish list, and country formatting behavior) are already documented at a high standard. The description adds no parameter-level 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.

Purpose4/5

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

States a specific resource (a club) and the three data elements returned (league position, recent form, next games), which implicitly separates it from get_table, get_fixtures and get_results. It does not name or explicitly contrast any sibling, so an agent must infer the boundary itself.

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 quoted example requests ("how are Arsenal doing?", "when do Birmingham play next?") map real user intents onto this tool, which is genuinely useful triage guidance. There is no explicit when-not guidance or pointer to compare_teams/get_table for overlapping requests, 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.

Tool Schema Changelog

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

  1. 3 tool updates
    • Changedcompare_teams3 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Pass US or CA to add US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."New value: +"US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."
      • changedInput schema / properties / team1 / description
        Previous value: -"Older name for home, kept for existing callers. Use home."New value: +"Older name for home, kept for existing callers; home is the current name."
      • changedInput schema / properties / team2 / description
        Previous value: -"Older name for away, kept for existing callers. Use away."New value: +"Older name for away, kept for existing callers; away is the current name."
    • Changedget_fixtures1 field changed
      • changedInput schema / properties / country / description
        Previous value: -"Pass US or CA to add US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."New value: +"US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."
    • Changedget_team1 field changed
      • changedInput schema / properties / q / description
        Previous value: -"Older name for team, kept for existing callers. Use team."New value: +"Older name for team, kept for existing callers; team is the current name."
  2. 5 tool updates
    • First observedcompare_teams
    • First observedget_fixtures
    • First observedget_results
    • First observedget_table
    • First observedget_team

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.