Skip to main content
Glama

Next fixture for a team

get_next_fixture
Read-only

Find a team's next match in a World Cup or club competition, with kickoff times and fixture details. Use it to answer "when does this team play next?" by team name or code.

Instructions

A team's next match. World Cup: a nation's code or name (MEX, Mexico); a confirmed knockout tie is read from the live overlay, group fixtures from the bundled schedule. A club competition: a club's name or code (Arsenal, ARS), resolved against the competition's roster; its earliest match not yet finished in the 14 days ahead (in play included), with team (the club resolved), candidates when several teams match (no fixture is picked), horizon when none falls in that span, unknownTeam when neither the competition's table (read whole) nor its fixtures over those 14 days hold such a team, rosterIncomplete when the roster could not be read whole and the name (a code or a partial name) could not be resolved without it: ask again with the club's full name. partial means the provider sent records that could not be used: the answer is what was read, and no fixture then does not mean the team is out. With no team: the server's CLAUDINHO_TEAM, else the team the user pinned (claudinho follow --team ) when the request is for that team's competition; a tool error when there is neither.

Input Schema

NameRequiredDescriptionDefault
tzNoIANA timezone for kickoff times, e.g. America/Mexico_City
langNoLocale for dates, list titles, match status and stage words, a match timeline's kind words (Goal, Yellow card…), the empty and outage sentences, provider attribution, and commentary: en, es, pt or fr (no other value is supported). Without it, or when it is empty, the server's CLAUDINHO_LANG when that is exactly one of the four, else en. The market copy, a few notes and the disclaimer stay English
teamNoA team name or code: a club (Arsenal, ARS) or a nation (Mexico, MEX). Omit for the server's CLAUDINHO_TEAM, else the team the user pinned
flavorNoCommentary flair: off, subtle, full (default: full)
competitionNoThe competition: an alias such as premier-league, or an ESPN slug such as eng.1 (list_competitions lists the aliases). Without it: the server's CLAUDINHO_COMPETITION, else the user's saved choice (claudinho follow); with none, the answer is noCompetition

Output Schema

