Koskamo

mygn MCP

An official MCP server provided by mygn that allows AI agents to access local event data for cities like Hamburg, Munich, Oldenburg, and San Francisco. It supports listing hubs, categories, day overviews, searching events, and retrieving full event records without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

mygn MCP logo, by mygnVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-02Operated by mygn
MCP endpoint (Streamable HTTP)
https://mcp.mygn.de/public
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to mygn.de ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • List available event hubs and their metadata
  • Search for events by query, category, or date window
  • Get a day's overview of events in a specific hub
  • Retrieve full details for a single event

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
mygn-events-public f019800f
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Ad-free city events of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco). Hub slugs: hamburg = Hamburg; muenchen = München; oldenburg = Oldenburg + Umland; san-francisco = San Francisco (English labels, USD). City names such as Munich, MUC, OL or SF are accepted for hub as well. Start with search_events (hub, date_from, date_to), then get_event for the events you mention; get_day_overview tells how busy a day is, list_categories which category slugs a hub has. Dates are YYYY-MM-DD in the hub's own calendar; a search covers at most 31 days, from yesterday up to 31 days ahead. There are no older events. For children and families use categories=['family']; the query words Kinder, Kids, Familie and family list family events first (then the rest, in the requested sort). time_from and time_to (HH:MM) narrow a search to a time of day, for 'tonight'. An event that runs several times on one day is one item with its slots. Cite the source: name mygn.de or rundown.city and link share_url (the event's own page on our site or, without one, the hub page); url is the organiser's page for tickets and details. A failed call has isError true and the content {"error": {"code", "message"}} with code unknown_hub, not_found, invalid_date_range, invalid_sort, invalid_arguments (a missing, mistyped or unknown argument value) or unavailable (the data is loading; retry shortly); the message says what to change.

Tools

5 advertised

list_hubs — List cities (hubs)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_hubs input schema
{
  "type": "object",
  "title": "list_hubsArguments",
  "properties": {}
}
list_hubs output schema
{
  "type": "object",
  "title": "list_hubsOutput",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "title": "Result"
    }
  }
}
list_hubs annotations
{
  "title": "List cities (hubs)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — List event categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_categories input schema
{
  "type": "object",
  "title": "list_categoriesArguments",
  "required": [
    "hub"
  ],
  "properties": {
    "hub": {
      "type": "string",
      "title": "Hub",
      "examples": [
        "hamburg",
        "muenchen",
        "san-francisco"
      ],
      "description": "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."
    }
  }
}
list_categories output schema
{
  "type": "object",
  "title": "list_categoriesOutput",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "title": "Result"
    }
  }
}
list_categories annotations
{
  "title": "List event categories",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_day_overview — Day overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

How busy one day is in a hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco): the number of events per category, how many are free, how many have a verified location, whether the day is quiet, normal or busy compared with the same kind of day (weekday or weekend) in the next 14 days (unknown for a day further out, where the listings are not complete yet) and top_curated, our editorial picks of the day (occurrence_id, title, starts_at; empty while nothing is rated). Events are counted once per day however many time slots they have. Use it to answer 'is there a lot on this Saturday' before listing events with search_events.

