Skip to main content
Glama

Find upcoming events

search_events
Read-onlyIdempotent

Use this when the user wants upcoming concerts, sports, theatre or other live events by performer or event name, city, country, category or dates. Returns cached provider listings in date order. Each upcoming event has its TicketSea page (url) and a tickets link: the seller's page for that exact event, else another seller's (detail says what it is), else the TicketSea page. Not live inventory, and nothing is purchased. Use nextOffset to page, and narrow the filters when scanLimited is true.

Input Schema

NameRequiredDescriptionDefault
toNo
cityNoCity the user asked about, such as Seattle, or a postal code (98101). For "near me", pass "near me": ChatGPT's approximate location places it; elsewhere use the user's city if you know it, else ask.
fromNo
kindNo
limitNo
queryNoArtist, team, event or venue text.
offsetNo
countryNo

Output Schema

NameRequiredDescriptionDefault
eventsYes
noticeYes
hasMoreYes
sourcesYes
coverageYes
nextStepNo
nextOffsetYes
scanLimitedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / city / description
      Previous value: -"City the user asked about, as an exact city name (case-insensitive), such as Seattle. Location is never inferred."New value: +"City the user asked about, such as Seattle, or a postal code (98101). For \"near me\", pass \"near me\": ChatGPT's approximate location places it; elsewhere use the user's city if you know it, else ask."
  2. Changed1 schema field changed
    • addedOutput schema / properties / nextStep
      Added value: +{
      +  "type": "string"
      +}
  3. Changed4 schema fields changed
    • removedOutput schema / properties / events / items / properties
      Removed value: -{
      -  "city": {
      -    "type": "string"
      -  },
      -  "country": {
      -    "type": "string"
      -  },
      -  "date": {
      -    "description": "Venue-local date; may be blank if unknown.",
      -    "type": "string"
      -  },
      -  "dateTime": {
      -    "description": "Provider absolute start timestamp when supplied.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "inventoryVerified": {
      -    "const": false,
      -    "type": "boolean"
      -  },
      -  "listingUpdatedAt": {
      -    "description": "Original listing retrieval timestamp; not a stock check.",
      -    "type": "string"
      -  },
      -  "localTime": {
      -    "description": "Venue-local time; may be blank if unknown.",
      -    "type": "string"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "onSale": {
      -    "properties": {
      -      "endAt": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "startAt": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "tbd": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "startAt",
      -      "endAt",
      -      "tbd"
      -    ],
      -    "type": "object"
      -  },
      -  "pricing": {
      -    "description": "Informational published ranges, not current available offers. Prices may change moment to moment and are not guaranteed. Fees and taxes may be additional. When ranges is empty, omit the price line. Never combine primary/resale sellers or currencies.",
      -    "properties": {
      -      "inventoryVerified": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "label": {
      -        "type": "string"
      -      },
      -      "notice": {
      -        "type": "string"
      -      },
      -      "ranges": {
      -        "items": {
      -          "properties": {
      -            "checkedAt": {
      -              "type": "string"
      -            },
      -            "currency": {
      -              "type": "string"
      -            },
      -            "feeInclusion": {
      -              "const": "unknown",
      -              "type": "string"
      -            },
      -            "label": {
      -              "type": "string"
      -            },
      -            "maxMinor": {
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "minMinor": {
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "minorUnit": {
      -              "maximum": 3,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "provider": {
      -              "type": "string"
      -            },
      -            "sourceType": {
      -              "type": "string"
      -            },
      -            "validUntil": {
      -              "description": "Expiry in Unix milliseconds. Discard at this time even if cached.",
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "provider",
      -            "sourceType",
      -            "currency",
      -            "minMinor",
      -            "maxMinor",
      -            "minorUnit",
      -            "checkedAt",
      -            "validUntil",
      -            "label",
      -            "feeInclusion"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "label",
      -      "ranges",
      -      "notice",
      -      "inventoryVerified"
      -    ],
      -    "type": "object"
      -  },
      -  "publicSaleState": {
      -    "description": "Schedule state, not inventory. registration means restricted registration access, not an open general sale.",
      -    "type": "string"
      -  },
      -  "region": {
      -    "type": "string"
      -  },
      -  "slug": {
      -    "pattern": "^[a-z0-9-]{1,240}$",
      -    "type": "string"
      -  },
      -  "stale": {
      -    "type": "boolean"
      -  },
      -  "status": {
      -    "type": "string"
      -  },
      -  "tickets": {
      -    "description": "The first exact-event seller link for this performance, present only for a fresh, upcoming listing with a known seller page. The link opens the seller's page for this event through ticketsea.com/go/. It is not an availability check, and the event can have other sellers.",
      -    "properties": {
      -      "affiliate": {
      -        "description": "TicketSea may earn a commission from this seller.",
      -        "type": "boolean"
      -      },
      -      "official": {
      -        "type": "boolean"
      -      },
      -      "seller": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "description": "primary or resale.",
      -        "type": "string"
      -      },
      -      "url": {
      -        "format": "uri",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "url",
      -      "seller",
      -      "type",
      -      "official",
      -      "affiliate"
      -    ],
      -    "type": "object"
      -  },
      -  "timezone": {
      -    "description": "Provider timezone; may be blank if unknown. Do not invent one.",
      -    "type": "string"
      -  },
      -  "url": {
      -    "format": "uri",
      -    "type": "string"
      -  },
      -  "venue": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / events / items / required
      Removed value: -[
      -  "slug",
      -  "url",
      -  "name",
      -  "date",
      -  "dateTime",
      -  "localTime",
      -  "timezone",
      -  "venue",
      -  "city",
      -  "region",
      -  "country",
      -  "status",
      -  "publicSaleState",
      -  "onSale",
      -  "listingUpdatedAt",
      -  "stale",
      -  "inventoryVerified"
      -]
    • removedOutput schema / properties / sources / items / properties
      Removed value: -{
      -  "available": {
      -    "type": "boolean"
      -  },
      -  "countrySnapshots": {
      -    "items": {
      -      "properties": {
      -        "country": {
      -          "type": "string"
      -        },
      -        "listingUpdatedAt": {
      -          "type": "string"
      -        },
      -        "stale": {
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "country",
      -        "listingUpdatedAt",
      -        "stale"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "error": {
      -    "type": "string"
      -  },
      -  "source": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / sources / items / required
      Removed value: -[
      -  "source",
      -  "available"
      -]
  4. Changed1 schema field changed
    • changedOutput schema / properties / events / items / properties / tickets / description
      Previous value: -"The first exact-event seller link for this performance, present only for a fresh, upcoming listing with a known seller page. The link opens the seller's page for this event through ticketsea.com/go/. It is not an availability check; get_ticket_links lists every seller."New value: +"The first exact-event seller link for this performance, present only for a fresh, upcoming listing with a known seller page. The link opens the seller's page for this event through ticketsea.com/go/. It is not an availability check, and the event can have other sellers."
  5. First observed

TDQS

A4.1/5.0
Behavior5/5

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

The annotations already declare read-only, idempotent and non-destructive, but the description adds substantial context beyond them: results are cached provider listings in date order, not live inventory, and nothing is purchased. It also specifies the URL resolution rule — seller's page for the exact event, else another seller's page, else the TicketSea page — plus pagination behaviour and what scanLimited means for controlling result completeness.

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 densely packed sentences, front-loaded with the trigger condition and followed by return behaviour, caveats, and paging. Almost every clause carries new information; the tickets-link fallback chain is the longest part but is genuinely non-obvious and worth the space.

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 are largely covered elsewhere, yet the description still explains the detail field and the tickets link fallback, which makes the response interpretable. The remaining gap is the undocumented offset/limit semantics and what an empty result set looks like.

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 only 25% (city and query only), so the description needs to carry weight. It partially does by mapping the filter dimensions to the intent (performer/name to query, city, country, category to kind, dates to from/to), but that mapping is implicit. Worse, "Use nextOffset to page" names a field that does not exist in the input schema, which exposes an offset versus nextOffset ambiguity the agent has to resolve.

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?

The description states a clear verb and resource — find upcoming live events — and enumerates the ways to narrow them (performer, name, city, country, category, dates), which is concrete and far from a restatement of the name. It does not explicitly name any of the siblings (get_event, search_catalog, get_ticket_prices), so an agent must infer the boundary from context rather than being told.

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?

"Use this when the user wants upcoming concerts, sports, theatre or other live events..." is an explicit trigger condition tied to user intent, which is exactly what routing needs. It stops short of 5 because there are no exclusions or named alternatives — nothing says when to prefer get_event or get_ticket_prices instead.

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