Skip to main content
Glama

Whistle.day - Tournament organizer

get_fixture

Read-onlyIdempotent

Get a fixture by ID with games

Input Schema

NameRequiredDescriptionDefault
idYesFixture ID

Output Schema

NameRequiredDescriptionDefault
idYesRecord ID
codeYesShort handle for the match, e.g. A1 or QF2
poolYesPool ID, empty when the stage has no pools
courtYesCourt ID, empty when unassigned
gamesYes
loserYesEntry ID of the loser, empty until decided
roundYesRound, 0-based
stageYesStage ID
statusYesStatus
winnerYesEntry ID of the winner, empty until decided
positionYesOrder, 0-based; in a table, the rank
away_slotYesSlot ID the away side is drawn from
home_slotYesSlot ID the home side is drawn from
away_entryYesEntry ID of the away side, empty until it is known
away_scoreYesAway score: sets, or goals
home_entryYesEntry ID of the home side, empty until it is known
home_scoreYesHome score: sets, or goals
scheduled_atYesScheduled start, UTC, empty when unscheduled

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "away_entry": {
      +      "description": "Entry ID of the away side, empty until it is known",
      +      "type": "string"
      +    },
      +    "away_score": {
      +      "description": "Away score: sets, or goals",
      +      "type": "integer"
      +    },
      +    "away_slot": {
      +      "description": "Slot ID the away side is drawn from",
      +      "type": "string"
      +    },
      +    "code": {
      +      "description": "Short handle for the match, e.g. A1 or QF2",
      +      "type": "string"
      +    },
      +    "court": {
      +      "description": "Court ID, empty when unassigned",
      +      "type": "string"
      +    },
      +    "games": {
      +      "items": {
      +        "properties": {
      +          "away_score": {
      +            "description": "Away score: sets, or goals",
      +            "type": "integer"
      +          },
      +          "home_score": {
      +            "description": "Home score: sets, or goals",
      +            "type": "integer"
      +          },
      +          "id": {
      +            "description": "Record ID",
      +            "type": "string"
      +          },
      +          "number": {
      +            "description": "Set or game number, 1-based",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "number",
      +          "home_score",
      +          "away_score"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "home_entry": {
      +      "description": "Entry ID of the home side, empty until it is known",
      +      "type": "string"
      +    },
      +    "home_score": {
      +      "description": "Home score: sets, or goals",
      +      "type": "integer"
      +    },
      +    "home_slot": {
      +      "description": "Slot ID the home side is drawn from",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "Record ID",
      +      "type": "string"
      +    },
      +    "loser": {
      +      "description": "Entry ID of the loser, empty until decided",
      +      "type": "string"
      +    },
      +    "pool": {
      +      "description": "Pool ID, empty when the stage has no pools",
      +      "type": "string"
      +    },
      +    "position": {
      +      "description": "Order, 0-based; in a table, the rank",
      +      "type": "integer"
      +    },
      +    "round": {
      +      "description": "Round, 0-based",
      +      "type": "integer"
      +    },
      +    "scheduled_at": {
      +      "description": "Scheduled start, UTC, empty when unscheduled",
      +      "type": "string"
      +    },
      +    "stage": {
      +      "description": "Stage ID",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Status",
      +      "type": "string"
      +    },
      +    "winner": {
      +      "description": "Entry ID of the winner, empty until decided",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "code",
      +    "status",
      +    "round",
      +    "position",
      +    "home_entry",
      +    "away_entry",
      +    "home_score",
      +    "away_score",
      +    "winner",
      +    "loser",
      +    "court",
      +    "scheduled_at",
      +    "stage",
      +    "pool",
      +    "home_slot",
      +    "away_slot",
      +    "games"
      +  ],
      +  "type": "object"
      +}
  2. Changed2 schema fields changed
    • removedInput schema / properties / session_token
      Removed value: -{
      -  "description": "The session_token returned by create_tournament",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "id",
      -  "session_token"
      -]New value: +[
      +  "id"
      +]
  3. First observed

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 and destructiveHint=false, so the safety profile is covered. The description's only added behavioral detail is that games are bundled into the response, which is useful but thin for a tool with an output schema.

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?

Seven words, front-loaded with the action and resource, and the payload qualifier ('with games') is placed immediately after. No sentence is wasted.

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 an output schema present, return values need not be spelled out, and annotations cover safety and idempotency. The definition is sufficient for correct invocation; only the lack of routing against list_fixtures/update_fixture keeps it from a 5.

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?

One parameter with 100% schema description coverage, so the schema already documents the ID. The phrase 'by ID' merely restates that and adds no format, source, or resolution guidance beyond the schema.

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 verb (get) and resource (fixture) and adds that games are included, so the payload is distinguishable from a bare fetch. It does not explicitly name the sibling list_fixtures to contrast with, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'by ID' — an agent infers this is the single-fixture lookup used when it already has an ID, versus list_fixtures for enumeration. No explicit when-to-use, prerequisites, or named alternative is given.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources