Skip to main content
Glama
jsvirtane

Tulospalvelu MCP

by jsvirtane

Tulospalvelu MCP

Read-only MCP server for the Palloliitto's result service API.

Features

  • Connect AI applications to Palloliitto's result service data.

  • Search clubs, teams, players, competitions and venues data through the open search endpoint for football & futsal.

  • Find and inspect match data.

  • Discover competitions, historical season data.

  • Inspect league tables, player statistics, and optional embedded group matches.

  • Return normalized, LLM-friendly JSON payloads over MCP stdio.

Related MCP server: playmetrics_mcp

Get started

Prerequisites:

  • Node.js 20+

Usage

  1. Clone the repository

  2. Build the application

    npm install
    npm run build
  3. Install the MCP

  • Codex

    codex mcp add palloliitto \
    --env PALLOLIITTO_ACCEPT_HEADER=<your-accept-header> \
    -- node /absolute/path/to/palloliitto-mcp/dist/server.js
  • Claude Code

  • Github Copilot CLI

  1. Enjoy!

Development

npm install
npm run build
npm run typecheck

Configuration

The server reads configuration from environment variables.

Variable

Required

Default

PALLOLIITTO_BASE_URL

No

https://spl.torneopal.net/taso/rest

PALLOLIITTO_ACCEPT_HEADER

Yes

-

PALLOLIITTO_REQUEST_TIMEOUT_MS

No

10000

Acquiring PALLOLIITTO_ACCEPT_HEADER

  • Open Palloliitto's result service

  • Open browser's developer tools

  • Locate network tab

  • Initiate search from the page

  • Locate related network event search?text=<your-search-string>

  • Look for Accept request header in Headers-tab and copy its value to use it as PALLOLIITTO_ACCEPT_HEADER env variable

Tools

  • search_entities

  • list_seasons

  • list_competitions

  • get_competition

  • list_categories

  • get_league_table

  • list_matches

  • get_match

  • get_match_score

  • list_teams

  • get_team

  • get_player

Available Tools

12 tools
get_competitionGet CompetitionB

Get a single competition by its Palloliitto competition ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
competitionIdYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility. It implies a read operation but does not disclose error behavior, required permissions, or return format.

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 sentence with 10 words, front-loading the verb and resource, with no unnecessary information.

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?

Given the tool's simplicity (one parameter, no output schema), the description is minimally sufficient but lacks details on return value, error handling, and confirmation of single-entity retrieval.

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 description adds context to the sole parameter 'competitionId' by specifying it is a 'Palloliitto competition ID', which gives domain-specific meaning beyond the schema. However it does not elaborate on format or validation.

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 clearly specifies the verb 'Get' and resource 'competition', and distinguishes it from siblings like list_competitions by stating retrieval by a specific ID (Palloliitto competition ID).

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 provided on when to use this tool versus siblings like list_competitions or get_league_table. The agent has no context for decision-making.

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

get_league_tableGet League TableB

Get detailed league table data, standings, player statistics, and optionally matches for a single group.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYes
categoryIdYes
competitionIdYes
includeMatchesNo

TDQS

B3.1/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It describes what is returned ('standings, player statistics, matches') but lacks details on data freshness, pagination, rate limits, or other behavioral traits. Adequate but not rich.

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?

Single sentence, front-loaded, no wasteful or redundant text. Every word earns its place.

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?

Given no output schema, no annotations, and four parameters (three required), the description is incomplete. It does not specify return format, prerequisites, or parameter roles, leaving significant gaps for the agent.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any parameter (e.g., 'groupId', 'competitionId', 'includeMatches'). The agent gets no semantic help beyond the schema names.

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 clearly states the action ('Get'), the resource ('league table data'), and scope ('for a single group'), and distinguishes from sibling tools like 'list_competitions' or 'get_competition'.

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 provided on when to use this tool versus alternatives such as 'list_competitions' or 'get_competition'. The description does not mention context or exclusions.

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

