Skip to main content
Glama

Standings

get_standings
Read-only

Retrieve live cumulative standings for a competition, league, or specific group and view ranked teams with points, wins, losses, and goal difference.

Instructions

Live cumulative standings: omit group for every table, or pass one table's key: a group letter (A–L in the World Cup), A1 for a numbered group, A-B for group B of league A, LEAGUE for a league's single table. Each table that is not a lettered group carries a label (the provider's name) and its title shows the key in parentheses. Returns ranked rows (team, played, W/D/L, goal difference, points). incomplete:true means a table could not be read and the tables returned are not the whole competition; a table with partial is missing rows. Use get_today for fixtures/scores and get_next_fixture for one team. If unavailable, the World Cup returns its roster at zero; competitions without a compatible bundled roster return no tables. Both are flagged degraded.

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
groupNoTable key: a group letter (A), or A1, A-B, LEAGUE (omit for all)
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
sourceYes
tablesYes
degradedYes
incompleteNoPresent (true) when the provider sent a table that could not be read: the tables returned are not the whole competition
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
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>)
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. Changed7 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 / group / description
      Previous value: -"Group letter A–L (omit for all)"New value: +"Table key: a group letter (A), or A1, A-B, LEAGUE (omit for all)"
    • changedInput schema / properties / group / pattern
      Previous value: -"^[A-La-l]$"New value: +"^[A-Za-z0-9-]{1,12}$"
    • 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)"
    • 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"
      +}
    • addedOutput schema / properties / incomplete
      Added value: +{
      +  "const": true,
      +  "description": "Present (true) when the provider sent a table that could not be read: the tables returned are not the whole competition",
      +  "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"
      +}
  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"
      +    },
      +    "source": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tables": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "items": {
      +            "$ref": "#/properties/tables/anyOf/0"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "degraded",
      +    "source",
      +    "tables"
      +  ],
      +  "type": "object"
      +}
  5. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the readOnly/openWorld annotations by disclosing failure semantics that annotations cannot express: incomplete:true means the returned tables are not the whole competition, partial means missing rows, and a degraded World Cup roster returns zeroed rows. The only gap is that it does not say whether tables are cached/live-refreshed beyond the word "Live".

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?

Front-loaded with the operation and the key-routing rule, then failure modes. The middle sentence about labels and parenthesized titles is provider-detail padding that an agent rarely needs, costing some tightness.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and annotations cover safety. The description still supplies what is missing for correct invocation: key formats, fallback behavior when a competition is unavailable, and degradation flags.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value on the one non-obvious parameter by enumerating the `group` key grammar (A, A1, A-B, LEAGUE) and explaining the resulting label/title convention. Nothing is said about tz/lang/flavor/competition beyond what the schema already covers.

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 ("Live cumulative standings") with scope (all tables vs. one table) and names the two sibling tools it must not be confused with. An agent can distinguish it from get_today and get_next_fixture without reading the schema.

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?

Explicit routing rules: omit `group` for every table, pass a table key for one, use get_today for fixtures/scores and get_next_fixture for a single team's fixture. It does not cover cases like brackets (get_bracket) or live scores (get_live), so the sibling coverage is incomplete but the core guidance is clear.

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