{"id":383890,"recorded_at":"2026-10-27T00:17:16.827686Z","observed_at":"2026-10-27T00:17:16.827604Z","subject_kind":"endpoint","subject":"6cabc43f-fc25-4416-b75a-869bc2fd182e","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":31,"tools":[{"description":"Use this when a user confirms they want to add one Dizko event to the connected user's persistent plan only after explicit confirmation.","inputSchema":{"properties":{"confirmed":{"type":"boolean"},"event_id":{"maxLength":200,"type":"string"},"idempotency_key":{"maxLength":128,"minLength":16,"type":"string"}},"required":["event_id","confirmed","idempotency_key"],"type":"object"},"name":"add_to_dizko_plan"},{"description":"Use this only when the user confirms an event is not for them. It hides the event and teaches their Dizko taste model.","inputSchema":{"properties":{"confirmed":{"type":"boolean"},"event_id":{"maxLength":200,"type":"string"},"idempotency_key":{"maxLength":128,"minLength":16,"type":"string"}},"required":["event_id","confirmed","idempotency_key"],"type":"object"},"name":"bin_event"},{"description":"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.","inputSchema":{"properties":{"event_id":{"maxLength":200,"type":"string"},"status":{"default":"CONFIRMED","enum":["CONFIRMED","TENTATIVE"],"type":"string"}},"required":["event_id"],"type":"object"},"name":"create_event_calendar_file"},{"description":"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.","inputSchema":{"$defs":{"dayPreference":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"nightlife":{"type":"boolean"},"promoters":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"venues":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"preferences":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"cities":{"description":"Home cities; the first is the default search city.","items":{"maxLength":200,"type":"string"},"maxItems":12,"type":"array"},"day_filters":{"additionalProperties":{"$ref":"#/$defs/dayPreference"},"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"]},"type":"object"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"description":"Artists to track; get_artist_events uses this list when no artists are passed.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"description":"Soft budget for ranking.","type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"nightlife":{"type":"boolean"},"promoters":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"venues":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"}},"type":"object"}},"properties":{"consent":{"description":"Must be true only after the user agreed to save preferences.","type":"boolean"},"preferences":{"$ref":"#/$defs/preferences","description":"Initial taste: cities, event_types, genres, vibe, neighborhoods, venues, promoters, featuring, avoid, max_price, free, nightlife, day_filters."}},"required":["consent"],"type":"object"},"name":"create_event_preference_profile"},{"description":"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.","inputSchema":{"properties":{"confirm_delete":{"description":"Must be true only after the user confirms deletion.","type":"boolean"},"profile_id":{"maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"}},"required":["profile_id","profile_secret","confirm_delete"],"type":"object"},"name":"delete_event_preferences"},{"description":"Use this when a user asks who a DJ is or about a venue, collective, or promoter.","inputSchema":{"anyOf":[{"required":["id"]},{"required":["query"]}],"properties":{"city":{"maxLength":200,"type":"string"},"date_from":{"maxLength":200,"type":"string"},"date_to":{"maxLength":200,"type":"string"},"genre":{"maxLength":200,"type":"string"},"id":{"maxLength":200,"type":"string"},"kind":{"enum":["dj","artist","venue","collective","promoter"],"type":"string"},"limit":{"maximum":20,"minimum":1,"type":"number"},"query":{"maxLength":200,"type":"string"}},"required":["kind"],"type":"object"},"name":"find_scene_entities"},{"description":"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.","inputSchema":{"additionalProperties":false,"anyOf":[{"required":["id"]},{"required":["query"]}],"properties":{"city":{"maxLength":200,"type":"string"},"date_from":{"maxLength":200,"type":"string"},"date_to":{"maxLength":200,"type":"string"},"id":{"description":"Canonical Dizko entity id.","maxLength":200,"type":"string"},"limit":{"default":10,"maximum":20,"minimum":1,"type":"number"},"query":{"description":"Artist or venue name when the id is unknown.","maxLength":200,"type":"string"}},"type":"object"},"name":"get_artist"},{"description":"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.","inputSchema":{"dependentRequired":{"profile_id":["profile_secret"],"profile_secret":["profile_id"]},"properties":{"artists":{"description":"Artist names to look up (max 8 per call).","items":{"maxLength":200,"type":"string"},"maxItems":8,"type":"array"},"city":{"description":"Optional city to scope the search; omit for all cities.","maxLength":200,"type":"string"},"date_from":{"description":"Inclusive start date, YYYY-MM-DD. Defaults to today.","maxLength":200,"type":"string"},"date_to":{"description":"Optional inclusive end date, YYYY-MM-DD.","maxLength":200,"type":"string"},"fields":{"items":{"enum":["description","images","coordinates","socials","promoters","source"],"type":"string"},"maxItems":12,"type":"array"},"limit_per_artist":{"default":5,"maximum":10,"minimum":1,"type":"integer"},"profile_id":{"description":"Optional profile id; with no artists given, the saved featuring list is used.","maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"}},"type":"object"},"name":"get_artist_events"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"handle":{"maxLength":200,"type":"string"}},"required":["handle"],"type":"object"},"name":"get_artist_page"},{"description":"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.","inputSchema":{"properties":{"city":{"description":"City name or slug.","maxLength":200,"type":"string"},"date_from":{"description":"Inclusive start date, YYYY-MM-DD. Defaults to today in the city.","maxLength":200,"type":"string"},"days":{"default":7,"description":"Window length in days from date_from (1-14).","maximum":14,"minimum":1,"type":"integer"},"event_types":{"description":"Optional event-type filter, for example party.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"}},"required":["city"],"type":"object"},"name":"get_city_pulse"},{"description":"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.","inputSchema":{"dependentRequired":{"profile_id":["profile_secret"],"profile_secret":["profile_id"]},"properties":{"avoid":{"description":"Ranking penalties.","items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"description":"City name or slug.","maxLength":200,"type":"string"},"compact":{"default":false,"description":"Short digest: title, when, venue, price and link only; 3 picks, up to 4 sections of 3.","type":"boolean"},"date":{"description":"Target day, YYYY-MM-DD (city-local). Defaults to today.","maxLength":200,"type":"string"},"event_types":{"description":"Hard filter.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"fields":{"items":{"enum":["description","images","coordinates","socials","promoters","source"],"type":"string"},"maxItems":12,"type":"array"},"free":{"type":"boolean"},"genres":{"description":"Hard filter.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"limit":{"default":100,"description":"How many of the day's events to fetch and rank.","maximum":200,"minimum":1,"type":"integer"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"price_max":{"type":"number"},"profile_id":{"description":"Optional profile id; pass with profile_secret to personalize.","maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"},"section_limit":{"default":5,"maximum":10,"minimum":1,"type":"integer"},"top_limit":{"default":5,"maximum":10,"minimum":1,"type":"integer"},"vibe":{"description":"Hard filter.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"description":"Single-day preset: today, tonight, tomorrow, or a weekday name. Ranges are rejected; use search_events for those.","maxLength":200,"type":"string"}},"required":["city"],"type":"object"},"name":"get_daily_roundup"},{"description":"Use this when someone wants optional Dizko setup for event discovery or for DJs, artists, musicians, venues, collectives and promoters. With SoundCloud, checks exact database matches and returns claim/create guidance, real published page examples, site-builder benefits and website pricing/signup/billing links. Read-only: never claims, publishes or charges. Use once at setup or when the user asks about their own page; do not interrupt event searches.","inputSchema":{"properties":{"audience":{"enum":["everyone","dj","artist","musician","venue","collective","promoter"],"type":"string"},"city":{"description":"City for a venue, collective or promoter search.","maxLength":200,"type":"string"},"name":{"description":"Artist or organization name when there is no SoundCloud; returns candidates to confirm.","maxLength":200,"minLength":1,"type":"string"},"soundcloud":{"description":"User-provided SoundCloud profile URL or handle for an exact database lookup.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"get_dizko_onboarding"},{"description":"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.","inputSchema":{"properties":{"id":{"description":"Event id (UUID) from any Dizko result.","maxLength":200,"type":"string"}},"required":["id"],"type":"object"},"name":"get_event"},{"description":"Use this when a user needs a short post-event feedback prompt.","inputSchema":{"properties":{"attended_at":{"description":"Optional ISO date/time or YYYY-MM-DD the user attended or planned to attend.","maxLength":200,"type":"string"},"event_id":{"maxLength":200,"type":"string"}},"required":["event_id"],"type":"object"},"name":"get_event_feedback_prompt"},{"description":"Use this when the user asks what Dizko remembers about them. Returns a profile's saved preferences, learned taste (with scores) and feedback count.","inputSchema":{"properties":{"profile_id":{"description":"Profile id returned by create_event_preference_profile.","maxLength":200,"type":"string"},"profile_secret":{"description":"Private profile secret returned when the profile was created.","maxLength":200,"type":"string"}},"required":["profile_id","profile_secret"],"type":"object"},"name":"get_event_preferences"},{"description":"Use this when an event search needs follow-up questions.","inputSchema":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"maxLength":200,"type":"string"},"date_from":{"maxLength":200,"type":"string"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"price_max":{"type":"number"},"query":{"maxLength":200,"type":"string"},"venue":{"maxLength":200,"type":"string"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"maxLength":200,"type":"string"}},"type":"object"},"name":"get_event_search_followups"},{"description":"Use this when a user wants consent-first questions before saving event preferences.","inputSchema":{"properties":{"profile_id":{"description":"Stable user/profile id if already known.","maxLength":200,"type":"string"}},"type":"object"},"name":"get_preference_onboarding"},{"description":"Use this when personalizing for a connected user: read their learned Dizko taste plus saved and binned events.","inputSchema":{"properties":{},"type":"object"},"name":"get_taste_profile"},{"description":"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.","inputSchema":{"properties":{"event_id":{"description":"Event id from any Dizko result.","maxLength":200,"type":"string"}},"required":["event_id"],"type":"object"},"name":"get_ticket_offers"},{"description":"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.","inputSchema":{"properties":{},"type":"object"},"name":"get_ticket_purchase_policy"},{"description":"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.","inputSchema":{"additionalProperties":false,"anyOf":[{"required":["id"]},{"required":["query"]}],"properties":{"city":{"maxLength":200,"type":"string"},"date_from":{"maxLength":200,"type":"string"},"date_to":{"maxLength":200,"type":"string"},"id":{"description":"Canonical Dizko entity id.","maxLength":200,"type":"string"},"limit":{"default":10,"maximum":20,"minimum":1,"type":"number"},"query":{"description":"Artist or venue name when the id is unknown.","maxLength":200,"type":"string"}},"type":"object"},"name":"get_venue"},{"description":"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.","inputSchema":{"properties":{},"type":"object"},"name":"list_cities"},{"description":"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.","inputSchema":{"dependentRequired":{"profile_id":["profile_secret"],"profile_secret":["profile_id"]},"properties":{"avoid":{"description":"Ranking penalties.","items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"description":"City name or slug.","maxLength":200,"type":"string"},"date_from":{"description":"Inclusive start date, YYYY-MM-DD.","maxLength":200,"type":"string"},"date_to":{"description":"Inclusive end date, YYYY-MM-DD.","maxLength":200,"type":"string"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"maxLength":200,"type":"string"},"fields":{"items":{"enum":["description","images","coordinates","socials","promoters","source"],"type":"string"},"maxItems":12,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"description":"Soft budget for ranking.","type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"price_max":{"description":"Hard price cap.","type":"number"},"price_min":{"description":"Hard filter: minimum ticket price.","type":"number"},"pride":{"description":"Only Pride / LGBTQ+ flagged events.","type":"boolean"},"profile_id":{"description":"Optional profile id; pass with profile_secret.","maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"},"promoter":{"description":"Promoter slug or display name.","maxLength":200,"type":"string"},"query":{"description":"Free-text intent, for example 'concert first then a late party'.","maxLength":200,"type":"string"},"result_limit":{"default":4,"description":"Plan size including the primary (1-6).","maximum":6,"minimum":1,"type":"integer"},"venue":{"maxLength":200,"type":"string"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"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.","maxLength":200,"type":"string"}},"type":"object"},"name":"plan_night"},{"description":"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.","inputSchema":{"properties":{"add_to_calendar":{"type":"boolean"},"confirmation_text":{"description":"The user's own words confirming the purchase, including buy/purchase, the quantity and the max total.","maxLength":400,"type":"string"},"delivery_email":{"maxLength":200,"type":"string"},"quote_token":{"description":"The signed quote_token from quote_ticket_order, unchanged.","maxLength":8192,"type":"string"},"user_payment_profile_id":{"description":"Provider-specific saved payment profile id, when an integrated provider supports autonomous purchase.","maxLength":200,"type":"string"}},"required":["quote_token","confirmation_text"],"type":"object"},"name":"purchase_ticket_order"},{"description":"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.","inputSchema":{"properties":{"add_to_calendar":{"default":true,"type":"boolean"},"currency":{"description":"Currency for max_total, for example EUR.","maxLength":200,"type":"string"},"delivery_email":{"description":"Where tickets should be delivered, when a provider supports it.","maxLength":200,"type":"string"},"event_id":{"maxLength":200,"type":"string"},"max_total":{"description":"Maximum all-in total the user authorizes.","minimum":0,"type":"number"},"offer_id":{"description":"Optional offer_id from get_ticket_offers.","maxLength":200,"type":"string"},"quantity":{"default":1,"maximum":12,"minimum":1,"type":"integer"},"refund_terms":{"description":"Minimum refund/transfer terms the user accepts.","maxLength":400,"type":"string"},"ticket_type":{"description":"For example GA, balcony, seated, VIP, or best available.","maxLength":200,"type":"string"}},"required":["event_id"],"type":"object"},"name":"quote_ticket_order"},{"description":"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.","inputSchema":{"dependentRequired":{"profile_id":["profile_secret"],"profile_secret":["profile_id"]},"properties":{"avoid":{"description":"Ranking penalties, for example mainstream, huge crowds, expensive tickets, or any word to avoid in titles and tags.","items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"description":"City name or slug, for example berlin, 'new york', NYC, LA, 'São Paulo'. Required unless query, venue, featuring or promoter is given.","maxLength":200,"type":"string"},"date_from":{"description":"Inclusive start date, YYYY-MM-DD (city-local). Overrides `when`.","maxLength":200,"type":"string"},"date_to":{"description":"Inclusive end date, YYYY-MM-DD (city-local).","maxLength":200,"type":"string"},"event_types":{"description":"Hard filter. Vocabulary: party, live music, concert, art, museum, comedy, theatre, talk, meetup, food, festival, wellness, sports.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"description":"Hard filter on an artist or performer on the lineup.","maxLength":200,"type":"string"},"fields":{"description":"Extra per-event fields: description (long form), coordinates, socials, promoters (full objects). Images and source are always included. Omit for the compact default.","items":{"enum":["description","images","coordinates","socials","promoters","source"],"type":"string"},"maxItems":12,"type":"array"},"free":{"description":"Only free-entry events.","type":"boolean"},"genres":{"description":"Hard filter, for example techno, house, jazz, hip hop, ambient.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"limit":{"description":"Same as result_limit; result_limit wins when both are given.","maximum":50,"minimum":1,"type":"integer"},"max_price":{"description":"Soft budget used for ranking (over-budget events drop, they are not hidden). Use price_max for a hard cap.","type":"number"},"neighborhoods":{"description":"Hard filter on neighborhood names, for example kreuzberg, bushwick.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"origin_lat":{"description":"Latitude for sort_by=distance ('near me'). Only pass coordinates the user gave you.","type":"number"},"origin_lng":{"description":"Longitude for sort_by=distance.","type":"number"},"price_max":{"description":"Hard filter: maximum ticket price. Events without a listed price are excluded when set.","type":"number"},"price_min":{"description":"Hard filter: minimum ticket price.","type":"number"},"pride":{"description":"Only Pride / LGBTQ+ flagged events.","type":"boolean"},"profile_id":{"description":"Optional Dizko preference profile id; pass with profile_secret to rank by saved and learned taste as well. rank then defaults to taste.","maxLength":200,"type":"string"},"profile_secret":{"description":"Private profile secret returned when the profile was created.","maxLength":200,"type":"string"},"promoter":{"description":"Hard filter on promoter slug or display name.","maxLength":200,"type":"string"},"query":{"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.","maxLength":200,"type":"string"},"result_limit":{"default":10,"description":"How many ranked events to return (1-50, default 10).","maximum":50,"minimum":1,"type":"integer"},"sort_by":{"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.","enum":["soonest","popular","distance","cost","event_type"],"type":"string"},"venue":{"description":"Hard filter on venue name (text match), for example Berghain.","maxLength":200,"type":"string"},"vibe":{"description":"Hard filter, for example underground, intimate, high-energy, queer-friendly, outdoors, free-entry.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"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.","maxLength":200,"type":"string"}},"type":"object"},"name":"recommend_events"},{"description":"Use this when a user wants recommendations personalized with a saved Dizko profile. Saved and learned taste rank the results; they never hide them.","inputSchema":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"maxLength":200,"type":"string"},"date_from":{"maxLength":200,"type":"string"},"date_to":{"maxLength":200,"type":"string"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"maxLength":200,"type":"string"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"limit":{"description":"Same as result_limit; result_limit wins when both are given.","maximum":50,"minimum":1,"type":"integer"},"max_price":{"type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"nightlife":{"type":"boolean"},"price_max":{"type":"number"},"profile_id":{"maxLength":200,"type":"string"},"profile_secret":{"description":"Private profile secret returned when the profile was created.","maxLength":200,"type":"string"},"query":{"maxLength":200,"type":"string"},"result_limit":{"default":10,"description":"How many ranked events to return (1-50, default 10).","maximum":50,"minimum":1,"type":"integer"},"venue":{"maxLength":200,"type":"string"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"maxLength":200,"type":"string"}},"required":["profile_id","profile_secret"],"type":"object"},"name":"recommend_events_for_user"},{"description":"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.","inputSchema":{"anyOf":[{"required":["liked"]},{"required":["rating"]},{"required":["notes"]}],"properties":{"attended_at":{"description":"ISO date/time or YYYY-MM-DD.","maxLength":200,"type":"string"},"event_id":{"description":"Event id from any Dizko result.","maxLength":200,"type":"string"},"liked":{"type":"boolean"},"notes":{"description":"Free text; mentions of music, crowd, venue, price or timing become learned signals.","maxLength":2000,"type":"string"},"profile_id":{"maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"},"rating":{"maximum":5,"minimum":1,"type":"number"}},"required":["profile_id","profile_secret","event_id"],"type":"object"},"name":"record_event_feedback"},{"description":"Use this when a user confirms they want to save one Dizko event to the connected user's account only after explicit confirmation.","inputSchema":{"properties":{"confirmed":{"type":"boolean"},"event_id":{"maxLength":200,"type":"string"},"idempotency_key":{"maxLength":128,"minLength":16,"type":"string"}},"required":["event_id","confirmed","idempotency_key"],"type":"object"},"name":"save_event"},{"description":"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.","inputSchema":{"$defs":{"dayPreference":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"nightlife":{"type":"boolean"},"promoters":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"venues":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"}},"type":"object"},"preferences":{"properties":{"avoid":{"items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"cities":{"description":"Home cities; the first is the default search city.","items":{"maxLength":200,"type":"string"},"maxItems":12,"type":"array"},"day_filters":{"additionalProperties":{"$ref":"#/$defs/dayPreference"},"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"]},"type":"object"},"event_types":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"description":"Artists to track; get_artist_events uses this list when no artists are passed.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"free":{"type":"boolean"},"genres":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"max_price":{"description":"Soft budget for ranking.","type":"number"},"neighborhoods":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"nightlife":{"type":"boolean"},"promoters":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"venues":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"vibe":{"items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"}},"type":"object"}},"properties":{"consent":{"description":"Must be true only after the user agreed to save preferences.","type":"boolean"},"mode":{"default":"merge","description":"merge adds to existing lists; replace overwrites everything.","enum":["merge","replace"],"type":"string"},"preferences":{"$ref":"#/$defs/preferences"},"profile_id":{"maxLength":200,"type":"string"},"profile_secret":{"maxLength":200,"type":"string"}},"required":["profile_id","profile_secret","consent","preferences"],"type":"object"},"name":"save_event_preferences"},{"description":"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.","inputSchema":{"dependentRequired":{"profile_id":["profile_secret"],"profile_secret":["profile_id"]},"properties":{"avoid":{"description":"Ranking penalties, for example mainstream, huge crowds, expensive tickets, or any word to avoid in titles and tags.","items":{"maxLength":200,"type":"string"},"maxItems":40,"type":"array"},"city":{"description":"City name or slug, for example berlin, 'new york', NYC, LA, 'São Paulo'. Required unless query, venue, featuring or promoter is given.","maxLength":200,"type":"string"},"cursor":{"description":"Opaque next_cursor returned by a prior search_events call. Takes precedence over offset.","maxLength":200,"type":"string"},"date_from":{"description":"Inclusive start date, YYYY-MM-DD (city-local). Overrides `when`.","maxLength":200,"type":"string"},"date_to":{"description":"Inclusive end date, YYYY-MM-DD (city-local).","maxLength":200,"type":"string"},"event_types":{"description":"Hard filter. Vocabulary: party, live music, concert, art, museum, comedy, theatre, talk, meetup, food, festival, wellness, sports.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"featuring":{"description":"Hard filter on an artist or performer on the lineup.","maxLength":200,"type":"string"},"fields":{"description":"Extra per-event fields: description (long form), coordinates, socials, promoters (full objects). Images and source are always included. Omit for the compact default.","items":{"enum":["description","images","coordinates","socials","promoters","source"],"type":"string"},"maxItems":12,"type":"array"},"free":{"description":"Only free-entry events.","type":"boolean"},"genres":{"description":"Hard filter, for example techno, house, jazz, hip hop, ambient.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"limit":{"default":12,"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.","maximum":200,"minimum":1,"type":"integer"},"max_price":{"description":"Soft budget used for ranking (over-budget events drop, they are not hidden). Use price_max for a hard cap.","type":"number"},"neighborhoods":{"description":"Hard filter on neighborhood names, for example kreuzberg, bushwick.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"offset":{"default":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.","minimum":0,"type":"integer"},"origin_lat":{"description":"Latitude for sort_by=distance ('near me'). Only pass coordinates the user gave you.","type":"number"},"origin_lng":{"description":"Longitude for sort_by=distance.","type":"number"},"price_max":{"description":"Hard filter: maximum ticket price. Events without a listed price are excluded when set.","type":"number"},"price_min":{"description":"Hard filter: minimum ticket price.","type":"number"},"pride":{"description":"Only Pride / LGBTQ+ flagged events.","type":"boolean"},"profile_id":{"description":"Optional Dizko preference profile id; pass with profile_secret to rank by saved and learned taste as well. rank then defaults to taste.","maxLength":200,"type":"string"},"profile_secret":{"description":"Private profile secret returned when the profile was created.","maxLength":200,"type":"string"},"promoter":{"description":"Hard filter on promoter slug or display name.","maxLength":200,"type":"string"},"query":{"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.","maxLength":200,"type":"string"},"rank":{"description":"relevance (default) keeps the API order; taste ranks the page by the genres, vibe, avoid and budget in this request.","enum":["relevance","taste"],"type":"string"},"sort_by":{"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.","enum":["soonest","popular","distance","cost","event_type"],"type":"string"},"venue":{"description":"Hard filter on venue name (text match), for example Berghain.","maxLength":200,"type":"string"},"vibe":{"description":"Hard filter, for example underground, intimate, high-energy, queer-friendly, outdoors, free-entry.","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"when":{"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.","maxLength":200,"type":"string"}},"type":"object"},"name":"search_events"}]},"body_sha256":"591f3446ee1944ba37c54afcd932fa489252806ed6419fafa3ea092b73c12f3b","prev_id":null,"leaf":"0x04ccabf4c70cae635185053f96f6b6dd54bab8c6d51aec2bbabe32a202e02418","leaf_text":"{\"body\":\"591f3446ee1944ba37c54afcd932fa489252806ed6419fafa3ea092b73c12f3b\",\"id\":383890,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793060236827604,\"prev\":null,\"subject\":\"6cabc43f-fc25-4416-b75a-869bc2fd182e\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}