get_day_overview input schema
{
  "type": "object",
  "title": "get_day_overviewArguments",
  "required": [
    "hub",
    "date"
  ],
  "properties": {
    "hub": {
      "type": "string",
      "title": "Hub",
      "examples": [
        "hamburg",
        "muenchen",
        "san-francisco"
      ],
      "description": "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."
    },
    "date": {
      "type": "string",
      "title": "Date",
      "format": "date",
      "description": "The day in the hub's own calendar, YYYY-MM-DD."
    },
    "verbose": {
      "type": "boolean",
      "title": "Verbose",
      "default": false,
      "description": "true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default."
    }
  }
}
get_day_overview output schema
{
  "type": "object",
  "$defs": {
    "Curation": {
      "type": "object",
      "title": "Curation",
      "required": [
        "score",
        "one_off",
        "flags"
      ],
      "properties": {
        "flags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Flags"
        },
        "score": {
          "type": "number",
          "title": "Score"
        },
        "one_off": {
          "type": "number",
          "title": "One Off"
        }
      },
      "description": "The compact curation verdict of one event (docs/specs/event-curation.md)."
    },
    "TopCurated": {
      "type": "object",
      "title": "TopCurated",
      "required": [
        "occurrence_id",
        "title",
        "starts_at"
      ],
      "properties": {
        "title": {
          "type": "string",
          "title": "Title"
        },
        "curation": {
          "anyOf": [
            {
              "$ref": "#/$defs/Curation"
            },
            {
              "type": "null"
            }
          ]
        },
        "starts_at": {
          "type": "string",
          "title": "Starts At"
        },
        "occurrence_id": {
          "type": "integer",
          "title": "Occurrence Id"
        }
      },
      "description": "One pre-ranked highlight of a day."
    }
  },
  "title": "DayOverview",
  "required": [
    "hub",
    "date",
    "total",
    "by_category",
    "free_count",
    "verified_count",
    "busyness",
    "busyness_ratio",
    "top_curated"
  ],
  "properties": {
    "hub": {
      "type": "string",
      "title": "Hub"
    },
    "date": {
      "type": "string",
      "title": "Date"
    },
    "total": {
      "type": "integer",
      "title": "Total"
    },
    "busyness": {
      "enum": [
        "quiet",
        "normal",
        "busy",
        "unknown"
      ],
      "type": "string",
      "title": "Busyness"
    },
    "free_count": {
      "type": "integer",
      "title": "Free Count"
    },
    "by_category": {
      "type": "object",
      "title": "By Category",
      "additionalProperties": {
        "type": "integer"
      }
    },
    "top_curated": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TopCurated"
      },
      "title": "Top Curated"
    },
    "busyness_ratio": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Busyness Ratio"
    },
    "verified_count": {
      "type": "integer",
      "title": "Verified Count"
    },
    "long_running_count": {
      "type": "integer",
      "title": "Long Running Count"
    }
  },
  "description": "What ``get_day_overview`` returns."
}
get_day_overview annotations
{
  "title": "Day overview",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_events — Search events
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search upcoming events in one hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco) between date_from and date_to in the hub's local calendar. Returns a compact list in time order with at most 50 events per call (default 25); follow next_cursor for more. An event that runs several times on one day (for example 11:00, 13:00 and 15:00) is ONE item whose starts_at and occurrence_id are those of its first slot and whose slots list gives occurrence_id, starts_at and ends_at of every slot; total and paging count items. Each item has occurrence_id, title, display_title, category, starts_at (local time), all_day, time_unknown, venue, is_free, price_text (in the hub's language and currency), attend_mode, share_url (the event's own page on our site or, without one, our hub page, the source to cite), age_min (a stated minimum age, null when the source states none, 0 for all ages), the audience block and tags. The audience block is null when the event is not rated; otherwise family (true: suitable for parents with children, false: not, null: unsure), adults_only (true: an adults-only event, false: not, null: unsure), visitor_pick (0 to 1, how much a first-time visitor would be glad to find it; a ranking hint, not a filter) and family_p (0 to 1, the raw family-friendly probability behind family, for your own threshold). query matches each word on its own in the title and summary (all words first, any word if none has them all; German compounds such as Halloweenparty are split); the words Kinder, Kids, Familie and family do not filter but list family events first, then the rest, each group in the requested sort. time_from and time_to (HH:MM, hub local time) keep the events that start in that range, for 'tonight' or 'in the morning'. Internal fields (editorial score and flags, signals, series_kind, kind, long_running) are left out unless verbose is true. Examples: 'free events this weekend' -> free_only with the weekend dates; 'something for kids on Saturday' -> categories=['family'] for that day; 'concerts tonight' -> categories=['concert'] and time_from='18:00' for today. all_day true means the occurrence spans the whole day (starts_at is the day anchor T00:00 and it ends at least 18 hours later). time_unknown true means starts_at is only a date anchor because no showtime is known: never show 00:00, say the time is not given. Call get_event for the details of events you will mention.

search_events input schema
{
  "type": "object",
  "title": "search_eventsArguments",
  "required": [
    "hub",
    "date_from",
    "date_to"
  ],
  "properties": {
    "hub": {
      "type": "string",
      "title": "Hub",
      "examples": [
        "hamburg",
        "muenchen",
        "san-francisco"
      ],
      "description": "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."
    },
    "sort": {
      "enum": [
        "time",
        "curation"
      ],
      "type": "string",
      "title": "Sort",
      "default": "time",
      "examples": [
        "time"
      ],
      "description": "'time' lists chronologically (default); 'curation' lists the editorially ranked best first."
    },
    "limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Limit",
      "default": null,
      "examples": [
        25
      ],
      "description": "Page size, 1 to 50 (clamped); default 25."
    },
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Query",
      "default": null,
      "examples": [
        "Halloween Kinder",
        "jazz"
      ],
      "description": "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."
    },
    "venue": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Venue",
      "default": null,
      "examples": [
        "Elbphilharmonie"
      ],
      "description": "Venue name or town; matches the venue name as shown in results, so a town name keeps every venue in that town."
    },
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cursor",
      "default": null,
      "description": "The next_cursor of the previous page, to read on."
    },
    "date_to": {
      "type": "string",
      "title": "Date To",
      "format": "date",
      "description": "Last day, inclusive, in the hub's own calendar, YYYY-MM-DD; not before date_from."
    },
    "time_to": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Time To",
      "default": null,
      "examples": [
        "23:59"
      ],
      "description": "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."
    },
    "verbose": {
      "type": "boolean",
      "title": "Verbose",
      "default": false,
      "description": "true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default."
    },
    "date_from": {
      "type": "string",
      "title": "Date From",
      "format": "date",
      "description": "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."
    },
    "free_only": {
      "type": "boolean",
      "title": "Free Only",
      "default": false,
      "description": "true keeps only events known to be free."
    },
    "time_from": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Time From",
      "default": null,
      "examples": [
        "18:00"
      ],
      "description": "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."
    },
    "categories": {
      "type": "array",
      "items": {
        "enum": [
          "party",
          "concert",
          "culture",
          "show",
          "family",
          "food",
          "sport",
          "market",
          "cruise",
          "quiz",
          "tours",
          "other"
        ],
        "type": "string"
      },
      "title": "Categories",
      "examples": [
        [
          "family"
        ],
        [
          "concert",
          "show"
        ]
      ],
      "description": "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": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Age Min",
      "default": null,
      "examples": [
        12
      ],
      "description": "Keep events with no stated minimum age or one of at most this age; 0 means no age restriction stated."
    },
    "family_friendly": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Family Friendly",
      "default": null,
      "description": "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."
    }
  }
}
search_events output schema
{
  "type": "object",
  "$defs": {
    "Slot": {
      "type": "object",
      "title": "Slot",
      "required": [
        "occurrence_id",
        "starts_at",
        "ends_at"
      ],
      "properties": {
        "ends_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ends At"
        },
        "starts_at": {
          "type": "string",
          "title": "Starts At"
        },
        "occurrence_id": {
          "type": "integer",
          "title": "Occurrence Id"
        }
      },
      "description": "One time slot of an event on one day."
    },
    "Audience": {
      "type": "object",
      "title": "Audience",
      "required": [
        "family",
        "adults_only",
        "visitor_pick",
        "family_p"
      ],
      "properties": {
        "family": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Family"
        },
        "family_p": {
          "type": "number",
          "title": "Family P"
        },
        "adults_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Adults Only"
        },
        "visitor_pick": {
          "type": "number",
          "title": "Visitor Pick"
        }
      },
      "description": "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."
    },
    "Curation": {
      "type": "object",
      "title": "Curation",
      "required": [
        "score",
        "one_off",
        "flags"
      ],
      "properties": {
        "flags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Flags"
        },
        "score": {
          "type": "number",
          "title": "Score"
        },
        "one_off": {
          "type": "number",
          "title": "One Off"
        }
      },
      "description": "The compact curation verdict of one event (docs/specs/event-curation.md)."
    },
    "SearchItem": {
      "type": "object",
      "title": "SearchItem",
      "required": [
        "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"
      ],
      "properties": {
        "kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Kind"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Tags"
        },
        "slots": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Slot"
          },
          "title": "Slots"
        },
        "title": {
          "type": "string",
          "title": "Title"
        },
        "venue": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Venue"
        },
        "age_min": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Age Min"
        },
        "all_day": {
          "type": "boolean",
          "title": "All Day"
        },
        "is_free": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Is Free"
        },
        "signals": {
          "$ref": "#/$defs/SlimSignals"
        },
        "audience": {
          "anyOf": [
            {
              "$ref": "#/$defs/Audience"
            },
            {
              "type": "null"
            }
          ]
        },
        "category": {
          "type": "string",
          "title": "Category"
        },
        "curation": {
          "anyOf": [
            {
              "$ref": "#/$defs/Curation"
            },
            {
              "type": "null"
            }
          ]
        },
        "event_id": {
          "type": "integer",
          "title": "Event Id"
        },
        "share_url": {
          "type": "string",
          "title": "Share Url"
        },
        "starts_at": {
          "type": "string",
          "title": "Starts At"
        },
        "price_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price Text"
        },
        "attend_mode": {
          "enum": [
            "fixed_start",
            "drop_in"
          ],
          "type": "string",
          "title": "Attend Mode"
        },
        "series_kind": {
          "type": "string",
          "title": "Series Kind"
        },
        "long_running": {
          "type": "boolean",
          "title": "Long Running"
        },
        "time_unknown": {
          "type": "boolean",
          "title": "Time Unknown"
        },
        "display_title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Display Title"
        },
        "occurrence_id": {
          "type": "integer",
          "title": "Occurrence Id"
        },
        "long_running_dates": {
          "type": "integer",
          "title": "Long Running Dates"
        }
      },
      "description": "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."
    },
    "SlimSignals": {
      "type": "object",
      "title": "SlimSignals",
      "required": [
        "city_verified"
      ],
      "properties": {
        "city_verified": {
          "type": "boolean",
          "title": "City Verified"
        }
      },
      "description": "The one signal a search item carries."
    }
  },
  "title": "SearchResult",
  "required": [
    "hub",
    "items",
    "total",
    "next_cursor",
    "truncated"
  ],
  "properties": {
    "hub": {
      "type": "string",
      "title": "Hub"
    },
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SearchItem"
      },
      "title": "Items"
    },
    "total": {
      "type": "integer",
      "title": "Total"
    },
    "truncated": {
      "type": "boolean",
      "title": "Truncated"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "description": "The page ``search_events`` returns."
}
search_events annotations
{
  "title": "Search events",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_event — Get event details
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full record of one event occurrence from search_events, in a hub of mygn.de (Hamburg, München, Oldenburg + Umland) and rundown.city (San Francisco): summary, start and end time, venue with address and coordinates, price text, age_min, the audience block (family, adults_only, visitor_pick, family_p as in search_events; null when not rated), the organiser's link (url), the link to this event's own page on our site or, without one, our hub page (share_url), brand (mygn or rundown) and attribution_url (the hub page to cite as the source), plus the next 20 other dates of the same event (siblings, with siblings_truncated true when there are more). Internal fields (signals, series_kind, kind, title_override) are left out unless verbose is true. all_day true means the occurrence spans the whole day (T00:00 start, ends_at at least 18 hours later). time_unknown true means starts_at is only a date anchor, not a start time: never show 00:00. series_continues true means the listed dates of this recurring event stop only where our sources' look-ahead stops, so it likely runs on: never say it ends after the last listed date. Use url for the organiser's page, where tickets and opening details are.

get_event input schema
{
  "type": "object",
  "title": "get_eventArguments",
  "required": [
    "occurrence_id"
  ],
  "properties": {
    "verbose": {
      "type": "boolean",
      "title": "Verbose",
      "default": false,
      "description": "true adds the internal fields (curation score and flags, signals, series_kind, kind, long_running) that are left out by default."
    },
    "occurrence_id": {
      "type": "integer",
      "title": "Occurrence Id",
      "examples": [
        12345
      ],
      "description": "The occurrence_id of an item from search_events."
    }
  }
}
get_event output schema
{
  "type": "object",
  "$defs": {
    "Venue": {
      "type": "object",
      "title": "Venue",
      "required": [
        "name",
        "display",
        "address",
        "city",
        "lat",
        "lon"
      ],
      "properties": {
        "lat": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Lat"
        },
        "lon": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Lon"
        },
        "city": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "City"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "address": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Address"
        },
        "display": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Display"
        }
      },
      "description": "The structured venue of a full record."
    },
    "Audience": {
      "type": "object",
      "title": "Audience",
      "required": [
        "family",
        "adults_only",
        "visitor_pick",
        "family_p"
      ],
      "properties": {
        "family": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Family"
        },
        "family_p": {
          "type": "number",
          "title": "Family P"
        },
        "adults_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Adults Only"
        },
        "visitor_pick": {
          "type": "number",
          "title": "Visitor Pick"
        }
      },
      "description": "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."
    },
    "EventRecord": {
      "type": "object",
      "title": "EventRecord",
      "required": [
        "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"
      ],
      "properties": {
        "hub": {
          "type": "string",
          "title": "Hub"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Url"
        },
        "kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Kind"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Tags"
        },
        "brand": {
          "type": "string",
          "title": "Brand"
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Hosts"
        },
        "title": {
          "type": "string",
          "title": "Title"
        },
        "venue": {
          "anyOf": [
            {
              "$ref": "#/$defs/Venue"
            },
            {
              "type": "null"
            }
          ]
        },
        "age_min": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Age Min"
        },
        "all_day": {
          "type": "boolean",
          "title": "All Day"
        },
        "ends_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ends At"
        },
        "is_free": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Is Free"
        },
        "signals": {
          "$ref": "#/$defs/FullSignals"
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Summary"
        },
        "audience": {
          "anyOf": [
            {
              "$ref": "#/$defs/Audience"
            },
            {
              "type": "null"
            }
          ]
        },
        "category": {
          "type": "string",
          "title": "Category"
        },
        "event_id": {
          "type": "integer",
          "title": "Event Id"
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Keywords"
        },
        "share_url": {
          "type": "string",
          "title": "Share Url"
        },
        "starts_at": {
          "type": "string",
          "title": "Starts At"
        },
        "price_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Price Text"
        },
        "attend_mode": {
          "enum": [
            "fixed_start",
            "drop_in"
          ],
          "type": "string",
          "title": "Attend Mode"
        },
        "series_kind": {
          "type": "string",
          "title": "Series Kind"
        },
        "time_unknown": {
          "type": "boolean",
          "title": "Time Unknown"
        },
        "display_title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Display Title"
        },
        "occurrence_id": {
          "type": "integer",
          "title": "Occurrence Id"
        },
        "title_override": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Title Override"
        },
        "attribution_url": {
          "type": "string",
          "title": "Attribution Url"
        },
        "series_continues": {
          "type": "boolean",
          "title": "Series Continues"
        },
        "start_confidence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Start Confidence"
        }
      },
      "description": "One full occurrence record of ``get_event`` (the event and its siblings)."
    },
    "FullSignals": {
      "type": "object",
      "title": "FullSignals",
      "required": [
        "city_verified",
        "detail_enriched",
        "has_display_title",
        "source_count",
        "is_long_running_series",
        "source_domain"
      ],
      "properties": {
        "source_count": {
          "type": "integer",
          "title": "Source Count"
        },
        "city_verified": {
          "type": "boolean",
          "title": "City Verified"
        },
        "source_domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Domain"
        },
        "detail_enriched": {
          "type": "boolean",
          "title": "Detail Enriched"
        },
        "has_display_title": {
          "type": "boolean",
          "title": "Has Display Title"
        },
        "is_long_running_series": {
          "type": "boolean",
          "title": "Is Long Running Series"
        }
      },
      "description": "Provenance signals of a full record."
    }
  },
  "title": "EventDetail",
  "required": [
    "occurrence",
    "siblings",
    "siblings_truncated"
  ],
  "properties": {
    "siblings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/EventRecord"
      },
      "title": "Siblings"
    },
    "occurrence": {
      "$ref": "#/$defs/EventRecord"
    },
    "siblings_truncated": {
      "type": "boolean",
      "title": "Siblings Truncated"
    }
  },
  "description": "What ``get_event`` returns."
}
get_event annotations
{
  "title": "Get event details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-02: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
936 ms
95th percentile latency
936 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 936 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http mygn-mcp https://mcp.mygn.de/public

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add mygn-mcp --url https://mcp.mygn.de/public

Cursor

Merge this server into .cursor/mcp.json in your project, then enable mygn-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "mygn-mcp": {
      "url": "https://mcp.mygn.de/public"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "mygn-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.mygn.de/public",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start mygn-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "mygn-mcp": {
      "type": "http",
      "url": "https://mcp.mygn.de/public"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http mygn-mcp https://mcp.mygn.de/public

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "mygn-mcp": {
      "url": "https://mcp.mygn.de/public"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "mygn-mcp": {
      "serverUrl": "https://mcp.mygn.de/public"
    }
  }
}

Let your agent find its tools

Find servers like mygn MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run mygn MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing