Skip to main content
Glama

Lumify Sports Intelligence

list_events

Read-onlyIdempotent

List events (schedules and live scores), paginated by id (after_id). Filter by sport, league, status, date range, season, or team_id (resolve teams via list_teams / get_team). Returns event id, name, sport/league, start time, status, and venue for each; pass include_scores to also inline participants + scores (intended for small result sets — use get_event for one event's full detail, or query_events for free-text/natural-language filters instead of structured params). include_scores shares the 20/min score-poll budget with get_live_score; prefer the SSE stream for live boards.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoUTC end date YYYY-MM-DD (inclusive).
dateNoUTC date YYYY-MM-DD (single day).
fromNoUTC start date YYYY-MM-DD.
sortNoSort order. sort=status is incompatible with after_id.time
limitNoMax events to return per page.
sportNoSport slug, e.g. mlb, nfl, tennis, soccer.
leagueNoLeague slug, e.g. nfl, atp, mls.
statusNoFilter to events in this status.
team_idNoFilter to events where this team participates. Resolve ids via list_teams.
after_idNoCursor: return events with id > after_id (from the previous page's next_after_id).
season_idNoFilter by season ID (from list_seasons).
has_recommendNoWhen true, only events with at least one recommended bet.
include_scoresNoInline participants + scores in each event (intended for small result sets). Shares the 20/min score-poll budget with get_live_score.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
totalNo
eventsNo
next_after_idNoPass as after_id to fetch the next page; null on the last page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / include_scores / description
      Previous value: -"Inline participants + scores in each event (intended for small result sets)."New value: +"Inline participants + scores in each event (intended for small result sets). Shares the 20/min score-poll budget with get_live_score."
  2. Changed7 schema fields changed
    • changedInput schema / properties / after_id / description
      Previous value: -"Cursor: return events with id > after_id."New value: +"Cursor: return events with id > after_id (from the previous page's next_after_id)."
    • changedInput schema / properties / league / description
      Previous value: -"League slug, e.g. nfl, atp, fifa_world_cup."New value: +"League slug, e.g. nfl, atp, mls."
    • addedInput schema / properties / limit / description
      Added value: +"Max events to return per page."
    • changedInput schema / properties / season_id / description
      Previous value: -"Filter by season ID."New value: +"Filter by season ID (from list_seasons)."
    • addedInput schema / properties / status / description
      Added value: +"Filter to events in this status."
    • addedInput schema / properties / team_id
      Added value: +{
      +  "description": "Filter to events where this team participates. Resolve ids via list_teams.",
      +  "type": "integer"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "EventSummary": {
      +      "properties": {
      +        "clock": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "type": "integer"
      +        },
      +        "inprogress_since": {
      +          "description": "ISO-8601 UTC when status first became inprogress (first live tick). Null until then; stays set after final.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "league": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "period": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "season_id": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "sport": {
      +          "type": "string"
      +        },
      +        "starts_at": {
      +          "description": "ISO-8601 UTC start time.",
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": "string"
      +        },
      +        "venue": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "properties": {
      +    "events": {
      +      "items": {
      +        "$ref": "#/$defs/EventSummary"
      +      },
      +      "type": "array"
      +    },
      +    "next_after_id": {
      +      "description": "Pass as after_id to fetch the next page; null on the last page.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "total": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed7 schema fields changed
    • changedInput schema / properties / after_id / description
      Previous value: -"Cursor: return events with id > after_id (from the previous page's next_after_id)."New value: +"Cursor: return events with id > after_id."
    • changedInput schema / properties / league / description
      Previous value: -"League slug, e.g. nfl, atp, mls."New value: +"League slug, e.g. nfl, atp, fifa_world_cup."
    • removedInput schema / properties / limit / description
      Removed value: -"Max events to return per page."
    • changedInput schema / properties / season_id / description
      Previous value: -"Filter by season ID (from list_seasons)."New value: +"Filter by season ID."
    • removedInput schema / properties / status / description
      Removed value: -"Filter to events in this status."
    • removedInput schema / properties / team_id
      Removed value: -{
      -  "description": "Filter to events where this team participates. Resolve ids via list_teams.",
      -  "type": "integer"
      -}
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "EventSummary": {
      -      "properties": {
      -        "clock": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "id": {
      -          "type": "integer"
      -        },
      -        "inprogress_since": {
      -          "description": "ISO-8601 UTC when status first became inprogress (first live tick). Null until then; stays set after final.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "league": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "period": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "season_id": {
      -          "type": [
      -            "integer",
      -            "null"
      -          ]
      -        },
      -        "sport": {
      -          "type": "string"
      -        },
      -        "starts_at": {
      -          "description": "ISO-8601 UTC start time.",
      -          "type": "string"
      -        },
      -        "status": {
      -          "type": "string"
      -        },
      -        "venue": {
      -          "type": [
      -            "object",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "events": {
      -      "items": {
      -        "$ref": "#/$defs/EventSummary"
      -      },
      -      "type": "array"
      -    },
      -    "next_after_id": {
      -      "description": "Pass as after_id to fetch the next page; null on the last page.",
      -      "type": [
      -        "integer",
      -        "null"
      -      ]
      -    },
      -    "total": {
      -      "type": "integer"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • addedOutput schema / $defs / EventSummary / properties / inprogress_since
      Added value: +{
      +  "description": "ISO-8601 UTC when status first became inprogress (first live tick). Null until then; stays set after final.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / league / description
      Previous value: -"League slug, e.g. nfl, atp, fifa_world_cup."New value: +"League slug, e.g. nfl, atp, mls."
  6. Changed4 schema fields changed
    • changedOutput schema / $defs / EventSummary / properties / clock / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / $defs / EventSummary / properties / period / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / $defs / EventSummary / properties / season_id / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
    • changedOutput schema / $defs / EventSummary / properties / venue / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
  7. Changed5 schema fields changed
    • changedInput schema / properties / after_id / description
      Previous value: -"Cursor: return events with id > after_id."New value: +"Cursor: return events with id > after_id (from the previous page's next_after_id)."
    • addedInput schema / properties / limit / description
      Added value: +"Max events to return per page."
    • changedInput schema / properties / season_id / description
      Previous value: -"Filter by season ID."New value: +"Filter by season ID (from list_seasons)."
    • addedInput schema / properties / status / description
      Added value: +"Filter to events in this status."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "EventSummary": {
      +      "properties": {
      +        "clock": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "integer"
      +        },
      +        "league": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "period": {
      +          "type": "string"
      +        },
      +        "season_id": {
      +          "type": "integer"
      +        },
      +        "sport": {
      +          "type": "string"
      +        },
      +        "starts_at": {
      +          "description": "ISO-8601 UTC start time.",
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": "string"
      +        },
      +        "venue": {
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "properties": {
      +    "events": {
      +      "items": {
      +        "$ref": "#/$defs/EventSummary"
      +      },
      +      "type": "array"
      +    },
      +    "next_after_id": {
      +      "description": "Pass as after_id to fetch the next page; null on the last page.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "total": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / team_id
      Added value: +{
      +  "description": "Filter to events where this team participates. Resolve ids via list_teams.",
      +  "type": "integer"
      +}
  9. First observed

TDQS

A4.4/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), but the description adds genuinely non-structured behavior: include_scores shares the 20/min score-poll budget with get_live_score and is intended only for small result sets. It also discloses cursor pagination via next_after_id. It stops short of describing pagination edge cases or failure behavior, so a 4 rather than 5.

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?

Dense but front-loaded: the core purpose and pagination lead, then filtering, then the routing caveats. Nearly every clause carries information, though the long parenthetical about include_scores/query_events/get_event is syntactically sprawling and could be split for scanability.

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?

For a 13-parameter filtering tool with an output schema, the description covers purpose, pagination, filtering dimensions, alternatives, and a rate-limit caveat. Return values are already handled by the output schema, so nothing an agent needs to call this correctly is missing.

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 all 13 parameters are already documented in the schema, including the sort/after_id incompatibility. The description restates which filters exist and the include_scores cost, but adds no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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 ('List events (schedules and live scores)') and immediately scopes what is returned. It distinguishes itself from siblings by naming get_event for single-event detail and query_events for free-text filtering. An agent can pick this tool without opening any schema.

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

Usage Guidelines5/5

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

Explicit routing: use get_event for one event's full detail, query_events for natural-language filters instead of structured params, list_teams/get_team to resolve team_id, and the SSE stream for live boards. This is when-to-use plus named alternatives, exceeding the bar.

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.