NameRequiredDescriptionDefault
teamYes
seasonNo
sourceYes
fixtureYes
horizonNoOff the World Cup: a whole read of this many provider days ahead held no fixture for the team
partialNoPresent when the provider sent records that could not be used: what is returned is what was read, and may not be the whole answer (absence is not elimination). omitted is how many provider records were left out, when known; they may have lain outside what was asked for, so the count is a bound, not a loss
degradedYes
candidatesNoTwo or more teams matched the name: no fixture is picked; ask which one
competitionNoThe competition this answer is for: its ESPN slug, its alias, its name, where the choice came from (flag: the competition argument; env: the server's CLAUDINHO_COMPETITION; saved: the user's saved choice, claudinho follow), and experimental for a slug the supported table does not hold; null with noCompetition when nothing is chosen
unknownTeamNoPresent (true) when the roster the competition has holds no team by that name: the bundled nations on the World Cup; the table read whole and the next 14 days' fixtures elsewhere (a claim about that evidence, not the whole competition: a club out in a qualifying round is in no table). Never stated when the table or the span could not be read whole
unsupportedNoPresent (true) when this is not available for this competition yet; an empty result then means "unsupported", not "none found"
inapplicableNoPresent (true) when this competition has no such thing at all (a league season with no knockout tie has no knockout tree)
noCompetitionNoPresent (true) when no competition is chosen (no competition argument, no server CLAUDINHO_COMPETITION, no saved choice): nothing was read, competition is null, and the text says what to do (pass competition, or the user runs claudinho follow <alias>)
rosterEvidenceNoWith unknownTeam: the evidence it rests on, the competition's table and span (table) or the World Cup's bundled nations (bundle)
betweenEditionsNoPresent when the competition is between editions: the edition named by label ended on ended (the provider's calendar day, YYYY-MM-DD, the season end it states), and nothing in the read is scheduled or in play
rosterIncompleteNoPresent (true) when the competition's roster could not be read whole and the name could not be resolved without it (no match, or only by a code or a partial name); not an outage: ask with the club's full name
responseTruncatedNo
responseTruncationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.13.1
    • changedInput schema / properties / lang / description
      Previous value: -"Locale for dates, list titles, match status and stage words, a match timeline's kind words (Goal, Yellow card…), the empty and outage sentences, provider attribution, and commentary: en, es, pt, fr (the market copy, a few notes and the disclaimer stay English; other locales fall back to en)"New value: +"Locale for dates, list titles, match status and stage words, a match timeline's kind words (Goal, Yellow card…), the empty and outage sentences, provider attribution, and commentary: en, es, pt or fr (no other value is supported). Without it, or when it is empty, the server's CLAUDINHO_LANG when that is exactly one of the four, else en. The market copy, a few notes and the disclaimer stay English"
  2. Changed22 schema fields changedv0.12.0
    • addedInput schema / properties / competition
      Added value: +{
      +  "description": "The competition: an alias such as premier-league, or an ESPN slug such as eng.1 (list_competitions lists the aliases). Without it: the server's CLAUDINHO_COMPETITION, else the user's saved choice (claudinho follow); with none, the answer is noCompetition",
      +  "type": "string"
      +}
    • changedInput schema / properties / lang / description
      Previous value: -"Locale for dates, provider attribution, and commentary: en, es, pt, fr (the summary scaffold stays English; other locales fall back to en)"New value: +"Locale for dates, list titles, match status and stage words, a match timeline's kind words (Goal, Yellow card…), the empty and outage sentences, provider attribution, and commentary: en, es, pt, fr (the market copy, a few notes and the disclaimer stay English; other locales fall back to en)"
    • changedInput schema / properties / team / description
      Previous value: -"3-letter team code, e.g. MEX"New value: +"A team name or code: a club (Arsenal, ARS) or a nation (Mexico, MEX). Omit for the server's CLAUDINHO_TEAM, else the team the user pinned"
    • addedInput schema / properties / team / maxLength
      Added value: +40
    • addedInput schema / properties / team / minLength
      Added value: +1
    • removedInput schema / properties / team / pattern
      Removed value: -"^[A-Za-z]{3}$"
    • removedInput schema / required
      Removed value: -[
      -  "team"
      -]
    • addedOutput schema / properties / betweenEditions
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present when the competition is between editions: the edition named by label ended on ended (the provider's calendar day, YYYY-MM-DD, the season end it states), and nothing in the read is scheduled or in play",
      +  "properties": {
      +    "ended": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ended"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / candidates
      Added value: +{
      +  "description": "Two or more teams matched the name: no fixture is picked; ask which one",
      +  "items": {
      +    "$ref": "#/properties/team/anyOf/1"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / competition
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {
      +        "alias": {
      +          "type": "string"
      +        },
      +        "chosenBy": {
      +          "enum": [
      +            "flag",
      +            "env",
      +            "saved"
      +          ],
      +          "type": "string"
      +        },
      +        "experimental": {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "slug": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slug",
      +        "name",
      +        "chosenBy"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The competition this answer is for: its ESPN slug, its alias, its name, where the choice came from (flag: the competition argument; env: the server's CLAUDINHO_COMPETITION; saved: the user's saved choice, claudinho follow), and experimental for a slug the supported table does not hold; null with noCompetition when nothing is chosen"
      +}
    • changedOutput schema / properties / fixture / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "away": {
      -        "$ref": "#/properties/fixture/anyOf/0/properties/home"
      -      },
      -      "group": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "home": {
      -        "additionalProperties": true,
      -        "properties": {
      -          "code": {
      -            "type": "string"
      -          },
      -          "flag": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "kickoff": {
      -        "type": "string"
      -      },
      -      "minute": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "score": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": true,
      -            "properties": {
      -              "away": {
      -                "type": "number"
      -              },
      -              "home": {
      -                "type": "number"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "shootout": {
      -        "$ref": "#/properties/fixture/anyOf/0/properties/score/anyOf/0"
      -      },
      -      "stage": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "venue": {
      -        "type": "string"
      -      },
      -      "winnerCode": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "away": {
      +        "$ref": "#/properties/team/anyOf/1"
      +      },
      +      "events": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "added": {
      +              "type": "number"
      +            },
      +            "minute": {
      +              "type": "number"
      +            },
      +            "player": {
      +              "type": "string"
      +            },
      +            "side": {
      +              "type": "string"
      +            },
      +            "teamCode": {
      +              "type": "string"
      +            },
      +            "type": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "group": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "home": {
      +        "$ref": "#/properties/team/anyOf/1"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "kickoff": {
      +        "type": "string"
      +      },
      +      "minute": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "score": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": true,
      +            "properties": {
      +              "away": {
      +                "type": "number"
      +              },
      +              "home": {
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "shootout": {
      +        "$ref": "#/properties/fixture/anyOf/0/properties/score/anyOf/0"
      +      },
      +      "stage": {
      +        "type": "string"
      +      },
      +      "stageLabel": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "venue": {
      +        "type": "string"
      +      },
      +      "winnerCode": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / horizon
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Off the World Cup: a whole read of this many provider days ahead held no fixture for the team",
      +  "properties": {
      +    "days": {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "days"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / inapplicable
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when this competition has no such thing at all (a league season with no knockout tie has no knockout tree)",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / noCompetition
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when no competition is chosen (no competition argument, no server CLAUDINHO_COMPETITION, no saved choice): nothing was read, competition is null, and the text says what to do (pass competition, or the user runs claudinho follow <alias>)",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / partial
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present when the provider sent records that could not be used: what is returned is what was read, and may not be the whole answer (absence is not elimination). omitted is how many provider records were left out, when known; they may have lain outside what was asked for, so the count is a bound, not a loss",
      +  "properties": {
      +    "omitted": {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / rosterEvidence
      Added value: +{
      +  "description": "With unknownTeam: the evidence it rests on, the competition's table and span (table) or the World Cup's bundled nations (bundle)",
      +  "enum": [
      +    "table",
      +    "bundle"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / rosterIncomplete
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when the competition's roster could not be read whole and the name could not be resolved without it (no match, or only by a code or a partial name); not an outage: ask with the club's full name",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / season
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / team / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "flag": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / team / type
      Removed value: -"string"
    • addedOutput schema / properties / unknownTeam
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when the roster the competition has holds no team by that name: the bundled nations on the World Cup; the table read whole and the next 14 days' fixtures elsewhere (a claim about that evidence, not the whole competition: a club out in a qualifying round is in no table). Never stated when the table or the span could not be read whole",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / unsupported
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when this is not available for this competition yet; an empty result then means \"unsupported\", not \"none found\"",
      +  "type": "boolean"
      +}
  3. Changed2 schema fields changedv0.10.0
    • addedOutput schema / properties / responseTruncated
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / responseTruncation
      Added value: +{
      +  "type": "string"
      +}
  4. Changed2 schema fields changedv0.9.0
    • changedInput schema / properties / lang / description
      Previous value: -"Locale for formatting: en, es, pt, fr (other locales fall back to en)"New value: +"Locale for dates, provider attribution, and commentary: en, es, pt, fr (the summary scaffold stays English; other locales fall back to en)"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "degraded": {
      +      "type": "boolean"
      +    },
      +    "fixture": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "away": {
      +              "$ref": "#/properties/fixture/anyOf/0/properties/home"
      +            },
      +            "group": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "home": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "code": {
      +                  "type": "string"
      +                },
      +                "flag": {
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "kickoff": {
      +              "type": "string"
      +            },
      +            "minute": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "score": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "away": {
      +                      "type": "number"
      +                    },
      +                    "home": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "shootout": {
      +              "$ref": "#/properties/fixture/anyOf/0/properties/score/anyOf/0"
      +            },
      +            "stage": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "type": "string"
      +            },
      +            "venue": {
      +              "type": "string"
      +            },
      +            "winnerCode": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "source": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "team": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "team",
      +    "fixture",
      +    "degraded",
      +    "source"
      +  ],
      +  "type": "object"
      +}
  5. First observedv0.1.0

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial behavioral detail beyond that — the World Cup vs club resolution paths, the 14-day horizon with in-play matches included, and the meaning of candidates, horizon, unknownTeam, rosterIncomplete and partial. It even documents the tool-error condition when no team can be resolved.

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

Conciseness2/5

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

The description is a dense, colon-laden run-on that leads with the World Cup edge case rather than a clean one-line purpose, making it hard to parse. Several state names (candidates, horizon, partial, rosterIncomplete) are almost certainly output fields already covered by the output schema, so restating them here is partly redundant.

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 tool this complex with five optional parameters, the description covers the fallback chains and failure modes an agent needs to call it correctly and interpret empty results. Since an output schema exists, the missing return-shape explanation is appropriately left to that schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real semantics beyond the schema: it explains how a team string is resolved (nation vs club roster), that a club's earliest unfinished match within 14 days is chosen, and that a code/partial name fails with rosterIncomplete unless the full club name is used.

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 opening fragment 'A team's next match' plus the detailed resolution rules make it clear this returns the upcoming fixture for a team, split by World Cup vs club competition. It never names a sibling (get_today, get_live, get_match) to differentiate scope, so an agent must infer the boundary from context alone.

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?

Usage is implied through the 'With no team: CLAUDINHO_TEAM, else pinned team' fallback and the competition default chain, which tells the agent it can be called with zero arguments. However there is no explicit when-to-use/when-not statement and no alternative tool is ever named.

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