Skip to main content
Glama

Search Paris events

search_events
Read-onlyIdempotent

Finds dated events in Paris by time window, subject, price, free text or distance from a point. Returns each event with its page URL and, where we hold one, a booking link. Relaxes the window or radius when fewer than three events match, and says so in relaxed.

Input Schema

NameRequiredDescriptionDefault
freeNoOnly events with free entry.
nearNoRestrict to a radius around a point in the Paris area.
whenNoTime window. Mutually exclusive with date_from/date_to.
limitNoDefaults to 20.
queryNoFree text over title, venue and organiser.
localeNoLanguage for our own prose. Event titles and place names are never translated.
offsetNoFor paging.
date_toNoParis day, YYYY-MM-DD. Inclusive. Defaults to date_from.
date_fromNoParis day, YYYY-MM-DD.
interestsNoFilter by subject. Read the `interests` resource for the list.
price_maxNoBudget ceiling in EUR.

Output Schema

NameRequiredDescriptionDefault
itemsYesThe matching events, in the order we would show them.
totalYesHow many this response carries.
windowYesThe date window actually searched, after any relaxation.
relaxedYesEmpty when the search ran as asked. Otherwise the steps taken to find anything at all — tell the reader, because the answer is no longer exactly what they asked for.
attributionYesWho to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate.
match_countYesMatches across every page. Null means we could not determine it — never zero.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / items / items / properties / booking / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclosure": {
      -        "additionalProperties": false,
      -        "description": "Always present, so a consumer never has to tell 'not required' from 'missing'.",
      -        "properties": {
      -          "must_be_shown_with_link": {
      -            "type": "boolean"
      -          },
      -          "required": {
      -            "description": "True for affiliate links. When true, `text` must be shown wherever `url` is.",
      -            "type": "boolean"
      -          },
      -          "text": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "The exact wording to show. Null when not required."
      -          }
      -        },
      -        "required": [
      -          "required",
      -          "text",
      -          "must_be_shown_with_link"
      -        ],
      -        "type": "object"
      -      },
      -      "kind": {
      -        "description": "What is on sale: ticket, tour, buy, hotel, …",
      -        "type": "string"
      -      },
      -      "label": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The seller's own call to action, if we have one."
      -      },
      -      "link_rel": {
      -        "description": "The rel attribute to use if the link is rendered as HTML.",
      -        "type": "string"
      -      },
      -      "mode": {
      -        "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed.",
      -        "enum": [
      -          "affiliate",
      -          "direct"
      -        ],
      -        "type": "string"
      -      },
      -      "price": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "as_of": {
      -                "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale.",
      -                "type": "string"
      -              },
      -              "currency": {
      -                "description": "ISO 4217 code.",
      -                "type": "string"
      -              },
      -              "from": {
      -                "description": "Lowest price we have seen, in `currency`.",
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "from",
      -              "currency",
      -              "as_of"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Null when we have no price or cannot vouch for its age."
      -      },
      -      "provider": {
      -        "description": "Who sells it.",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "url",
      -      "kind",
      -      "provider",
      -      "label",
      -      "price",
      -      "disclosure",
      -      "link_rel"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclosure": {
      +        "additionalProperties": false,
      +        "description": "Always present, so a consumer never has to tell 'not required' from 'missing'.",
      +        "properties": {
      +          "must_be_shown_with_link": {
      +            "type": "boolean"
      +          },
      +          "required": {
      +            "description": "True for affiliate links. When true, `text` must be shown wherever `url` is.",
      +            "type": "boolean"
      +          },
      +          "text": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "The exact wording to show. Null when not required."
      +          }
      +        },
      +        "required": [
      +          "required",
      +          "text",
      +          "must_be_shown_with_link"
      +        ],
      +        "type": "object"
      +      },
      +      "kind": {
      +        "description": "What is on sale: ticket, tour, buy, hotel, …",
      +        "type": "string"
      +      },
      +      "label": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The seller's own call to action, if we have one."
      +      },
      +      "link_rel": {
      +        "description": "The rel attribute to use if the link is rendered as HTML.",
      +        "type": "string"
      +      },
      +      "mode": {
      +        "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link.",
      +        "enum": [
      +          "affiliate",
      +          "direct",
      +          "own"
      +        ],
      +        "type": "string"
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "as_of": {
      +                "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale.",
      +                "type": "string"
      +              },
      +              "currency": {
      +                "description": "ISO 4217 code.",
      +                "type": "string"
      +              },
      +              "from": {
      +                "description": "Lowest price we have seen, in `currency`.",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "currency",
      +              "as_of"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Null when we have no price or cannot vouch for its age."
      +      },
      +      "provider": {
      +        "description": "Who sells it.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "url",
      +      "kind",
      +      "provider",
      +      "label",
      +      "price",
      +      "disclosure",
      +      "link_rel"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds two things they cannot: what comes back (page URL plus booking link where held) and the non-obvious auto-relaxation of the window or radius below three matches. Pointing the agent at the `relaxed` flag is exactly the kind of trait that prevents misreading results as strictly in-scope.

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?

Two sentences, no filler, with the capability statement first and the surprising behaviour (relaxation) second. Every clause carries information an agent would otherwise have to discover empirically.

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?

For an 11-parameter all-optional search with a full schema, an output schema and rich annotations, the description covers the essentials plus the relaxation semantics. It stops short of stating how filters combine or how paging interacts with relaxation, but those are minor for a read-only search.

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 defaults, formats, enums and the when-vs-date_from/date_to exclusivity are already documented in structured form. The description only paraphrases the same facets and adds no syntax, interaction or threshold detail beyond them, so the 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?

The description opens with a specific verb+resource ('Finds dated events in Paris') and enumerates the filter facets (time window, subject, price, free text, distance), which is enough to separate it from a place lookup. It never names a sibling such as search_places or get_event, so the differentiation is inferred rather than stated.

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 context is implied by the facet list — an agent can tell this is the multi-filter discovery tool — but there is no explicit guidance on when to prefer it over search_all or when to follow up with get_event. The only routing-like statement is the automatic relaxation rule, which describes behaviour rather than tool choice.

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