Skip to main content
Glama

Match detail

get_match
Read-onlyIdempotent

Full detail for one match by id: players, score, surface, round and status. Includes market prices on PRO and model analysis on ULTRA. Works on the FREE plan (no card needed).

Input Schema

NameRequiredDescriptionDefault
match_idYesMatch id, as returned by get_live_matches, get_upcoming_matches or get_recent_results.

Output Schema

NameRequiredDescriptionDefault
okYesTrue when the request succeeded, including when the answer is an empty list. False for a missing or rejected key, a plan that does not include this data, an unknown id, a rate limit or a network error. The message then says what to do. check_api_status is the exception: it is true whenever the API answered, and reports API key problems in the message.
matchNoThe match.
marketNoMatch-winner market. Requires the PRO plan, absent otherwise.
messageYesHuman-readable summary of the result, safe to relay to the user verbatim.
analysisNoModel analysis. Requires the ULTRA plan, absent otherwise.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • changedOutput schema / properties / analysis / description
      Previous value: -"Model analysis. Requires the ULTRA plan; absent otherwise."New value: +"Model analysis. Requires the ULTRA plan, absent otherwise."
    • changedOutput schema / properties / market / description
      Previous value: -"Match-winner market. Requires the PRO plan; absent otherwise."New value: +"Match-winner market. Requires the PRO plan, absent otherwise."
    • changedOutput schema / properties / match / properties / event_status_updated_at / description
      Previous value: -"The instant the current event_status was recorded, UTC ISO-8601 (added 2026-08-19). Null while the status has never changed since the field was introduced — never backfilled."New value: +"The instant the current event_status was recorded, UTC ISO-8601 (added 2026-08-19). Null while the status has never changed since the field was introduced. Never backfilled."
    • changedOutput schema / properties / match / properties / round_code / description
      Previous value: -"Round in the normalized vocabulary (F, SF, QF, R16 … Q); null when the label is unrecognised, never guessed."New value: +"Round in the normalized vocabulary (F, SF, QF, R16 ... Q). Null when the label is unrecognised, never guessed."
    • addedOutput schema / properties / match / properties / scheduled_time
      Added value: +{
      +  "description": "Scheduled start, UTC ISO-8601. Null when no start time is set yet.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / match / properties / status / description
      Previous value: -"One of live, upcoming or completed."New value: +"One of live, upcoming, completed or cancelled."
    • changedOutput schema / properties / match / properties / tour / description
      Previous value: -"atp, wta, challenger, itf or juniors. Null when the feed never stated one (exhibitions, team events)."New value: +"atp, wta, challenger, itf or juniors. Null when no tour is recorded (exhibitions, team events)."
    • changedOutput schema / properties / match / properties / tournament_id / description
      Previous value: -"Stable tournament id — pass to get_tournament. Null where uncatalogued."New value: +"Stable tournament id. Pass to get_tournament. Null where uncatalogued."
    • changedOutput schema / properties / match / properties / win_probability_p1 / description
      Previous value: -"Model probability that player 1 wins, 0-1. Requires the ULTRA plan; null otherwise."New value: +"Model probability that player 1 wins, 0-1. Requires the ULTRA plan, null otherwise."
    • changedOutput schema / properties / match / required
      Previous value: -[
      -  "id",
      -  "tour",
      -  "tournament",
      -  "tournament_id",
      -  "round",
      -  "round_code",
      -  "player1",
      -  "player2",
      -  "score",
      -  "status",
      -  "surface",
      -  "indoor",
      -  "serving",
      -  "winner",
      -  "event_status",
      -  "event_status_updated_at",
      -  "withdrew",
      -  "has_analysis",
      -  "has_market",
      -  "win_probability_p1"
      -]New value: +[
      +  "id",
      +  "tour",
      +  "tournament",
      +  "tournament_id",
      +  "round",
      +  "round_code",
      +  "player1",
      +  "player2",
      +  "score",
      +  "status",
      +  "scheduled_time",
      +  "surface",
      +  "indoor",
      +  "serving",
      +  "winner",
      +  "event_status",
      +  "event_status_updated_at",
      +  "withdrew",
      +  "has_analysis",
      +  "has_market",
      +  "win_probability_p1"
      +]
    • changedOutput schema / properties / message / description
      Previous value: -"Human-readable summary. Identical to the text content, so either half can be used alone."New value: +"Human-readable summary of the result, safe to relay to the user verbatim."
    • changedOutput schema / properties / ok / description
      Previous value: -"True when the call returned data. False for a tier wall, a missing or rejected key, or an empty result — all of which are normal states with a clear remedy, not failures."New value: +"True when the request succeeded, including when the answer is an empty list. False for a missing or rejected key, a plan that does not include this data, an unknown id, a rate limit or a network error. The message then says what to do. check_api_status is the exception: it is true whenever the API answered, and reports API key problems in the message."
  2. Changed4 schema fields changed
    • addedOutput schema / properties / match / properties / event_status_updated_at
      Added value: +{
      +  "description": "The instant the current event_status was recorded, UTC ISO-8601 (added 2026-08-19). Null while the status has never changed since the field was introduced — never backfilled.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / has_analysis
      Added value: +{
      +  "description": "Whether a model thesis or profile exists for this match (added 2026-09-02, every tier). Filter on this before calling get_match_analysis, which reports the same absence. Null only when the server predates the field.",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / has_market
      Added value: +{
      +  "description": "Whether a match-winner market is mapped to this match (added 2026-09-02, every tier). Filter on this before calling get_match_odds, which reports the same absence. Null only when the server predates the field.",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / match / required
      Previous value: -[
      -  "id",
      -  "tour",
      -  "tournament",
      -  "tournament_id",
      -  "round",
      -  "round_code",
      -  "player1",
      -  "player2",
      -  "score",
      -  "status",
      -  "surface",
      -  "indoor",
      -  "serving",
      -  "winner",
      -  "event_status",
      -  "withdrew",
      -  "win_probability_p1"
      -]New value: +[
      +  "id",
      +  "tour",
      +  "tournament",
      +  "tournament_id",
      +  "round",
      +  "round_code",
      +  "player1",
      +  "player2",
      +  "score",
      +  "status",
      +  "surface",
      +  "indoor",
      +  "serving",
      +  "winner",
      +  "event_status",
      +  "event_status_updated_at",
      +  "withdrew",
      +  "has_analysis",
      +  "has_market",
      +  "win_probability_p1"
      +]
  3. Changed6 schema fields changed
    • addedOutput schema / properties / match / properties / event_status
      Added value: +{
      +  "description": "How the match ended (or paused) when it did not run its course: Retired, Cancelled, Walk Over, Postponed or Interrupted. Null means completed normally OR never resolved. Branch settlement logic here.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / round_code
      Added value: +{
      +  "description": "Round in the normalized vocabulary (F, SF, QF, R16 … Q); null when the label is unrecognised, never guessed.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / tour
      Added value: +{
      +  "description": "atp, wta, challenger, itf or juniors. Null when the feed never stated one (exhibitions, team events).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / tournament_id
      Added value: +{
      +  "description": "Stable tournament id — pass to get_tournament. Null where uncatalogued.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / match / properties / withdrew
      Added value: +{
      +  "description": "Completed matches only: which player retired or conceded the walkover, 1 or 2. Null means \"not a withdrawal, or no evidence\", never a guess.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / match / required
      Previous value: -[
      -  "id",
      -  "tournament",
      -  "round",
      -  "player1",
      -  "player2",
      -  "score",
      -  "status",
      -  "surface",
      -  "indoor",
      -  "serving",
      -  "winner",
      -  "win_probability_p1"
      -]New value: +[
      +  "id",
      +  "tour",
      +  "tournament",
      +  "tournament_id",
      +  "round",
      +  "round_code",
      +  "player1",
      +  "player2",
      +  "score",
      +  "status",
      +  "surface",
      +  "indoor",
      +  "serving",
      +  "winner",
      +  "event_status",
      +  "withdrew",
      +  "win_probability_p1"
      +]
  4. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's real contribution is the entitlement behavior: the returned payload differs by subscription plan, with market prices only on PRO and model analysis only on ULTRA. That is non-obvious behavior an agent cannot get from structured fields, and it does not contradict the annotations.

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, front-loaded with what is returned before the plan-tier caveats. Efficient, though the plan sentence packs three distinct facts (FREE/PRO/ULTRA) into one dense clause.

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?

An output schema exists so return values need not be described, and the description still sketches the payload plus the plan-dependent variation, which is the main thing an agent could get wrong. The remaining gap is guidance on picking this over the narrower match-detail siblings.

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 single match_id parameter is already documented in the schema, including where to obtain it. The description's 'by id' adds no syntax, format or constraint beyond that, so baseline 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 ('Full detail for one match by id') and enumerates the payload fields (players, score, surface, round, status). 'Full detail' also implicitly distinguishes it from the narrower siblings get_match_score, get_match_statistics and get_match_events.

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 plan-tier notes ('Works on the FREE plan', market prices on PRO, model analysis on ULTRA) tell the agent about access gating, which is useful. However, nothing explicitly says when to call this instead of get_match_analysis, get_match_statistics or get_match_events, so sibling routing is left to inference from the word 'Full'.

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.