← The evidence ledger
Evidence row 383890
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 6cabc43f-fc25-4416-b75a-869bc2fd182e
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 591f3446ee1944ba37c54afcd932fa489252806ed6419fafa3ea092b73c12f3b
- Leaf
- 0x04ccabf4c70cae635185053f96f6b6dd54bab8c6d51aec2bbabe32a202e02418
What was observed
{
"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"
}
]
}What the leaf hashes
{"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"}Proof
Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.