get_matchGet MatchC

Get detailed match data for a single match ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
matchIdYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, and description only says 'detailed match data' without specifying side effects, rate limits, return format, or whether it's read-only, leaving agent uninformed about behavior.

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?

Single sentence is concise and front-loaded, but could include more useful information without sacrificing brevity.

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 no output schema and no behavioral details, the description fails to fully inform the agent about the tool's output or how it fits with siblings like list_matches; minimal for a simple tool.

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

Parameters2/5

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

Schema coverage is 0%, and description merely states parameter 'single match ID' without adding format, examples, or semantic context beyond the schema.

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?

Clearly states verb 'Get', resource 'detailed match data', and scope 'for a single match ID', distinguishing it from siblings like get_match_score or list_matches.

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 on when to use this tool vs alternatives like get_match_score or list_matches, and no prerequisites or exclusions provided.

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

get_match_scoreGet Match ScoreC

Get the current or final score for a single match ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
matchIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It fails to mention what happens for invalid match IDs, whether the score is returned in a specific format, or any side effects. The ambiguity between 'current or final' also lacks explanation.

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 wasted words. It is appropriately sized for a simple tool, though it could be longer to include more 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?

Given the lack of output schema and annotations, the description fails to explain the return format (e.g., numeric score, object with home/away) or how to interpret 'current or final'. It is incomplete for an agent to reliably invoke the tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It says 'for a single match ID', which implies matchId is the identifier, but does not specify format, source, or constraints beyond the schema's minLength. This adds minimal value.

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 clearly states the tool retrieves the current or final score for a single match ID. It uses a specific verb 'Get' and resource 'score for a single match ID', distinguishing it from siblings like 'get_match' which likely returns full match details.

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 over siblings, nor does it mention any prerequisites or exclusions. It merely states the basic function, leaving the agent without context for decision-making.

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

get_playerGet PlayerB

Get player details by Palloliitto player ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerIdYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. The description implies a read operation but does not disclose any side effects, error conditions, or permissions required. The agent has no information about potential behavioral traits beyond the basic read action.

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 sentence with no unnecessary words. It is front-loaded and to the point, effectively communicating the tool's purpose.

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 retrieval tool with one parameter and no output schema, the description is adequate but not complete. It does not describe what details are returned or any constraints. Given the lack of annotations and output schema, more detail would improve completeness.

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 input schema provides only a required string 'playerId' with minLength. The description adds 'by Palloliitto player ID', specifying the type of ID expected, which adds meaningful context beyond the schema. With 0% schema description coverage, this is a valuable addition.

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 clearly states it retrieves player details using a specific ID (Palloliitto player ID). However, it does not differentiate from sibling tools like get_team or get_match, which also retrieve details by ID.

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 on when to use this tool versus alternatives. It implies the need for a Palloliitto player ID but does not specify prerequisites or conditions where other tools would be more appropriate.

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

get_teamGet TeamA

Get current roster data for a team, or historical roster data when competitionId and categoryId are both provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYes
categoryIdNo
competitionIdNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that behavior changes based on parameter presence (current vs historical roster). Could explicitly note read-only nature, but current description is adequate.

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?

Single sentence that concisely conveys purpose and usage modes. No unnecessary words, front-loaded with action and resource.

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 3 parameters, no output schema, and no annotations, the description adequately covers primary usage modes. It could specify what 'roster data' includes, but overall complete for a get tool.

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 description coverage is 0%, but description adds meaning: explains that competitionId and categoryId enable historical mode. This clarifies the conditional requirement beyond the schema.

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 clearly states 'Get current roster data for a team' and distinguishes between current and historical modes based on parameter combination. This is specific and distinct from sibling tools like get_player or get_match.

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?

Description explains when to use historical mode (when competitionId and categoryId both provided). Though it doesn't explicitly state when not to use or compare to alternatives, it provides clear context for usage.

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

list_categoriesList CategoriesC

