mygn & rundown.city – Events Hamburg, München, Oldenburg, San Francisco
Server Details
Events & things to do in Hamburg, Munich, Oldenburg, San Francisco: tonight, weekend, free, family.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool has a clearly separate role: list_hubs and list_categories are metadata lookups, search_events is discovery, get_event is detail-by-id, and get_day_overview is a day-level aggregate. The descriptions explicitly disambiguate the one risky pair (day overview vs. search) by telling the agent to use get_day_overview for 'is there a lot on' before calling search_events.
All five names follow a strict verb_noun snake_case pattern: get_day_overview, get_event, list_categories, list_hubs, search_events. Verbs are used consistently (list_ for enumerations, get_ for single records, search_ for queries).
Five tools is a lean but coherent surface for a read-only events API, with no redundant entries. It is on the thin side of the ideal 3-15 range, leaving no room for convenience operations, but nothing feels padded or vestigial.
The discovery lifecycle is covered end to end: hubs, categories, search with filters, event detail with sibling dates, and a day-busyness aggregate. Minor gaps exist — no venue-centric lookup or cross-hub comparison helper — but agents can work around these using the hub and category parameters.
Available Tools
5 toolsget_day_overviewDay overviewARead-onlyIdempotentInspect
How busy one day is in a hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco): events per category, free and verified-location counts, whether the day is quiet, normal or busy against the same kind of day in the next 14 days (unknown further out) and top_curated, our editorial picks (occurrence_id, title, starts_at; empty while nothing is rated). An event counts once per day. Pass when (today, tonight, tomorrow) or date; time_from counts only events starting at or after it (busyness stays day-level). Use it for 'is there a lot on this Saturday' before search_events.
| Name | Required | Description | Default |
|---|---|---|---|
| hub | Yes | Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case. | |
| date | No | The day in the hub's own calendar, YYYY-MM-DD. Required unless when is given. | |
| when | No | today, tonight (today from 18:00 unless time_from is given), tomorrow, in the hub's local calendar; echoed as resolved. Replaces date (naming both is an error). | |
| verbose | No | true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default. | |
| time_from | No | Count only events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for 'tonight'. Events without a known start time (all_day, time_unknown) are not counted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hub | Yes | |
| date | Yes | |
| total | Yes | |
| busyness | Yes | |
| resolved | No | |
| free_count | Yes | |
| by_category | Yes | |
| top_curated | Yes | |
| busyness_ratio | Yes | |
| verified_count | Yes | |
| long_running_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description correctly spends its space on semantics instead: busyness is only comparable against the next 14 days and unknown further out, top_curated is empty while nothing is rated, and an event counts once per day. It also warns that time_from narrows counts but leaves the busyness verdict at day level, which is exactly the kind of side-effect disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then outputs, then counting rule, then parameter guidance, with essentially no filler. The first sentence is long and parenthesis-heavy, which costs some scannability, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't enumerate return fields, and it still flags the two non-obvious output states (unknown beyond 14 days, empty top_curated). All five parameters are covered by the schema plus description, and the sibling relationship is resolved, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains hub aliases, date format, when's enum and time_from's regex, so the description builds on a strong base rather than repeating it. It adds genuine meaning by clarifying that time_from does not alter the busyness classification and by naming the fields returned in top_curated (occurrence_id, title, starts_at).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: a per-day busyness overview for a named hub, returning events per category, free/verified-location counts, a quiet/normal/busy verdict, and top_curated picks. An agent can distinguish it from get_event and search_events purely from the text, since it is clearly an aggregate day-summary rather than a single-event or query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('is there a lot on this Saturday') and an explicit ordering rule against a sibling: 'before search_events'. It also states the choice between when (today/tonight/tomorrow) and date, so the agent knows which params to reach for in which situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventGet event detailsARead-onlyIdempotentInspect
The full record of one event occurrence (occurrence_id from search_events) in a hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco): summary, start and end, venue with address and coordinates, price_text and price_known (false: price not known, do not assume free), age_min, audience, url (the organiser's page, for tickets and opening details), the link to this event's own page on our site or, without one, our hub page (share_url), brand, attribution_url (the hub page to cite as the source) and the next 20 other dates (siblings; siblings_truncated true when there are more). Internal fields (signals, series_kind, kind, title_override) only with verbose true. all_day true: spans the whole day. time_unknown true: starts_at is only a date anchor, never show 00:00. series_continues true: the listed dates stop only where our look-ahead stops, so it likely runs on; never say it ends after the last listed date.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default. | |
| occurrence_id | Yes | The occurrence_id of an item from search_events. |
Output Schema
| Name | Required | Description |
|---|---|---|
| siblings | Yes | |
| occurrence | Yes | |
| siblings_truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description goes well beyond that with interpretation rules that prevent misuse: price_known=false means do not assume free, time_unknown=true means never show 00:00, siblings_truncated and series_continues warn against claiming the event ends after the last listed date. These are exactly the behavioral caveats an agent needs and cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that is front-loaded with the core identity and then the field/flag semantics. Nearly every clause carries information, but the run-on structure and long field enumeration make it harder to scan than it could be; splitting the flag caveats into their own sentence would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter detail-lookup tool with an output schema, the description is more than sufficient: it explains what each notable return field means and how to interpret ambiguous flags, and the output schema covers the return shape. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantic weight: it enumerates the internal fields verbose=true unlocks (signals, series_kind, kind, title_override) and reinforces that occurrence_id comes from search_events. That is meaning beyond the schema's terse property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('full record of one event occurrence') and immediately ties it to the sibling that produces the identifier ('occurrence_id from search_events'), so it is clearly distinguishable from search_events, get_day_overview, and the list_* tools. The hub scope (mygn.de cities + rundown.city) is spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear routing context by naming search_events as the source of occurrence_id, which implies when to reach for this tool versus the search tool. It lacks an explicit when-not clause (e.g. use search_events for discovery, this only after you have an id), but the entry condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList event categoriesARead-onlyIdempotentInspect
List the event categories one hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco) currently has, each with its slug, display label (in the hub's language) and a one-line definition. The slugs are the values for the categories filter of search_events. Typical slugs: party, concert, culture, show, family, food, sport, market, cruise, quiz, tours, other; an event has exactly one.
| Name | Required | Description | Default |
|---|---|---|---|
| hub | Yes | Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds behavior beyond that: results are per-hub, labels are rendered in the hub's language, and each event carries exactly one category — useful constraints not present in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the action and scope before the search_events linkage. The enumerated slug list is longer than strictly necessary but doubles as useful domain context, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only enumeration tool with an output schema, this covers everything an agent needs: what is returned, what hub means, and how the output feeds the sibling search tool. No meaningful gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so alias handling is already documented. The description nonetheless adds meaning the schema lacks: it identifies which hubs exist across the two platforms (mygn.de cities vs rundown.city/San Francisco), clarifying what the hub parameter actually selects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the event categories") plus its scope (one hub of mygn.de or rundown.city) and what each entry contains (slug, localized label, one-line definition). An agent can immediately distinguish this from search_events or list_hubs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent forward: "The slugs are the values for the categories filter of search_events," which tells it why to call this before searching. It does not state exclusions or when not to call it, but for a simple enumeration tool the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hubsList cities (hubs)ARead-onlyIdempotentInspect
List the cities (hubs) covered by mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco): hub slug, display label, timezone and the website of the hub. Pass the slug as hub to the other tools. The hub website is the source to cite.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds value beyond that by naming the returned fields (slug, display label, timezone, hub website) and by giving the 'website is the source to cite' convention, which is behavior an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with scope, then the returned fields, then the downstream slug contract and citation note. No filler and no repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter enumeration tool with rich annotations and an output schema, the description covers what the tool does, what it returns, how to reuse the slug, and the citation convention. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly spends no space on parameter meaning and instead points at the output field (slug) that other tools consume.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource ('List the cities (hubs)') and it enumerates the exact coverage set (mygn.de Hamburg/München/Oldenburg + Umland, rundown.city San Francisco), which distinguishes it from siblings like list_categories or search_events. An agent knows immediately what domain this enumerates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the downstream contract: 'Pass the slug as hub to the other tools', making it clear this is the prerequisite lookup for hub-scoped calls. It stops short of naming a specific sibling as the alternative or stating when not to call it, so it is clear context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsSearch eventsARead-onlyIdempotentInspect
Find things to do in Hamburg, München, Oldenburg or San Francisco for a date range: date ideas, tonight, this weekend, free events, family outings, concerts, parties, exhibitions, markets. Use this when a user asks 'what can I do...', 'was ist los...', 'wohin heute Abend'. For best picks use sort='curation'. query is a literal keyword match (e.g. 'jazz', 'Flohmarkt'); never put moods like 'romantic' or 'date' in query. Instead of dates pass when (today, tonight, this_weekend ...). Items: occurrence_id (for get_event), title, category, starts_at (hub local time), all_day, time_unknown (true: no showtime known, never show 00:00), venue, price_text, price_known (false: price not known, do not assume free), age_min, audience, tags, share_url (the event's own page on our site or, without one, our hub page, the source to cite) from mygn.de or rundown.city.
| Name | Required | Description | Default |
|---|---|---|---|
| hub | Yes | Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case. | |
| sort | No | 'time' lists chronologically (default), events without a known start time at the end of their day; 'curation' lists the editorially ranked best first (equal ranks in time order). 'start' and 'date' are accepted as 'time'. | time |
| when | No | today, tonight (today from 18:00 unless time_from is given), tomorrow, this_weekend (the coming Saturday and Sunday; on a weekend day the current one, on a Sunday that day alone), next_weekend (the one after), in the hub's local calendar; echoed as resolved. Replaces date_from and date_to (naming both is an error). | |
| limit | No | Page size, 1 to 50 (clamped); default 25. total counts items. | |
| query | No | Literal keywords for title and summary, every word must match (compounds such as Halloweenparty are split, plural endings of whole words are read). Never a mood like 'romantic'. Filler, pronoun and time words (date, night, heute, wochenende, ideas, things to do, was ist los, ich, my, ...) are ignored; use when for dates; a query of only those has query_dropped true. Kinder, Kids, Familie and family list family events first instead of filtering. If nothing matches, unrelated curated picks of the same filters answer, with query_fallback true: tell the user nothing matched (not with group_by 'event'). A hint alone is advice, not a miss. | |
| venue | No | Venue name or town; matches the venue name as shown in results, so a town name keeps every venue in that town. | |
| cursor | No | The next_cursor of the previous page, to read on. | |
| date_to | No | Last day, inclusive, in the hub's own calendar, YYYY-MM-DD; not before date_from. Required unless when is given. | |
| time_to | No | Keep events that start at or before this time of day, HH:MM in the hub's local time (24 hours). | |
| verbose | No | true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default. | |
| group_by | No | 'occurrence': an event once per day, its time slots in slots (occurrence_id, starts_at, ends_at; the item itself is the first slot). 'event': each event once for the whole range, with first_starts_at, last_starts_at, occurrences_count of its matching dates (filters apply first; with sort 'curation' placed by its best match) and its season_first_starts_at, season_last_starts_at, season_occurrences_count (all its upcoming dates up to 31 days ahead, ignoring the filters; the real end may lie beyond) with starts_before_range and continues_after_range. Default: 'event' when sort is 'curation' and the range spans more than one day, else 'occurrence'. Use 'event' for 'when does X open'. | |
| date_from | No | First day, inclusive, in the hub's own calendar, YYYY-MM-DD; not earlier than yesterday. At most 31 days to date_to, which is at most 31 days from today. Required unless when is given. | |
| free_only | No | true keeps only events known to be free. | |
| time_from | No | Keep events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for 'tonight'. Events without a known start time (all_day, time_unknown) are dropped. With a time_to before time_from the range wraps past midnight. | |
| categories | No | Keep only events of these category slugs (see list_categories); use ['family'] for children's and family events. An unknown slug is an error. | |
| max_age_min | No | Keep events with no stated minimum age or one of at most this age; 0 means no age restriction stated. | |
| family_friendly | No | true keeps events suitable for parents with children (audience.family true; without an audience rating: category family without a minimum age of 16 or more); false keeps the rest. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hub | Yes | |
| hint | No | |
| items | Yes | |
| total | Yes | |
| resolved | No | |
| truncated | Yes | |
| next_cursor | Yes | |
| query_dropped | No | |
| query_fallback | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description discloses important behavior: fallback curated picks with query_fallback true when nothing matches, query_dropped for filler-only queries, time_unknown meaning no showtime should be inferred as 00:00, and price_known false meaning price must not be assumed free. It also explains that share_url is the citation source and that group_by changes whether results are per occurrence or per event. This is substantial behavioral context not supplied by 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage guidance, and most sentences earn their place by clarifying query behavior, date handling, sorting, grouping, and result interpretation. It is somewhat dense and includes a long enumeration of result item fields even though an output schema exists. That output-field list is not purely redundant because it carries warnings like never show 00:00 and do not assume free, but it still makes the description longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter search tool with an output schema and read-only annotations, the description covers the critical decision points and gotchas: user-intent triggers, query constraints, when versus explicit dates, sorting for curation, grouping for event-level questions, and fallback semantics. Remaining details such as pagination, limit, venue matching, and most filters are fully documented in the schema. Nothing essential for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the baseline parameter definitions. The description still adds valuable semantics beyond the schema, especially that query is a literal keyword match and must not contain moods, that when replaces date_from/date_to and naming both is an error, and that group_by 'event' answers 'when does X open'. It does not add equivalent guidance for every filter, but it meaningfully enriches the most error-prone parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: find events across named hubs and date ranges, with concrete examples like concerts, parties, and markets. It distinguishes itself from get_event by saying occurrence_id is for get_event, and from list_categories by pointing to category slugs. An agent can tell this is the broad search tool rather than a detail, taxonomy, or hub-listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit user-intent triggers such as "what can I do...", "was ist los...", and "wohin heute Abend", and recommends sort='curation' for best picks. It also states clear exclusions: query must be literal keywords, never moods like 'romantic' or 'date'; dates should go in when rather than query; and group_by 'event' is the right choice for 'when does X open'. These are concrete when-to-use and when-not-to-use rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_event1 field changed- added
Output schema / $defs / EventRecord / properties / venue_noteAdded value: +{ + "type": "string" +}
- Changed
search_events3 fields changed- changed
Input schema / properties / query / descriptionPrevious value: -"Literal keywords for title and summary, each matched on its own (all words, else any word; compounds such as Halloweenparty are split). Never a mood like 'romantic'. Filler words (date, night, tonight, heute, abend, ideas, events, things to do, was ist los, what's on) are ignored. Kinder, Kids, Familie and family list family events first instead of filtering. If nothing matches, unrelated curated picks of the same filters answer, with query_fallback true and a hint: tell the user nothing matched (not with group_by 'event')."New value: +"Literal keywords for title and summary, every word must match (compounds such as Halloweenparty are split, plural endings of whole words are read). Never a mood like 'romantic'. Filler, pronoun and time words (date, night, heute, wochenende, ideas, things to do, was ist los, ich, my, ...) are ignored; use when for dates; a query of only those has query_dropped true. Kinder, Kids, Familie and family list family events first instead of filtering. If nothing matches, unrelated curated picks of the same filters answer, with query_fallback true: tell the user nothing matched (not with group_by 'event'). A hint alone is advice, not a miss." - added
Output schema / $defs / SearchItem / properties / venue_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / query_droppedAdded value: +{ + "type": "boolean" +}
5 tool updates
- Changed
get_day_overview42 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"The day in the hub's own calendar, YYYY-MM-DD."New value: +"The day in the hub's own calendar, YYYY-MM-DD. Required unless when is given." - removed
Input schema / properties / date / titleRemoved value: -"Date" - changed
Input schema / properties / hub / descriptionPrevious value: -"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco. Case-insensitive; names and abbreviations are accepted too, for example 'Hamburg', 'HH', 'München', 'Munich', 'Muenchen', 'MUC', 'Oldenburg', 'OL', 'Oldenburg (Oldb)', 'SF', 'SFO', 'San Fran' or 'San Francisco'. Results report the slug."New value: +"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case." - removed
Input schema / properties / hub / examplesRemoved value: -[ - "hamburg", - "muenchen", - "san-francisco" -] - removed
Input schema / properties / hub / titleRemoved value: -"Hub" - removed
Input schema / properties / time_from / anyOfRemoved value: -[ - { - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / time_from / defaultRemoved value: -null - changed
Input schema / properties / time_from / descriptionPrevious value: -"Count only events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for example '17:00' for tonight. Events without a known start time (all_day, time_unknown) are then not counted; busyness still compares the whole day."New value: +"Count only events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for 'tonight'. Events without a known start time (all_day, time_unknown) are not counted." - removed
Input schema / properties / time_from / examplesRemoved value: -[ - "17:00" -] - added
Input schema / properties / time_from / patternAdded value: +"^([01][0-9]|2[0-3]):[0-5][0-9]$" - removed
Input schema / properties / time_from / titleRemoved value: -"Time From" - added
Input schema / properties / time_from / typeAdded value: +"string" - removed
Input schema / properties / verbose / titleRemoved value: -"Verbose" - added
Input schema / properties / whenAdded value: +{ + "description": "today, tonight (today from 18:00 unless time_from is given), tomorrow, in the hub's local calendar; echoed as resolved. Replaces date (naming both is an error).", + "enum": [ + "today", + "tonight", + "tomorrow" + ], + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "hub", - "date" -]New value: +[ + "hub" +] - removed
Input schema / titleRemoved value: -"get_day_overviewArguments" - removed
Output schema / $defs / Curation / descriptionRemoved value: -"The compact curation verdict of one event (docs/specs/event-curation.md)." - removed
Output schema / $defs / Curation / properties / flags / titleRemoved value: -"Flags" - removed
Output schema / $defs / Curation / properties / one_off / titleRemoved value: -"One Off" - removed
Output schema / $defs / Curation / properties / score / titleRemoved value: -"Score" - removed
Output schema / $defs / Curation / titleRemoved value: -"Curation" - added
Output schema / $defs / ResolvedAdded value: +{ + "properties": { + "date_from": { + "type": "string" + }, + "date_to": { + "type": "string" + }, + "time_from": { + "type": [ + "string", + "null" + ] + }, + "when": { + "type": "string" + } + }, + "required": [ + "when", + "date_from", + "date_to", + "time_from" + ], + "type": "object" +} - removed
Output schema / $defs / TopCurated / descriptionRemoved value: -"One pre-ranked highlight of a day." - removed
Output schema / $defs / TopCurated / properties / occurrence_id / titleRemoved value: -"Occurrence Id" - removed
Output schema / $defs / TopCurated / properties / starts_at / titleRemoved value: -"Starts At" - removed
Output schema / $defs / TopCurated / properties / title / titleRemoved value: -"Title" - removed
Output schema / $defs / TopCurated / titleRemoved value: -"TopCurated" - removed
Output schema / descriptionRemoved value: -"What ``get_day_overview`` returns." - removed
Output schema / properties / busyness / titleRemoved value: -"Busyness" - removed
Output schema / properties / busyness_ratio / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Output schema / properties / busyness_ratio / titleRemoved value: -"Busyness Ratio" - added
Output schema / properties / busyness_ratio / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / by_category / titleRemoved value: -"By Category" - removed
Output schema / properties / date / titleRemoved value: -"Date" - removed
Output schema / properties / free_count / titleRemoved value: -"Free Count" - removed
Output schema / properties / hub / titleRemoved value: -"Hub" - removed
Output schema / properties / long_running_count / titleRemoved value: -"Long Running Count" - added
Output schema / properties / resolvedAdded value: +{ + "$ref": "#/$defs/Resolved" +} - removed
Output schema / properties / top_curated / titleRemoved value: -"Top Curated" - removed
Output schema / properties / total / titleRemoved value: -"Total" - removed
Output schema / properties / verified_count / titleRemoved value: -"Verified Count" - removed
Output schema / titleRemoved value: -"DayOverview"
- Changed
get_event96 fields changed- removed
Input schema / properties / occurrence_id / titleRemoved value: -"Occurrence Id" - removed
Input schema / properties / verbose / titleRemoved value: -"Verbose" - removed
Input schema / titleRemoved value: -"get_eventArguments" - changed
Output schema / $defs / Audience / descriptionPrevious value: -"The pre-computed audience verdict of one event (docs/specs/mcp-public.md).\n\n``family`` and ``adults_only`` are the routed booleans (null when neither\nthe model nor a rule decides); ``family_p`` is the raw family-friendly\nprobability so a caller can set its own threshold; ``visitor_pick`` is a\n0..1 ranking hint, not a filter."New value: +"Audience verdict of one event: ``family`` and ``adults_only`` are true, false or\nnull (unsure), ``visitor_pick`` (0 to 1) how much a first-time visitor would be glad\nto find it (a ranking hint, not a filter), ``family_p`` (0 to 1) the raw family\nprobability behind ``family``." - removed
Output schema / $defs / Audience / properties / adults_only / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Audience / properties / adults_only / titleRemoved value: -"Adults Only" - added
Output schema / $defs / Audience / properties / adults_only / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / Audience / properties / family / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Audience / properties / family / titleRemoved value: -"Family" - added
Output schema / $defs / Audience / properties / family / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / Audience / properties / family_p / titleRemoved value: -"Family P" - removed
Output schema / $defs / Audience / properties / visitor_pick / titleRemoved value: -"Visitor Pick" - removed
Output schema / $defs / Audience / titleRemoved value: -"Audience" - removed
Output schema / $defs / EventRecord / descriptionRemoved value: -"One full occurrence record of ``get_event`` (the event and its siblings)." - removed
Output schema / $defs / EventRecord / properties / age_min / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / age_min / titleRemoved value: -"Age Min" - added
Output schema / $defs / EventRecord / properties / age_min / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / $defs / EventRecord / properties / all_day / titleRemoved value: -"All Day" - removed
Output schema / $defs / EventRecord / properties / attend_mode / titleRemoved value: -"Attend Mode" - removed
Output schema / $defs / EventRecord / properties / attribution_url / titleRemoved value: -"Attribution Url" - removed
Output schema / $defs / EventRecord / properties / brand / titleRemoved value: -"Brand" - removed
Output schema / $defs / EventRecord / properties / category / titleRemoved value: -"Category" - removed
Output schema / $defs / EventRecord / properties / display_title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / display_title / titleRemoved value: -"Display Title" - added
Output schema / $defs / EventRecord / properties / display_title / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / ends_at / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / ends_at / titleRemoved value: -"Ends At" - added
Output schema / $defs / EventRecord / properties / ends_at / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / event_id / titleRemoved value: -"Event Id" - removed
Output schema / $defs / EventRecord / properties / hosts / titleRemoved value: -"Hosts" - removed
Output schema / $defs / EventRecord / properties / hub / titleRemoved value: -"Hub" - removed
Output schema / $defs / EventRecord / properties / is_free / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / is_free / titleRemoved value: -"Is Free" - added
Output schema / $defs / EventRecord / properties / is_free / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / EventRecord / properties / keywords / titleRemoved value: -"Keywords" - removed
Output schema / $defs / EventRecord / properties / kind / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / kind / titleRemoved value: -"Kind" - added
Output schema / $defs / EventRecord / properties / kind / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / occurrence_id / titleRemoved value: -"Occurrence Id" - added
Output schema / $defs / EventRecord / properties / price_knownAdded value: +{ + "type": "boolean" +} - removed
Output schema / $defs / EventRecord / properties / price_text / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / price_text / titleRemoved value: -"Price Text" - added
Output schema / $defs / EventRecord / properties / price_text / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / series_continues / titleRemoved value: -"Series Continues" - removed
Output schema / $defs / EventRecord / properties / series_kind / titleRemoved value: -"Series Kind" - removed
Output schema / $defs / EventRecord / properties / share_url / titleRemoved value: -"Share Url" - removed
Output schema / $defs / EventRecord / properties / start_confidence / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / start_confidence / titleRemoved value: -"Start Confidence" - added
Output schema / $defs / EventRecord / properties / start_confidence / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / starts_at / titleRemoved value: -"Starts At" - removed
Output schema / $defs / EventRecord / properties / summary / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / summary / titleRemoved value: -"Summary" - added
Output schema / $defs / EventRecord / properties / summary / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / tags / titleRemoved value: -"Tags" - removed
Output schema / $defs / EventRecord / properties / time_unknown / titleRemoved value: -"Time Unknown" - removed
Output schema / $defs / EventRecord / properties / title / titleRemoved value: -"Title" - removed
Output schema / $defs / EventRecord / properties / title_override / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / title_override / titleRemoved value: -"Title Override" - added
Output schema / $defs / EventRecord / properties / title_override / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / EventRecord / properties / url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / EventRecord / properties / url / titleRemoved value: -"Url" - added
Output schema / $defs / EventRecord / properties / url / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / $defs / EventRecord / requiredPrevious value: -[ - "occurrence_id", - "event_id", - "hub", - "title", - "display_title", - "summary", - "category", - "age_min", - "audience", - "series_continues", - "starts_at", - "ends_at", - "all_day", - "time_unknown", - "start_confidence", - "attend_mode", - "is_free", - "tags", - "hosts", - "keywords", - "price_text", - "venue", - "url", - "share_url", - "brand", - "attribution_url" -]New value: +[ + "occurrence_id", + "event_id", + "hub", + "title", + "display_title", + "summary", + "category", + "age_min", + "audience", + "series_continues", + "starts_at", + "ends_at", + "all_day", + "time_unknown", + "start_confidence", + "attend_mode", + "is_free", + "tags", + "hosts", + "keywords", + "price_text", + "price_known", + "venue", + "url", + "share_url", + "brand", + "attribution_url" +] - removed
Output schema / $defs / EventRecord / titleRemoved value: -"EventRecord" - removed
Output schema / $defs / FullSignals / descriptionRemoved value: -"Provenance signals of a full record." - removed
Output schema / $defs / FullSignals / properties / city_verified / titleRemoved value: -"City Verified" - removed
Output schema / $defs / FullSignals / properties / detail_enriched / titleRemoved value: -"Detail Enriched" - removed
Output schema / $defs / FullSignals / properties / has_display_title / titleRemoved value: -"Has Display Title" - removed
Output schema / $defs / FullSignals / properties / is_long_running_series / titleRemoved value: -"Is Long Running Series" - removed
Output schema / $defs / FullSignals / properties / source_count / titleRemoved value: -"Source Count" - removed
Output schema / $defs / FullSignals / properties / source_domain / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / FullSignals / properties / source_domain / titleRemoved value: -"Source Domain" - added
Output schema / $defs / FullSignals / properties / source_domain / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / FullSignals / titleRemoved value: -"FullSignals" - removed
Output schema / $defs / Venue / descriptionRemoved value: -"The structured venue of a full record." - removed
Output schema / $defs / Venue / properties / address / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Venue / properties / address / titleRemoved value: -"Address" - added
Output schema / $defs / Venue / properties / address / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / Venue / properties / city / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Venue / properties / city / titleRemoved value: -"City" - added
Output schema / $defs / Venue / properties / city / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / Venue / properties / display / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Venue / properties / display / titleRemoved value: -"Display" - added
Output schema / $defs / Venue / properties / display / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / Venue / properties / lat / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Venue / properties / lat / titleRemoved value: -"Lat" - added
Output schema / $defs / Venue / properties / lat / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / $defs / Venue / properties / lon / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Venue / properties / lon / titleRemoved value: -"Lon" - added
Output schema / $defs / Venue / properties / lon / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / $defs / Venue / properties / name / titleRemoved value: -"Name" - removed
Output schema / $defs / Venue / titleRemoved value: -"Venue" - removed
Output schema / descriptionRemoved value: -"What ``get_event`` returns." - removed
Output schema / properties / siblings / titleRemoved value: -"Siblings" - removed
Output schema / properties / siblings_truncated / titleRemoved value: -"Siblings Truncated" - removed
Output schema / titleRemoved value: -"EventDetail"
- Changed
list_categories6 fields changed- changed
Input schema / properties / hub / descriptionPrevious value: -"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco. Case-insensitive; names and abbreviations are accepted too, for example 'Hamburg', 'HH', 'München', 'Munich', 'Muenchen', 'MUC', 'Oldenburg', 'OL', 'Oldenburg (Oldb)', 'SF', 'SFO', 'San Fran' or 'San Francisco'. Results report the slug."New value: +"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case." - removed
Input schema / properties / hub / examplesRemoved value: -[ - "hamburg", - "muenchen", - "san-francisco" -] - removed
Input schema / properties / hub / titleRemoved value: -"Hub" - removed
Input schema / titleRemoved value: -"list_categoriesArguments" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"list_categoriesOutput"
- Changed
list_hubs3 fields changed- removed
Input schema / titleRemoved value: -"list_hubsArguments" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"list_hubsOutput"
- Changed
search_events145 fields changed- changed
Input schema / properties / categories / examplesPrevious value: -[ - [ - "family" - ], - [ - "concert", - "show" - ] -]New value: +[ + [ + "family" + ] +] - removed
Input schema / properties / categories / titleRemoved value: -"Categories" - removed
Input schema / properties / cursor / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / cursor / defaultRemoved value: -null - removed
Input schema / properties / cursor / titleRemoved value: -"Cursor" - added
Input schema / properties / cursor / typeAdded value: +"string" - changed
Input schema / properties / date_from / descriptionPrevious value: -"First day, inclusive, in the hub's own calendar, YYYY-MM-DD. Not earlier than yesterday; the window to date_to is at most 31 days and ends at most 31 days from today."New value: +"First day, inclusive, in the hub's own calendar, YYYY-MM-DD; not earlier than yesterday. At most 31 days to date_to, which is at most 31 days from today. Required unless when is given." - removed
Input schema / properties / date_from / titleRemoved value: -"Date From" - changed
Input schema / properties / date_to / descriptionPrevious value: -"Last day, inclusive, in the hub's own calendar, YYYY-MM-DD; not before date_from."New value: +"Last day, inclusive, in the hub's own calendar, YYYY-MM-DD; not before date_from. Required unless when is given." - removed
Input schema / properties / date_to / titleRemoved value: -"Date To" - removed
Input schema / properties / family_friendly / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Input schema / properties / family_friendly / defaultRemoved value: -null - removed
Input schema / properties / family_friendly / titleRemoved value: -"Family Friendly" - added
Input schema / properties / family_friendly / typeAdded value: +"boolean" - removed
Input schema / properties / free_only / titleRemoved value: -"Free Only" - removed
Input schema / properties / group_by / defaultRemoved value: -"occurrence" - changed
Input schema / properties / group_by / descriptionPrevious value: -"'occurrence' (default) lists an event once per day, with its time slots; 'event' lists each event once for the whole date range, with first_starts_at, last_starts_at and occurrences_count of its matching dates (all filters apply first; with sort 'curation' it is placed by its best-ranked match but shows its earliest) and its season season_first_starts_at, season_last_starts_at, season_occurrences_count (all its upcoming dates in our hub calendar, up to 31 days ahead, not narrowed by the filters; the real end may lie beyond) with starts_before_range and continues_after_range. Use 'event' for 'when does X open' or 'when is X on'."New value: +"'occurrence': an event once per day, its time slots in slots (occurrence_id, starts_at, ends_at; the item itself is the first slot). 'event': each event once for the whole range, with first_starts_at, last_starts_at, occurrences_count of its matching dates (filters apply first; with sort 'curation' placed by its best match) and its season_first_starts_at, season_last_starts_at, season_occurrences_count (all its upcoming dates up to 31 days ahead, ignoring the filters; the real end may lie beyond) with starts_before_range and continues_after_range. Default: 'event' when sort is 'curation' and the range spans more than one day, else 'occurrence'. Use 'event' for 'when does X open'." - removed
Input schema / properties / group_by / examplesRemoved value: -[ - "event" -] - removed
Input schema / properties / group_by / titleRemoved value: -"Group By" - changed
Input schema / properties / hub / descriptionPrevious value: -"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco. Case-insensitive; names and abbreviations are accepted too, for example 'Hamburg', 'HH', 'München', 'Munich', 'Muenchen', 'MUC', 'Oldenburg', 'OL', 'Oldenburg (Oldb)', 'SF', 'SFO', 'San Fran' or 'San Francisco'. Results report the slug."New value: +"Hub (city): one of hamburg, muenchen, oldenburg, san-francisco; names and abbreviations work too ('Munich', 'MUC', 'HH', 'OL', 'SF', 'SFO', 'Bay Area'), any case." - removed
Input schema / properties / hub / examplesRemoved value: -[ - "hamburg", - "muenchen", - "san-francisco" -] - removed
Input schema / properties / hub / titleRemoved value: -"Hub" - removed
Input schema / properties / limit / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / limit / defaultRemoved value: -null - changed
Input schema / properties / limit / descriptionPrevious value: -"Page size, 1 to 50 (clamped); default 25."New value: +"Page size, 1 to 50 (clamped); default 25. total counts items." - removed
Input schema / properties / limit / examplesRemoved value: -[ - 25 -] - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / limit / typeAdded value: +"integer" - removed
Input schema / properties / max_age_min / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / max_age_min / defaultRemoved value: -null - removed
Input schema / properties / max_age_min / examplesRemoved value: -[ - 12 -] - removed
Input schema / properties / max_age_min / titleRemoved value: -"Max Age Min" - added
Input schema / properties / max_age_min / typeAdded value: +"integer" - removed
Input schema / properties / query / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / query / defaultRemoved value: -null - changed
Input schema / properties / query / descriptionPrevious value: -"Words to look for in title and summary, each matched on its own (case-insensitive; all words, else any word). Kinder, Kids, Familie and family list family events first (then the rest, each group in the requested sort) instead of filtering."New value: +"Literal keywords for title and summary, each matched on its own (all words, else any word; compounds such as Halloweenparty are split). Never a mood like 'romantic'. Filler words (date, night, tonight, heute, abend, ideas, events, things to do, was ist los, what's on) are ignored. Kinder, Kids, Familie and family list family events first instead of filtering. If nothing matches, unrelated curated picks of the same filters answer, with query_fallback true and a hint: tell the user nothing matched (not with group_by 'event')." - removed
Input schema / properties / query / titleRemoved value: -"Query" - added
Input schema / properties / query / typeAdded value: +"string" - removed
Input schema / properties / sort / examplesRemoved value: -[ - "time" -] - removed
Input schema / properties / sort / titleRemoved value: -"Sort" - removed
Input schema / properties / time_from / anyOfRemoved value: -[ - { - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / time_from / defaultRemoved value: -null - changed
Input schema / properties / time_from / descriptionPrevious value: -"Keep events that start at or after this time of day, HH:MM in the hub's local time (24 hours). Events without a known start time (all_day, time_unknown) are dropped when a time is given. With a time_to before time_from the range wraps past midnight."New value: +"Keep events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for 'tonight'. Events without a known start time (all_day, time_unknown) are dropped. With a time_to before time_from the range wraps past midnight." - removed
Input schema / properties / time_from / examplesRemoved value: -[ - "18:00" -] - added
Input schema / properties / time_from / patternAdded value: +"^([01][0-9]|2[0-3]):[0-5][0-9]$" - removed
Input schema / properties / time_from / titleRemoved value: -"Time From" - added
Input schema / properties / time_from / typeAdded value: +"string" - removed
Input schema / properties / time_to / anyOfRemoved value: -[ - { - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / time_to / defaultRemoved value: -null - changed
Input schema / properties / time_to / descriptionPrevious value: -"Keep events that start at or before this time of day, HH:MM in the hub's local time (24 hours). See time_from. A range that wraps past midnight (time_from after time_to) applies to the start time of each day of the window."New value: +"Keep events that start at or before this time of day, HH:MM in the hub's local time (24 hours)." - removed
Input schema / properties / time_to / examplesRemoved value: -[ - "23:59" -] - added
Input schema / properties / time_to / patternAdded value: +"^([01][0-9]|2[0-3]):[0-5][0-9]$" - removed
Input schema / properties / time_to / titleRemoved value: -"Time To" - added
Input schema / properties / time_to / typeAdded value: +"string" - removed
Input schema / properties / venue / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / venue / defaultRemoved value: -null - removed
Input schema / properties / venue / examplesRemoved value: -[ - "Elbphilharmonie" -] - removed
Input schema / properties / venue / titleRemoved value: -"Venue" - added
Input schema / properties / venue / typeAdded value: +"string" - removed
Input schema / properties / verbose / titleRemoved value: -"Verbose" - added
Input schema / properties / whenAdded value: +{ + "description": "today, tonight (today from 18:00 unless time_from is given), tomorrow, this_weekend (the coming Saturday and Sunday; on a weekend day the current one, on a Sunday that day alone), next_weekend (the one after), in the hub's local calendar; echoed as resolved. Replaces date_from and date_to (naming both is an error).", + "enum": [ + "today", + "tonight", + "tomorrow", + "this_weekend", + "next_weekend" + ], + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "hub", - "date_from", - "date_to" -]New value: +[ + "hub" +] - removed
Input schema / titleRemoved value: -"search_eventsArguments" - changed
Output schema / $defs / Audience / descriptionPrevious value: -"The pre-computed audience verdict of one event (docs/specs/mcp-public.md).\n\n``family`` and ``adults_only`` are the routed booleans (null when neither\nthe model nor a rule decides); ``family_p`` is the raw family-friendly\nprobability so a caller can set its own threshold; ``visitor_pick`` is a\n0..1 ranking hint, not a filter."New value: +"Audience verdict of one event: ``family`` and ``adults_only`` are true, false or\nnull (unsure), ``visitor_pick`` (0 to 1) how much a first-time visitor would be glad\nto find it (a ranking hint, not a filter), ``family_p`` (0 to 1) the raw family\nprobability behind ``family``." - removed
Output schema / $defs / Audience / properties / adults_only / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Audience / properties / adults_only / titleRemoved value: -"Adults Only" - added
Output schema / $defs / Audience / properties / adults_only / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / Audience / properties / family / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Audience / properties / family / titleRemoved value: -"Family" - added
Output schema / $defs / Audience / properties / family / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / Audience / properties / family_p / titleRemoved value: -"Family P" - removed
Output schema / $defs / Audience / properties / visitor_pick / titleRemoved value: -"Visitor Pick" - removed
Output schema / $defs / Audience / titleRemoved value: -"Audience" - removed
Output schema / $defs / Curation / descriptionRemoved value: -"The compact curation verdict of one event (docs/specs/event-curation.md)." - removed
Output schema / $defs / Curation / properties / flags / titleRemoved value: -"Flags" - removed
Output schema / $defs / Curation / properties / one_off / titleRemoved value: -"One Off" - removed
Output schema / $defs / Curation / properties / score / titleRemoved value: -"Score" - removed
Output schema / $defs / Curation / titleRemoved value: -"Curation" - added
Output schema / $defs / ResolvedAdded value: +{ + "properties": { + "date_from": { + "type": "string" + }, + "date_to": { + "type": "string" + }, + "time_from": { + "type": [ + "string", + "null" + ] + }, + "when": { + "type": "string" + } + }, + "required": [ + "when", + "date_from", + "date_to", + "time_from" + ], + "type": "object" +} - removed
Output schema / $defs / SearchItem / descriptionRemoved value: -"One compact record of ``search_events``: an event on one day, or with\n``group_by=\"event\"`` an event over the whole window. The item's own\n``occurrence_id`` and ``starts_at`` are those of its first slot (first match)." - removed
Output schema / $defs / SearchItem / properties / age_min / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / age_min / titleRemoved value: -"Age Min" - added
Output schema / $defs / SearchItem / properties / age_min / typeAdded value: +[ + "integer", + "null" +] - removed
Output schema / $defs / SearchItem / properties / all_day / titleRemoved value: -"All Day" - removed
Output schema / $defs / SearchItem / properties / attend_mode / titleRemoved value: -"Attend Mode" - removed
Output schema / $defs / SearchItem / properties / category / titleRemoved value: -"Category" - removed
Output schema / $defs / SearchItem / properties / continues_after_range / titleRemoved value: -"Continues After Range" - removed
Output schema / $defs / SearchItem / properties / display_title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / display_title / titleRemoved value: -"Display Title" - added
Output schema / $defs / SearchItem / properties / display_title / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / SearchItem / properties / event_id / titleRemoved value: -"Event Id" - removed
Output schema / $defs / SearchItem / properties / first_starts_at / titleRemoved value: -"First Starts At" - removed
Output schema / $defs / SearchItem / properties / is_free / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / is_free / titleRemoved value: -"Is Free" - added
Output schema / $defs / SearchItem / properties / is_free / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / $defs / SearchItem / properties / kind / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / kind / titleRemoved value: -"Kind" - added
Output schema / $defs / SearchItem / properties / kind / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / SearchItem / properties / last_starts_at / titleRemoved value: -"Last Starts At" - removed
Output schema / $defs / SearchItem / properties / long_running / titleRemoved value: -"Long Running" - removed
Output schema / $defs / SearchItem / properties / long_running_dates / titleRemoved value: -"Long Running Dates" - removed
Output schema / $defs / SearchItem / properties / occurrence_id / titleRemoved value: -"Occurrence Id" - removed
Output schema / $defs / SearchItem / properties / occurrences_count / titleRemoved value: -"Occurrences Count" - added
Output schema / $defs / SearchItem / properties / price_knownAdded value: +{ + "type": "boolean" +} - removed
Output schema / $defs / SearchItem / properties / price_text / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / price_text / titleRemoved value: -"Price Text" - added
Output schema / $defs / SearchItem / properties / price_text / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / SearchItem / properties / season_first_starts_at / titleRemoved value: -"Season First Starts At" - removed
Output schema / $defs / SearchItem / properties / season_last_starts_at / titleRemoved value: -"Season Last Starts At" - removed
Output schema / $defs / SearchItem / properties / season_occurrences_count / titleRemoved value: -"Season Occurrences Count" - removed
Output schema / $defs / SearchItem / properties / series_kind / titleRemoved value: -"Series Kind" - removed
Output schema / $defs / SearchItem / properties / share_url / titleRemoved value: -"Share Url" - removed
Output schema / $defs / SearchItem / properties / slots / titleRemoved value: -"Slots" - removed
Output schema / $defs / SearchItem / properties / starts_at / titleRemoved value: -"Starts At" - removed
Output schema / $defs / SearchItem / properties / starts_before_range / titleRemoved value: -"Starts Before Range" - removed
Output schema / $defs / SearchItem / properties / tags / titleRemoved value: -"Tags" - removed
Output schema / $defs / SearchItem / properties / time_unknown / titleRemoved value: -"Time Unknown" - removed
Output schema / $defs / SearchItem / properties / title / titleRemoved value: -"Title" - removed
Output schema / $defs / SearchItem / properties / venue / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / SearchItem / properties / venue / titleRemoved value: -"Venue" - added
Output schema / $defs / SearchItem / properties / venue / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / $defs / SearchItem / requiredPrevious value: -[ - "occurrence_id", - "event_id", - "title", - "display_title", - "category", - "starts_at", - "all_day", - "time_unknown", - "attend_mode", - "age_min", - "audience", - "is_free", - "tags", - "price_text", - "venue", - "share_url" -]New value: +[ + "occurrence_id", + "event_id", + "title", + "display_title", + "category", + "starts_at", + "all_day", + "time_unknown", + "attend_mode", + "age_min", + "audience", + "is_free", + "tags", + "price_text", + "price_known", + "venue", + "share_url" +] - removed
Output schema / $defs / SearchItem / titleRemoved value: -"SearchItem" - removed
Output schema / $defs / SlimSignals / descriptionRemoved value: -"The one signal a search item carries." - removed
Output schema / $defs / SlimSignals / properties / city_verified / titleRemoved value: -"City Verified" - removed
Output schema / $defs / SlimSignals / titleRemoved value: -"SlimSignals" - removed
Output schema / $defs / Slot / descriptionRemoved value: -"One time slot of an event on one day." - removed
Output schema / $defs / Slot / properties / ends_at / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / $defs / Slot / properties / ends_at / titleRemoved value: -"Ends At" - added
Output schema / $defs / Slot / properties / ends_at / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / $defs / Slot / properties / occurrence_id / titleRemoved value: -"Occurrence Id" - removed
Output schema / $defs / Slot / properties / starts_at / titleRemoved value: -"Starts At" - removed
Output schema / $defs / Slot / titleRemoved value: -"Slot" - removed
Output schema / descriptionRemoved value: -"The page ``search_events`` returns." - added
Output schema / properties / hintAdded value: +{ + "type": "string" +} - removed
Output schema / properties / hub / titleRemoved value: -"Hub" - removed
Output schema / properties / items / titleRemoved value: -"Items" - removed
Output schema / properties / next_cursor / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / next_cursor / titleRemoved value: -"Next Cursor" - added
Output schema / properties / next_cursor / typeAdded value: +[ + "string", + "null" +] - added
Output schema / properties / query_fallbackAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / resolvedAdded value: +{ + "$ref": "#/$defs/Resolved" +} - removed
Output schema / properties / total / titleRemoved value: -"Total" - removed
Output schema / properties / truncated / titleRemoved value: -"Truncated" - removed
Output schema / titleRemoved value: -"SearchResult"
1 tool update
- Changed
search_events6 fields changed- changed
Input schema / properties / group_by / descriptionPrevious value: -"'occurrence' (default) lists an event once per day, with its time slots; 'event' lists each event once for the whole date range, with first_starts_at, last_starts_at and occurrences_count of its matching dates (all filters apply first). Use 'event' for 'when does X open' or 'when is X on'."New value: +"'occurrence' (default) lists an event once per day, with its time slots; 'event' lists each event once for the whole date range, with first_starts_at, last_starts_at and occurrences_count of its matching dates (all filters apply first; with sort 'curation' it is placed by its best-ranked match but shows its earliest) and its season season_first_starts_at, season_last_starts_at, season_occurrences_count (all its upcoming dates in our hub calendar, up to 31 days ahead, not narrowed by the filters; the real end may lie beyond) with starts_before_range and continues_after_range. Use 'event' for 'when does X open' or 'when is X on'." - added
Output schema / $defs / SearchItem / properties / continues_after_rangeAdded value: +{ + "title": "Continues After Range", + "type": "boolean" +} - added
Output schema / $defs / SearchItem / properties / season_first_starts_atAdded value: +{ + "title": "Season First Starts At", + "type": "string" +} - added
Output schema / $defs / SearchItem / properties / season_last_starts_atAdded value: +{ + "title": "Season Last Starts At", + "type": "string" +} - added
Output schema / $defs / SearchItem / properties / season_occurrences_countAdded value: +{ + "title": "Season Occurrences Count", + "type": "integer" +} - added
Output schema / $defs / SearchItem / properties / starts_before_rangeAdded value: +{ + "title": "Starts Before Range", + "type": "boolean" +}
2 tool updates
- Changed
get_day_overview1 field changed- added
Input schema / properties / time_fromAdded value: +{ + "anyOf": [ + { + "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Count only events that start at or after this time of day, HH:MM in the hub's local time (24 hours), for example '17:00' for tonight. Events without a known start time (all_day, time_unknown) are then not counted; busyness still compares the whole day.", + "examples": [ + "17:00" + ], + "title": "Time From" +}
- Changed
search_events6 fields changed- added
Input schema / properties / group_byAdded value: +{ + "default": "occurrence", + "description": "'occurrence' (default) lists an event once per day, with its time slots; 'event' lists each event once for the whole date range, with first_starts_at, last_starts_at and occurrences_count of its matching dates (all filters apply first). Use 'event' for 'when does X open' or 'when is X on'.", + "enum": [ + "occurrence", + "event" + ], + "examples": [ + "event" + ], + "title": "Group By", + "type": "string" +} - changed
Input schema / properties / sort / descriptionPrevious value: -"'time' lists chronologically (default); 'curation' lists the editorially ranked best first."New value: +"'time' lists chronologically (default), events without a known start time at the end of their day; 'curation' lists the editorially ranked best first (equal ranks in time order). 'start' and 'date' are accepted as 'time'." - changed
Output schema / $defs / SearchItem / descriptionPrevious value: -"One compact record of ``search_events``: an event on one day. The item's own\n``occurrence_id`` and ``starts_at`` are those of its first slot."New value: +"One compact record of ``search_events``: an event on one day, or with\n``group_by=\"event\"`` an event over the whole window. The item's own\n``occurrence_id`` and ``starts_at`` are those of its first slot (first match)." - added
Output schema / $defs / SearchItem / properties / first_starts_atAdded value: +{ + "title": "First Starts At", + "type": "string" +} - added
Output schema / $defs / SearchItem / properties / last_starts_atAdded value: +{ + "title": "Last Starts At", + "type": "string" +} - added
Output schema / $defs / SearchItem / properties / occurrences_countAdded value: +{ + "title": "Occurrences Count", + "type": "integer" +}
5 tool updates
- First observed
get_day_overview - First observed
get_event - First observed
list_categories - First observed
list_hubs - First observed
search_events
Related MCP Connectors
Find concerts, parties, club nights, festivals and more across Germany.
250,000+ real, local, future events, ranked for the signed-in person. Free to connect.
Local US events by town, date and kind (trivia, live music, karaoke...), each checked at its source.
Read-only search of upcoming SF Bay Area events: AI/tech, dance, music, arts, food, fitness.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides music events, concerts, music festivals, nightclubs and other events information.172MIT
- AlicenseNot gradedqualityDmaintenanceDiscover tech events, startup meetups, AI events across cities including hidden ones.27 npm2MIT
- AlicenseNot gradedqualityBmaintenanceLets AI agents discover and filter upcoming civic events and programming across San Francisco parks, plazas, and recreation centers by date range and keyword.178 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying San Francisco Bay Area events from Funcheap, including event details, tags, and categories.392 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.