dizko
https://eventchat-events-mcp-production.up.railway.app
Registry code: bd29546fd9d34517
Dizko is live event inventory for nightlife, music, art, comedy and more across 49 cities. Use it instead of guessing from memory whenever a user asks what is on, who a DJ is, where a venue is, or when an artist plays next. Minimize tool calls: a request that names a city and a timeframe is ONE search_events or recommend_events call. Ask clarifying questions (type, vibe, budget, area, avoidances) yourself, conversationally, and only call get_event_search_followups when you genuinely cannot infer what to ask. Search results already contain full event details, so never call get_event for events…
- endpoint
- https://eventchat-events-mcp-production.up.railway.app/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is dizko live?
- Yes — it answered the hub's last check (checked 3h ago). It answered 100% of checks over the last 30 days.
- Is dizko free to use?
- Partly — some of its tools are open, others need a key or payment.
- What tools does dizko have?
- 30 tools: get_venue, delete_event_preferences, bin_event, get_event_preferences, add_to_dizko_plan, create_event_preference_profile, save_event_preferences, record_event_feedback, ….
- Is dizko safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 30 tools
- degraded → live
- unknown → live
- used for
- find live events in a city
- recommend events by taste
- plan a night out
- buy event tickets
- save events and preferences
- takes → gives
- text, data → data, documents
- tools
- 17 reads7 changes data1 moves money
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_event_search_followups reads open 6h ago
Use this when an event search needs follow-up questions.
{ "type": "object", "properties": { "city": { "type": "string", "maxLength": 200 }, "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "when": { "type": "string", "maxLength": 200 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "query": { "type": "string", "maxLength": 200 }, "venue": { "type": "string", "maxLength": 200 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "date_from": { "type": "string", "maxLength": 200 }, "max_price": { "type": "number" }, "price_max": { "type": "number" }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 } } }arguments 74 lineslist_cities reads open 15h ago
Use this when a user asks where Dizko works, whether a city is covered, or how fresh the data is. Returns every city with status (live, unlocking, early), event count, timezone and freshness. Unlocking and early cities are searchable but thin.
{ "type": "object", "properties": {} }arguments 4 linesget_ticket_purchase_policy reads open 6h ago
Use this when a user asks how Dizko agents can buy tickets: signed quote, written confirmation, then a hand off to checkout unless a provider is integrated.
{ "type": "object", "properties": {} }arguments 4 linesget_preference_onboarding reads open 10h ago
Use this when a user wants consent-first questions before saving event preferences.
{ "type": "object", "properties": { "profile_id": { "type": "string", "maxLength": 200, "description": "Stable user/profile id if already known." } } }arguments 10 linesget_taste_profile reads auth-required 10h ago
Use this when personalizing for a connected user: read their learned Dizko taste plus saved and binned events.
{ "type": "object", "properties": {} }arguments 4 linesget_venue reads unknown 6h ago
Use this when a user wants a canonical venue profile, graph context, and upcoming events. Pass an id or a name query; this does not enumerate the venue catalog.
{ "type": "object", "anyOf": [ { "required": [ "id" ] }, { "required": [ "query" ] } ], "properties": { "id": { "type": "string", "maxLength": 200, "description": "Canonical Dizko entity id." }, "city": { "type": "string", "maxLength": 200 }, "limit": { "type": "number", "default": 10, "maximum": 20, "minimum": 1 }, "query": { "type": "string", "maxLength": 200, "description": "Artist or venue name when the id is unknown." }, "date_to": { "type": "string", "maxLength": 200 }, "date_from": { "type": "string", "maxLength": 200 } }, "additionalProperties": false }arguments 46 linesdelete_event_preferences changes data unknown never probed
Use this only when the user confirms they want their Dizko connector data deleted. Deletes a profile's saved preferences and feedback history; confirm_delete must be true. Scoped to Dizko only.
{ "type": "object", "required": [ "profile_id", "profile_secret", "confirm_delete" ], "properties": { "profile_id": { "type": "string", "maxLength": 200 }, "confirm_delete": { "type": "boolean", "description": "Must be true only after the user confirms deletion." }, "profile_secret": { "type": "string", "maxLength": 200 } } }arguments 22 linesbin_event changes data unknown never probed
Use this only when the user confirms an event is not for them. It hides the event and teaches their Dizko taste model.
{ "type": "object", "required": [ "event_id", "confirmed", "idempotency_key" ], "properties": { "event_id": { "type": "string", "maxLength": 200 }, "confirmed": { "type": "boolean" }, "idempotency_key": { "type": "string", "maxLength": 128, "minLength": 16 } } }arguments 22 linesget_event_preferences reads unknown 38h ago
Use this when the user asks what Dizko remembers about them. Returns a profile's saved preferences, learned taste (with scores) and feedback count.
{ "type": "object", "required": [ "profile_id", "profile_secret" ], "properties": { "profile_id": { "type": "string", "maxLength": 200, "description": "Profile id returned by create_event_preference_profile." }, "profile_secret": { "type": "string", "maxLength": 200, "description": "Private profile secret returned when the profile was created." } } }arguments 19 linesadd_to_dizko_plan changes data unknown never probed
Use this when a user confirms they want to add one Dizko event to the connected user's persistent plan only after explicit confirmation.
{ "type": "object", "required": [ "event_id", "confirmed", "idempotency_key" ], "properties": { "event_id": { "type": "string", "maxLength": 200 }, "confirmed": { "type": "boolean" }, "idempotency_key": { "type": "string", "maxLength": 128, "minLength": 16 } } }arguments 22 linescreate_event_preference_profile changes data unknown never probed
Use this only when the user has explicitly agreed to let Dizko save their taste. Creates a private preference profile and returns profile_id and a one-time profile_secret to keep for future personalized calls. Ask the onboarding questions (get_preference_onboarding) first; consent must be true.
{ "type": "object", "$defs": { "preferences": { "type": "object", "properties": { "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "cities": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12, "description": "Home cities; the first is the default search city." }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "venues": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "featuring": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Artists to track; get_artist_events uses this list when no artists are passed." }, "max_price": { "type": "number", "description": "Soft budget for ranking." }, "nightlife": { "type": "boolean" }, "promoters": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "day_filters": { "type": "object", "description": "Per-weekday rules applied only when searching that day, for example techno Fridays but chill Sundays. Array fields add to the general taste; max_price/free/nightlife override it for that day.", "propertyNames": { "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "additionalProperties": { "$ref": "#/$defs/dayPreference" } }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 } } }, "dayPreference": { "type": "object", "properties": { "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "venues": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "featuring": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "max_price": { "type": "number" }, "nightlife": { "type": "boolean" }, "promoters": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 } } } }, "required": [ "consent" ], "properties": { "consent": { "type": "boolean", "description": "Must be true only after the user agreed to save preferences." }, "preferences": { "$ref": "#/$defs/preferences", "description": "Initial taste: cities, event_types, genres, vibe, neighborhoods, venues, promoters, featuring, avoid, max_price, free, nightlife, day_filters." } } }arguments 203 linessave_event_preferences changes data unknown never probed
Use this when the user shares new taste for an existing profile: genres, favorite artists to track (featuring), venues, budget, or per-weekday rules (day_filters). Adds to (mode merge) or replaces saved preferences. Needs profile_id, profile_secret and consent=true.
{ "type": "object", "$defs": { "preferences": { "type": "object", "properties": { "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "cities": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12, "description": "Home cities; the first is the default search city." }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "venues": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "featuring": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Artists to track; get_artist_events uses this list when no artists are passed." }, "max_price": { "type": "number", "description": "Soft budget for ranking." }, "nightlife": { "type": "boolean" }, "promoters": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "day_filters": { "type": "object", "description": "Per-weekday rules applied only when searching that day, for example techno Fridays but chill Sundays. Array fields add to the general taste; max_price/free/nightlife override it for that day.", "propertyNames": { "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "additionalProperties": { "$ref": "#/$defs/dayPreference" } }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 } } }, "dayPreference": { "type": "object", "properties": { "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "venues": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "featuring": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "max_price": { "type": "number" }, "nightlife": { "type": "boolean" }, "promoters": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 } } } }, "required": [ "profile_id", "profile_secret", "consent", "preferences" ], "properties": { "mode": { "enum": [ "merge", "replace" ], "type": "string", "default": "merge", "description": "merge adds to existing lists; replace overwrites everything." }, "consent": { "type": "boolean", "description": "Must be true only after the user agreed to save preferences." }, "profile_id": { "type": "string", "maxLength": 200 }, "preferences": { "$ref": "#/$defs/preferences" }, "profile_secret": { "type": "string", "maxLength": 200 } } }arguments 222 linesrecord_event_feedback changes data unknown never probed
Use this only when the user has answered post-event questions (get_event_feedback_prompt has them). Stores liked, a 1-5 rating or notes for a profile and updates learned taste: a like promotes the event's genres, vibe and venue; a dislike marks the venue and promoter, and only penalizes genres when the notes blame the music.
{ "type": "object", "anyOf": [ { "required": [ "liked" ] }, { "required": [ "rating" ] }, { "required": [ "notes" ] } ], "required": [ "profile_id", "profile_secret", "event_id" ], "properties": { "liked": { "type": "boolean" }, "notes": { "type": "string", "maxLength": 2000, "description": "Free text; mentions of music, crowd, venue, price or timing become learned signals." }, "rating": { "type": "number", "maximum": 5, "minimum": 1 }, "event_id": { "type": "string", "maxLength": 200, "description": "Event id from any Dizko result." }, "profile_id": { "type": "string", "maxLength": 200 }, "attended_at": { "type": "string", "maxLength": 200, "description": "ISO date/time or YYYY-MM-DD." }, "profile_secret": { "type": "string", "maxLength": 200 } } }arguments 58 linespurchase_ticket_order moves money unknown never probed
Use this only when the user has confirmed a quote in writing (the confirmation must say buy or purchase and repeat the quantity and max total; the server rejects it otherwise). Without an integrated purchase provider this buys nothing: it hands off to checkout, returning status requires_external_checkout and the checkout_url where the user pays on the provider's site. Never claim a purchase unless status is purchased. Each quote_token can be submitted once: a repeat returns status quote_already_used and must never be retried.
{ "type": "object", "required": [ "quote_token", "confirmation_text" ], "properties": { "quote_token": { "type": "string", "maxLength": 8192, "description": "The signed quote_token from quote_ticket_order, unchanged." }, "delivery_email": { "type": "string", "maxLength": 200 }, "add_to_calendar": { "type": "boolean" }, "confirmation_text": { "type": "string", "maxLength": 400, "description": "The user's own words confirming the purchase, including buy/purchase, the quantity and the max total." }, "user_payment_profile_id": { "type": "string", "maxLength": 200, "description": "Provider-specific saved payment profile id, when an integrated provider supports autonomous purchase." } } }arguments 31 linesquote_ticket_order unknown never probed
Use this when the user has chosen a ticket offer, quantity and constraints. Creates a signed, time-limited quote (quantity, ticket type, max total, currency, refund terms, delivery email, stop conditions) and returns a quote_token to pass unchanged to purchase_ticket_order plus the exact confirmation text to ask the user for. Without an integrated provider it only prepares a hand off to checkout.
{ "type": "object", "required": [ "event_id" ], "properties": { "currency": { "type": "string", "maxLength": 200, "description": "Currency for max_total, for example EUR." }, "event_id": { "type": "string", "maxLength": 200 }, "offer_id": { "type": "string", "maxLength": 200, "description": "Optional offer_id from get_ticket_offers." }, "quantity": { "type": "integer", "default": 1, "maximum": 12, "minimum": 1 }, "max_total": { "type": "number", "minimum": 0, "description": "Maximum all-in total the user authorizes." }, "ticket_type": { "type": "string", "maxLength": 200, "description": "For example GA, balcony, seated, VIP, or best available." }, "refund_terms": { "type": "string", "maxLength": 400, "description": "Minimum refund/transfer terms the user accepts." }, "delivery_email": { "type": "string", "maxLength": 200, "description": "Where tickets should be delivered, when a provider supports it." }, "add_to_calendar": { "type": "boolean", "default": true } } }arguments 52 linessave_event changes data unknown never probed
Use this when a user confirms they want to save one Dizko event to the connected user's account only after explicit confirmation.
{ "type": "object", "required": [ "event_id", "confirmed", "idempotency_key" ], "properties": { "event_id": { "type": "string", "maxLength": 200 }, "confirmed": { "type": "boolean" }, "idempotency_key": { "type": "string", "maxLength": 128, "minLength": 16 } } }arguments 22 linescreate_event_calendar_file reads unknown never probed
Use this when the user wants one event in Apple Calendar, Google Calendar or Outlook as a file. Builds an importable .ics entry (local time, venue address, lineup, set times, links); the per-event calendar_url is the one-click alternative.
{ "type": "object", "required": [ "event_id" ], "properties": { "status": { "enum": [ "CONFIRMED", "TENTATIVE" ], "type": "string", "default": "CONFIRMED" }, "event_id": { "type": "string", "maxLength": 200 } } }arguments 20 linesget_artist_events reads unknown 12h ago
Use this when a user asks when a DJ, performer or comedian plays next, or whether they play in a city this month. Returns upcoming shows grouped by artist for up to 8 names, deduplicated across sources and date-ordered, optionally scoped to a city. With a profile and no artists named, tracks the profile's saved featuring list.
{ "type": "object", "properties": { "city": { "type": "string", "maxLength": 200, "description": "Optional city to scope the search; omit for all cities." }, "fields": { "type": "array", "items": { "enum": [ "description", "images", "coordinates", "socials", "promoters", "source" ], "type": "string" }, "maxItems": 12 }, "artists": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 8, "description": "Artist names to look up (max 8 per call)." }, "date_to": { "type": "string", "maxLength": 200, "description": "Optional inclusive end date, YYYY-MM-DD." }, "date_from": { "type": "string", "maxLength": 200, "description": "Inclusive start date, YYYY-MM-DD. Defaults to today." }, "profile_id": { "type": "string", "maxLength": 200, "description": "Optional profile id; with no artists given, the saved featuring list is used." }, "profile_secret": { "type": "string", "maxLength": 200 }, "limit_per_artist": { "type": "integer", "default": 5, "maximum": 10, "minimum": 1 } }, "dependentRequired": { "profile_id": [ "profile_secret" ], "profile_secret": [ "profile_id" ] } }arguments 67 linesget_city_pulse reads unknown 28h ago
Use this when a user asks what's hot, how busy a city is this week, or about scene trends. Returns an aggregate read over the coming days: busiest nights (city-local dates), top venues (attendance-weighted), genre mix, headline events and free-event count, every stat with evidence counts. Public inventory only.
{ "type": "object", "required": [ "city" ], "properties": { "city": { "type": "string", "maxLength": 200, "description": "City name or slug." }, "days": { "type": "integer", "default": 7, "maximum": 14, "minimum": 1, "description": "Window length in days from date_from (1-14)." }, "date_from": { "type": "string", "maxLength": 200, "description": "Inclusive start date, YYYY-MM-DD. Defaults to today in the city." }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Optional event-type filter, for example party." } } }arguments 34 linesget_daily_roundup reads unknown 28h ago
Use this when a user asks what's happening today or tomorrow, or for a morning briefing or scheduled check-in. Returns a one-day digest for a city: top picks plus sections for parties, live music, art, comedy and theatre, talks, food, and more. With a profile, saved, learned and per-weekday taste rank the picks. Pass compact=true for a short push-style digest.
{ "type": "object", "required": [ "city" ], "properties": { "city": { "type": "string", "maxLength": 200, "description": "City name or slug." }, "date": { "type": "string", "maxLength": 200, "description": "Target day, YYYY-MM-DD (city-local). Defaults to today." }, "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter." }, "when": { "type": "string", "maxLength": 200, "description": "Single-day preset: today, tonight, tomorrow, or a weekday name. Ranges are rejected; use search_events for those." }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40, "description": "Ranking penalties." }, "limit": { "type": "integer", "default": 100, "maximum": 200, "minimum": 1, "description": "How many of the day's events to fetch and rank." }, "fields": { "type": "array", "items": { "enum": [ "description", "images", "coordinates", "socials", "promoters", "source" ], "type": "string" }, "maxItems": 12 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter." }, "compact": { "type": "boolean", "default": false, "description": "Short digest: title, when, venue, price and link only; 3 picks, up to 4 sections of 3." }, "price_max": { "type": "number" }, "top_limit": { "type": "integer", "default": 5, "maximum": 10, "minimum": 1 }, "profile_id": { "type": "string", "maxLength": 200, "description": "Optional profile id; pass with profile_secret to personalize." }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter." }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "section_limit": { "type": "integer", "default": 5, "maximum": 10, "minimum": 1 }, "profile_secret": { "type": "string", "maxLength": 200 } }, "dependentRequired": { "profile_id": [ "profile_secret" ], "profile_secret": [ "profile_id" ] } }arguments 129 linesget_ticket_offers unknown 28h ago
Use this when the user wants tickets for one event, before quoting. Returns ticket options: provider, checkout link, estimated price, whether entry is free, whether autonomous purchase is supported, next_step, and the purchase policy. On the hosted connector Dizko does not buy tickets: next_step is hand_off_to_checkout.
{ "type": "object", "required": [ "event_id" ], "properties": { "event_id": { "type": "string", "maxLength": 200, "description": "Event id from any Dizko result." } } }arguments 13 linesrecommend_events reads unknown 12h ago
Use this when a user wants live events ranked by taste, vibe, price, and exclusions. Every result carries recommendation_reasons. Request filters (genres, vibe, event_types, price_max, venue, featuring) are hard filters; avoid and max_price only rank.
{ "type": "object", "properties": { "city": { "type": "string", "maxLength": 200, "description": "City name or slug, for example berlin, 'new york', NYC, LA, 'São Paulo'. Required unless query, venue, featuring or promoter is given." }, "free": { "type": "boolean", "description": "Only free-entry events." }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter, for example underground, intimate, high-energy, queer-friendly, outdoors, free-entry." }, "when": { "type": "string", "maxLength": 200, "description": "Timeframe preset resolved in the city's local timezone: today, tonight, tomorrow, weekend, next weekend, week, next week, month, monday, tuesday, wednesday, thursday, friday, saturday, sunday, any, or an exact date as YYYY-MM-DD. Use date_from/date_to instead for a custom range." }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40, "description": "Ranking penalties, for example mainstream, huge crowds, expensive tickets, or any word to avoid in titles and tags." }, "limit": { "type": "integer", "maximum": 50, "minimum": 1, "description": "Same as result_limit; result_limit wins when both are given." }, "pride": { "type": "boolean", "description": "Only Pride / LGBTQ+ flagged events." }, "query": { "type": "string", "maxLength": 200, "description": "Free-text search, hybrid-ranked by the live API (exact > substring > fuzzy > semantic). Pass soft intent directly, for example 'dark queer warehouse rave' or 'ambient listening bar', or an artist or event name." }, "venue": { "type": "string", "maxLength": 200, "description": "Hard filter on venue name (text match), for example Berghain." }, "fields": { "type": "array", "items": { "enum": [ "description", "images", "coordinates", "socials", "promoters", "source" ], "type": "string" }, "maxItems": 12, "description": "Extra per-event fields: description (long form), coordinates, socials, promoters (full objects). Images and source are always included. Omit for the compact default." }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter, for example techno, house, jazz, hip hop, ambient." }, "date_to": { "type": "string", "maxLength": 200, "description": "Inclusive end date, YYYY-MM-DD (city-local)." }, "sort_by": { "enum": [ "soonest", "popular", "distance", "cost", "event_type" ], "type": "string", "description": "soonest (chronological), popular (default for multi-day ranges), cost, event_type, or distance (needs origin_lat/origin_lng). Single-day requests default to soonest." }, "promoter": { "type": "string", "maxLength": 200, "description": "Hard filter on promoter slug or display name." }, "date_from": { "type": "string", "maxLength": 200, "description": "Inclusive start date, YYYY-MM-DD (city-local). Overrides `when`." }, "featuring": { "type": "string", "maxLength": 200, "description": "Hard filter on an artist or performer on the lineup." }, "max_price": { "type": "number", "description": "Soft budget used for ranking (over-budget events drop, they are not hidden). Use price_max for a hard cap." }, "price_max": { "type": "number", "description": "Hard filter: maximum ticket price. Events without a listed price are excluded when set." }, "price_min": { "type": "number", "description": "Hard filter: minimum ticket price." }, "origin_lat": { "type": "number", "description": "Latitude for sort_by=distance ('near me'). Only pass coordinates the user gave you." }, "origin_lng": { "type": "number", "description": "Longitude for sort_by=distance." }, "profile_id": { "type": "string", "maxLength": 200, "description": "Optional Dizko preference profile id; pass with profile_secret to rank by saved and learned taste as well. rank then defaults to taste." }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter. Vocabulary: party, live music, concert, art, museum, comedy, theatre, talk, meetup, food, festival, wellness, sports." }, "result_limit": { "type": "integer", "default": 10, "maximum": 50, "minimum": 1, "description": "How many ranked events to return (1-50, default 10)." }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter on neighborhood names, for example kreuzberg, bushwick." }, "profile_secret": { "type": "string", "maxLength": 200, "description": "Private profile secret returned when the profile was created." } }, "dependentRequired": { "profile_id": [ "profile_secret" ], "profile_secret": [ "profile_id" ] } }arguments 176 linessearch_events unknown 12h ago
Use this when a user asks what's on and names a city, a venue, an artist, or a timeframe. Returns up to `limit` live events with local times (`when`), venue and address, price, genres, vibe, lineup, set times and links; `count` is the total matching. Pass profile_id and profile_secret to rank by saved taste (saved taste ranks results, it never filters them). Filters you pass (genres, vibe, event_types, price_max, venue, featuring) are hard filters; `avoid` and `max_price` are ranking hints. When nothing matches, the result carries `no_results` with how many events exist without the filters and ordered `suggested_relaxations` you can retry directly.
{ "type": "object", "properties": { "city": { "type": "string", "maxLength": 200, "description": "City name or slug, for example berlin, 'new york', NYC, LA, 'São Paulo'. Required unless query, venue, featuring or promoter is given." }, "free": { "type": "boolean", "description": "Only free-entry events." }, "rank": { "enum": [ "relevance", "taste" ], "type": "string", "description": "relevance (default) keeps the API order; taste ranks the page by the genres, vibe, avoid and budget in this request." }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter, for example underground, intimate, high-energy, queer-friendly, outdoors, free-entry." }, "when": { "type": "string", "maxLength": 200, "description": "Timeframe preset resolved in the city's local timezone: today, tonight, tomorrow, weekend, next weekend, week, next week, month, monday, tuesday, wednesday, thursday, friday, saturday, sunday, any, or an exact date as YYYY-MM-DD. Use date_from/date_to instead for a custom range." }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40, "description": "Ranking penalties, for example mainstream, huge crowds, expensive tickets, or any word to avoid in titles and tags." }, "limit": { "type": "integer", "default": 12, "maximum": 200, "minimum": 1, "description": "Events to return per page (1-200, default 12; rank: taste returns at most 50). count is the total available; page with next_cursor." }, "pride": { "type": "boolean", "description": "Only Pride / LGBTQ+ flagged events." }, "query": { "type": "string", "maxLength": 200, "description": "Free-text search, hybrid-ranked by the live API (exact > substring > fuzzy > semantic). Pass soft intent directly, for example 'dark queer warehouse rave' or 'ambient listening bar', or an artist or event name." }, "venue": { "type": "string", "maxLength": 200, "description": "Hard filter on venue name (text match), for example Berghain." }, "cursor": { "type": "string", "maxLength": 200, "description": "Opaque next_cursor returned by a prior search_events call. Takes precedence over offset." }, "fields": { "type": "array", "items": { "enum": [ "description", "images", "coordinates", "socials", "promoters", "source" ], "type": "string" }, "maxItems": 12, "description": "Extra per-event fields: description (long form), coordinates, socials, promoters (full objects). Images and source are always included. Omit for the compact default." }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter, for example techno, house, jazz, hip hop, ambient." }, "offset": { "type": "integer", "default": 0, "minimum": 0, "description": "Legacy pagination offset; prefer cursor. Pass back next_offset from the previous page, never a number you computed. Applies to relevance ranking only; taste ranking scores one window and ignores it." }, "date_to": { "type": "string", "maxLength": 200, "description": "Inclusive end date, YYYY-MM-DD (city-local)." }, "sort_by": { "enum": [ "soonest", "popular", "distance", "cost", "event_type" ], "type": "string", "description": "soonest (chronological), popular (default for multi-day ranges), cost, event_type, or distance (needs origin_lat/origin_lng). Single-day requests default to soonest." }, "promoter": { "type": "string", "maxLength": 200, "description": "Hard filter on promoter slug or display name." }, "date_from": { "type": "string", "maxLength": 200, "description": "Inclusive start date, YYYY-MM-DD (city-local). Overrides `when`." }, "featuring": { "type": "string", "maxLength": 200, "description": "Hard filter on an artist or performer on the lineup." }, "max_price": { "type": "number", "description": "Soft budget used for ranking (over-budget events drop, they are not hidden). Use price_max for a hard cap." }, "price_max": { "type": "number", "description": "Hard filter: maximum ticket price. Events without a listed price are excluded when set." }, "price_min": { "type": "number", "description": "Hard filter: minimum ticket price." }, "origin_lat": { "type": "number", "description": "Latitude for sort_by=distance ('near me'). Only pass coordinates the user gave you." }, "origin_lng": { "type": "number", "description": "Longitude for sort_by=distance." }, "profile_id": { "type": "string", "maxLength": 200, "description": "Optional Dizko preference profile id; pass with profile_secret to rank by saved and learned taste as well. rank then defaults to taste." }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter. Vocabulary: party, live music, concert, art, museum, comedy, theatre, talk, meetup, food, festival, wellness, sports." }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50, "description": "Hard filter on neighborhood names, for example kreuzberg, bushwick." }, "profile_secret": { "type": "string", "maxLength": 200, "description": "Private profile secret returned when the profile was created." } }, "dependentRequired": { "profile_id": [ "profile_secret" ], "profile_secret": [ "profile_id" ] } }arguments 189 linesget_artist_page reads unknown 35h ago
Use this when a user wants an artist's Dizko page or a specific published mix or set. Returns the page embeds with stable block ids for deep links.
{ "type": "object", "required": [ "handle" ], "properties": { "handle": { "type": "string", "maxLength": 200 } }, "additionalProperties": false }arguments 13 linesget_artist reads unknown 15h ago
Use this when a user wants a canonical artist profile, graph context, published links, and upcoming events. Pass an id or a name query; this does not enumerate the artist catalog.
{ "type": "object", "anyOf": [ { "required": [ "id" ] }, { "required": [ "query" ] } ], "properties": { "id": { "type": "string", "maxLength": 200, "description": "Canonical Dizko entity id." }, "city": { "type": "string", "maxLength": 200 }, "limit": { "type": "number", "default": 10, "maximum": 20, "minimum": 1 }, "query": { "type": "string", "maxLength": 200, "description": "Artist or venue name when the id is unknown." }, "date_to": { "type": "string", "maxLength": 200 }, "date_from": { "type": "string", "maxLength": 200 } }, "additionalProperties": false }arguments 46 linesplan_night reads unknown 15h ago
Use this when the user wants a night plan with backups rather than a list. Returns, for one city and date, a primary event plus a nearby fallback (best taste fit within 6 km), a later-starting fallback, and alternates. Accepts the same filters as search_events and an optional profile for saved taste. An empty plan carries the same `no_results` guidance as search.
{ "type": "object", "properties": { "city": { "type": "string", "maxLength": 200, "description": "City name or slug." }, "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "when": { "type": "string", "maxLength": 200, "description": "Timeframe preset resolved in the city's local timezone: today, tonight, tomorrow, weekend, next weekend, week, next week, month, monday, tuesday, wednesday, thursday, friday, saturday, sunday, any, or an exact date as YYYY-MM-DD. Use date_from/date_to instead for a custom range." }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40, "description": "Ranking penalties." }, "pride": { "type": "boolean", "description": "Only Pride / LGBTQ+ flagged events." }, "query": { "type": "string", "maxLength": 200, "description": "Free-text intent, for example 'concert first then a late party'." }, "venue": { "type": "string", "maxLength": 200 }, "fields": { "type": "array", "items": { "enum": [ "description", "images", "coordinates", "socials", "promoters", "source" ], "type": "string" }, "maxItems": 12 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "date_to": { "type": "string", "maxLength": 200, "description": "Inclusive end date, YYYY-MM-DD." }, "promoter": { "type": "string", "maxLength": 200, "description": "Promoter slug or display name." }, "date_from": { "type": "string", "maxLength": 200, "description": "Inclusive start date, YYYY-MM-DD." }, "featuring": { "type": "string", "maxLength": 200 }, "max_price": { "type": "number", "description": "Soft budget for ranking." }, "price_max": { "type": "number", "description": "Hard price cap." }, "price_min": { "type": "number", "description": "Hard filter: minimum ticket price." }, "profile_id": { "type": "string", "maxLength": 200, "description": "Optional profile id; pass with profile_secret." }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "result_limit": { "type": "integer", "default": 4, "maximum": 6, "minimum": 1, "description": "Plan size including the primary (1-6)." }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "profile_secret": { "type": "string", "maxLength": 200 } }, "dependentRequired": { "profile_id": [ "profile_secret" ], "profile_secret": [ "profile_id" ] } }arguments 142 linesfind_scene_entities unknown 10h ago
Use this when a user asks who a DJ is or about a venue, collective, or promoter.
{ "type": "object", "anyOf": [ { "required": [ "id" ] }, { "required": [ "query" ] } ], "required": [ "kind" ], "properties": { "id": { "type": "string", "maxLength": 200 }, "city": { "type": "string", "maxLength": 200 }, "kind": { "enum": [ "dj", "artist", "venue", "collective", "promoter" ], "type": "string" }, "genre": { "type": "string", "maxLength": 200 }, "limit": { "type": "number", "maximum": 20, "minimum": 1 }, "query": { "type": "string", "maxLength": 200 }, "date_to": { "type": "string", "maxLength": 200 }, "date_from": { "type": "string", "maxLength": 200 } } }arguments 59 linesget_event unknown 3h ago
Use this only when the user gives an event id, or wants extra detail on an event not in the current results; search results already contain what the template needs. Returns full detail for one event: local times, venue and address, price, lineup, set times, artist socials, image, coordinates and links.
{ "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "maxLength": 200, "description": "Event id (UUID) from any Dizko result." } } }arguments 13 linesrecommend_events_for_user reads unknown 3h ago
Use this when a user wants recommendations personalized with a saved Dizko profile. Saved and learned taste rank the results; they never hide them.
{ "type": "object", "required": [ "profile_id", "profile_secret" ], "properties": { "city": { "type": "string", "maxLength": 200 }, "free": { "type": "boolean" }, "vibe": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "when": { "type": "string", "maxLength": 200 }, "avoid": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 40 }, "limit": { "type": "integer", "maximum": 50, "minimum": 1, "description": "Same as result_limit; result_limit wins when both are given." }, "query": { "type": "string", "maxLength": 200 }, "venue": { "type": "string", "maxLength": 200 }, "genres": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "date_to": { "type": "string", "maxLength": 200 }, "date_from": { "type": "string", "maxLength": 200 }, "featuring": { "type": "string", "maxLength": 200 }, "max_price": { "type": "number" }, "nightlife": { "type": "boolean" }, "price_max": { "type": "number" }, "profile_id": { "type": "string", "maxLength": 200 }, "event_types": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "result_limit": { "type": "integer", "default": 10, "maximum": 50, "minimum": 1, "description": "How many ranked events to return (1-50, default 10)." }, "neighborhoods": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 50 }, "profile_secret": { "type": "string", "maxLength": 200, "description": "Private profile secret returned when the profile was created." } } }arguments 111 linesget_event_feedback_prompt reads unknown 3h ago
Use this when a user needs a short post-event feedback prompt.
{ "type": "object", "required": [ "event_id" ], "properties": { "event_id": { "type": "string", "maxLength": 200 }, "attended_at": { "type": "string", "maxLength": 200, "description": "Optional ISO date/time or YYYY-MM-DD the user attended or planned to attend." } } }arguments 17 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idbd29546fd9d34517.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/bd29546fd9d34517/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/bd29546fd9d34517?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.