List categories for a competition.

ParametersJSON Schema
NameRequiredDescriptionDefault
competitionIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits such as ordering, pagination, error conditions, or whether the result is cached. The minimal description lacks transparency about tool behavior.

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 concise sentence, front-loaded with the key action and resource. It is efficient, though could be expanded slightly without losing conciseness.

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?

Given no annotations, no output schema, and a single parameter without description, the description is insufficient. It does not explain what categories are, how results are formatted, or any constraints, leaving the agent underinformed.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning beyond the schema. The required parameter competitionId is not explained, leaving the agent to infer its purpose from the tool name alone.

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 clearly states the action ('list') and the resource ('categories for a competition'). It distinguishes from sibling tools like list_competitions and list_matches by specifying 'categories' as the resource.

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 on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or when to choose list_categories over related tools.

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

list_competitionsList CompetitionsC

List competitions by season and organiser filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
currentNo
officialNo
seasonIdNo
organiserNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions filtering by season and organiser, adding some behavioral context beyond 'list'. However, it does not disclose pagination, ordering, limits, or default behavior when no filters are provided. The description is adequate but lacks depth.

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 sentence, very concise. It front-loads the action and resource. No wasted words, though it can be slightly improved by structuring the filter options.

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?

Given no output schema, no annotations, and 4 parameters with 0% schema coverage, the description is insufficient. It does not explain return format, behavior with no filters, or how it differs from similar list tools. The tool has moderate complexity, and the description falls short.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It mentions 'season and organiser filters', covering two of four parameters ('seasonId' and 'organiser'). But 'current' and 'official' are not explained, leaving half the parameters unclear.

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 clearly states the verb 'list' and resource 'competitions', with filters for season and organiser. It distinguishes from siblings like 'get_competition' (single) and 'list_seasons' (different resource). However, it could more explicitly state that it returns multiple competitions.

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 provided on when to use this tool over alternatives, such as 'get_competition' for a single competition or 'search_entities' for broader searches. The context is implied but not explicit.

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

list_matchesList MatchesC

List matches by date and filters, or run Taso text search mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
textNo
clubIdNo
teamIdNo
endDateNo
groupIdNo
pageSizeNo
seasonIdNo
startDateNo
venueCityNo
categoryIdNo
pageNumberNo
matchStatusNo
officialOnlyNo
competitionIdNo
includeDetailsNo
competitionOfficialityNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so description carries full burden. It mentions two modes but does not disclose behavior like whether parameters are mutually exclusive, pagination limits, or whether the operation is read-only. Minimal behavioral insight.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It does not break down the two modes or hint at the many parameters. Could be more organized without adding length.

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?

Given 17 parameters, no output schema, and no annotations, the description is far from complete. It does not explain the two modes in sufficient detail, nor how parameters work together for effective use.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It only mentions 'by date and filters' and 'Taso text search mode', but does not explain any of the 17 parameters or how they interact. Very little meaning added beyond parameter names.

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 clearly states it lists matches with date/filter or text search mode. The verb 'list' and resource 'matches' are explicit. However, it does not explicitly differentiate from sibling tools like 'get_match', though the purpose is distinct enough from context.

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 (listing matches with filters), but lacks explicit guidance on when not to use (e.g., for single match retrieval use get_match) or alternatives. No exclusions or context provided.

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

list_seasonsList SeasonsC

List seasons for a sport. Football is the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
sportNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description must bear the burden of behavioral traits. It only mentions listing and a default, omitting details like ordering, pagination, or whether it's read-only.

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 very concise with two sentences, front-loading the purpose. However, it could be more structured without extra elaboration needed.

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?

Given the simple tool with no output schema, the description is still incomplete. It does not describe the format of seasons returned (names, IDs, years), leaving the agent with insufficient context.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds that football is the default sport, but does not explain the futsal option or other parameter semantics needed for correct invocation.

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 clearly states the tool lists seasons for a sport, with a specific verb and resource. It distinguishes from sibling tools that deal with competitions, matches, or teams.

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 on when to use this tool versus alternatives like list_competitions. The description lacks context on prerequisites or scenarios.

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

