Skip to main content
Glama

Live matches

get_live_matches
Read-onlyIdempotent

List tennis matches currently in progress, with live scores. Covers ATP, WTA, Challenger, ITF and juniors. Use this for "what tennis is on right now". Works on the FREE plan (no card needed).

Input Schema

NameRequiredDescriptionDefault
tourNoTour filter. Each name covers its doubles variants. Exhibition/team events carry no tour and are excluded whenever the filter is used.
limitNoMaximum matches to return (1-200).
playerNoPlayer ids (from search_players), max 50. Keeps matches where ANY listed player is either participant.
countryNoEither participant's country: the lowercase 3-letter IOC-style code the Player object returns (e.g. ned, sui, gre), NOT ISO-3166. Players with no recorded country never match.

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.
matchesNoThe live matches, most relevant first.
messageYesHuman-readable summary of the result, safe to relay to the user verbatim.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Either participant's country — the lowercase 3-letter IOC-style code the Player object returns (e.g. ned, sui, gre), NOT ISO-3166. Players with no recorded country never match."New value: +"Either participant's country: the lowercase 3-letter IOC-style code the Player object returns (e.g. ned, sui, gre), NOT ISO-3166. Players with no recorded country never match."
    • changedInput schema / properties / player / description
      Previous value: -"Player ids (from search_players), max 50 — keeps matches where ANY listed player is either participant."New value: +"Player ids (from search_players), max 50. Keeps matches where ANY listed player is either participant."
    • changedInput schema / properties / tour / description
      Previous value: -"Tour filter; each name covers its doubles variants. Exhibition/team events carry no tour and are excluded whenever the filter is used."New value: +"Tour filter. Each name covers its doubles variants. Exhibition/team events carry no tour and are excluded whenever the filter is used."
    • changedOutput schema / properties / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / properties / status / description
      Previous value: -"One of live, upcoming or completed."New value: +"One of live, upcoming, completed or cancelled."
    • changedOutput schema / properties / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / 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. Changed9 schema fields changed
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "Either participant's country — the lowercase 3-letter IOC-style code the Player object returns (e.g. ned, sui, gre), NOT ISO-3166. Players with no recorded country never match.",
      +  "maxLength": 3,
      +  "minLength": 3,
      +  "type": "string"
      +}
    • addedInput schema / properties / player
      Added value: +{
      +  "description": "Player ids (from search_players), max 50 — keeps matches where ANY listed player is either participant.",
      +  "items": {
      +    "type": "integer"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
    • addedInput schema / properties / tour
      Added value: +{
      +  "description": "Tour filter; each name covers its doubles variants. Exhibition/team events carry no tour and are excluded whenever the filter is used.",
      +  "enum": [
      +    "atp",
      +    "wta",
      +    "challenger",
      +    "itf",
      +    "juniors"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / matches / items / 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 / matches / items / 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 / matches / items / 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 / matches / items / properties / tournament_id
      Added value: +{
      +  "description": "Stable tournament id — pass to get_tournament. Null where uncatalogued.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / matches / items / 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 / matches / items / 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.6/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive and open-world behavior, so the remaining burden is light. The description adds one genuinely new trait – availability on the FREE plan with no card – but says nothing about result caps, pagination, refresh cadence of 'live' scores, or behavior on empty results.

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?

Four short sentences, front-loaded with what the tool returns and followed by scope, usage cue and plan note. Slight redundancy in repeating the tour enum values, and the omission of the exhibition exclusion is a small missed detail rather than bloat.

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 and full parameter documentation, the description only needs to frame purpose, scope and access conditions – all of which it does. Minor gaps remain around ordering/refresh semantics of the live feed, but nothing that would cause a mis-call.

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%, so per-parameter meaning is already fully documented (including the non-ISO country code convention and the exhibition-exclusion rule). The description only restates the tour values, which duplicate the enum, and never mentions the player/country/limit filters. Baseline 3 applies.

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 and resource ("List tennis matches currently in progress, with live scores") and pins down scope with the tour list. It implicitly separates itself from get_upcoming_matches/get_recent_results via "currently in progress", but never names those siblings, so an agent must infer the boundary.

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?

The quoted intent "what tennis is on right now" gives a clear usage context an agent can match against a user request. No explicit exclusions or named alternatives are provided (e.g. 'use get_upcoming_matches for future fixtures'), which keeps it below a 5.

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.