list_teamsList TeamsC

List teams in a competition, optionally filtered by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryIdNo
competitionIdYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits, but it provides none. No mention of pagination, sorting, or read-only nature. The tool likely returns a list, but this is not explicit.

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

Conciseness3/5

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

Single sentence is concise, but it omits critical details. Not verbose, but under-informative.

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?

For a 2-parameter tool with no output schema and no annotations, the description is insufficient. It lacks details on return format, behavior with missing categoryId, or any constraints like pagination.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only hints at categoryId with 'optionally filtered by category'. No explanation of competitionId (required) or how categoryId filtering works. Adds minimal value beyond the schema.

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 clearly states verb (list), resource (teams), and scope (in a competition, optionally filtered by category). It distinguishes from sibling tools like get_team (single team retrieval) and list_competitions (different resource).

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 on when to use this tool versus alternatives like get_team or search_entities. The description only states what it does without any context for appropriate use or exclusions.

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

search_entitiesSearch EntitiesC

Search Palloliitto entities such as competitions, categories, clubs, teams, players, venues, and matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
limitNo
typesNo

TDQS

C2.2/5.0
Behavior1/5

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

With no annotations, the description must disclose search behavior. It does not mention pagination, case sensitivity, partial matching, or result format. This is a critical gap for a search tool.

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

Conciseness3/5

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

The description is very short (one sentence), which is concise but lacks structure. It front-loads the purpose but omits important details, making it insufficiently informative despite its brevity.

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

Completeness1/5

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

Given the absence of output schema and annotations, the description should compensate but fails to. It does not explain return values, pagination, or error behavior, making it severely incomplete for an effective tool invocation.

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

Parameters1/5

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

Schema coverage is 0% because the description adds no parameter explanations beyond the schema definitions. For example, it doesn't clarify that 'text' is a search query or that 'types' filters entity types.

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?

Description clearly states it searches multiple entity types (competitions, categories, etc.) and lists them, distinguishing from sibling get/list tools that return specific entities. However, it doesn't specify the search behavior (e.g., prefix/fuzzy) which could be clearer.

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 explicit guidance on when to use search vs sibling tools like get_* or list_*. The description implies general search use but omits prerequisites or alternatives, leaving the agent to infer.

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. 12 tool updatesv0.1.0
    • First observedget_competition
    • First observedget_league_table
    • First observedget_match
    • First observedget_match_score
    • First observedget_player
    • First observedget_team
    • First observedlist_categories
    • First observedlist_competitions
    • First observedlist_matches
    • First observedlist_seasons
    • First observedlist_teams
    • First observedsearch_entities

TDQS

B3.4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose. For example, get_match returns detailed match data while get_match_score returns only the score, and list_competitions vs get_competition differentiate between listing and single retrieval. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., get_competition, list_matches, search_entities). There are no deviations or mixed conventions, making it predictable for agents.

Tool Count5/5

With 12 tools, the set is well-scoped for a sports data service covering competitions, teams, matches, players, and standings. It provides sufficient granularity without being excessive or too sparse.

Completeness5/5

The tool surface covers the core domain of a football data API comprehensively: listing and retrieving competitions, seasons, categories, teams, matches, scores, league tables, players, and a general search. While it is read-only, it handles all typical query operations with no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for football-data.org API providing access to football data like standings, matches, teams, and scorers.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for the PlayMetrics youth-sports club management platform, enabling AI agents to query clubs, teams, players, schedules, registrations, and payments.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server that provides access to the public Basketball Vlaanderen (VBL) API, enabling users to query clubs, teams, matches, standings, and more.
    10
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides live football data from API-Football over HTTP, enabling queries for upcoming matches, recent results, current standings, injuries, live matches, and team search through MCP tools.
    -