protogrid

Search / xyz.urbanplayground/events

events

R0· no sign-in

Live event discovery: concerts, club nights, art, comedy, and festivals across 14 cities.

v0.3.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality75good
Trust89of 100
Uptime, 30 days100%
Latency p50267 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "events": {
      "type": "http",
      "url": "https://eventchat-events-mcp-production.up.railway.app/mcp"
    }
  }
}
claude mcp add --transport http events https://eventchat-events-mcp-production.up.railway.app/mcp
[mcp_servers.events]
url = "https://eventchat-events-mcp-production.up.railway.app/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "events": {
      "type": "remote",
      "url": "https://eventchat-events-mcp-production.up.railway.app/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "events": {
      "type": "http",
      "url": "https://eventchat-events-mcp-production.up.railway.app/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=events&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZXZlbnRjaGF0LWV2ZW50cy1tY3AtcHJvZHVjdGlvbi51cC5yYWlsd2F5LmFwcC9tY3AifQ%3D%3D"
}
{
  "servers": {
    "events": {
      "type": "http",
      "url": "https://eventchat-events-mcp-production.up.railway.app/mcp"
    }
  }
}
{
  "mcpServers": {
    "events": {
      "httpUrl": "https://eventchat-events-mcp-production.up.railway.app/mcp"
    }
  }
}
extensions:
  "events":
    enabled: true
    name: "events"
    type: streamable_http
    uri: "https://eventchat-events-mcp-production.up.railway.app/mcp"
    timeout: 300

Quality 75 / 100good

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 300000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations30 of 30 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • warn
    tools.token_costabout 9,712 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes33 tool changes in 30 days
  • fail
    stability.rug_pull18 tools kept their name but changed most of their description in 30 days; review before trusting them
dependencies50 · weight 15
  • warn
    deps.known_vulns1 advisory of lower severity or without a published fix: GHSA-5r4p-p66f-jhc7 in [email protected] (indirect, fixed in 4.13.11)
  • fail
    deps.mcp_sdk_version@modelcontextprotocol/sdk 1.30.1 has 3 known advisories (GHSA-22jm-h49p-29qw, GHSA-6prh-2h8m-c8cw, GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.32.0 or later
  • pass
    deps.resolvable[email protected] resolved: 98 packages

30 tools, about 9,712 tokens to load them all · tool set 899e3fbe1493 · tools last changed 2026-10-14 · checked 2026-10-20 21:51 UTC

Tool changes

  • purchase_ticket_orderchangeddescription
    before

    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). With a third-party link this returns status requires_external_checkout and the checkout_url for the user to pay directly; never claim a purchase unless status is purchased. Only an integrated purchase provider can buy autonomously. Each quote_token can be submitted once: a repeat returns status quote_already_used and must never be retried.

    after · 67% of words in common

    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.

  • quote_ticket_orderchangeddescription
    before

    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.

    after · 80% of words in common

    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.

  • get_ticket_offerschangeddescription
    before

    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 (it is not on the hosted connector; third-party links are a checkout handoff), and the purchase policy.

    after · 69% of words in common

    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.

  • get_ticket_purchase_policychangeddescriptionmeaning changed
    before

    Use this when a user asks how Dizko agents can buy tickets.

    after · 48% of words in common

    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.

  • save_event_preferenceschangedannotations
  • create_event_calendar_filechangeddescription, input schemameaning changed
    before

    Use this when a user wants to add a Dizko event to their calendar after choosing or buying tickets.

    after · 21% of words in common

    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.

  • add_to_dizko_planchangedinput schema
  • save_eventchangedinput schema
  • bin_eventchangedinput schema
  • purchase_ticket_orderchangeddescription, input schemameaning changed
    before

    Use this when a user confirms a locked quote for purchase or checkout handoff.

    after · 17% of words in common

    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). With a third-party link this returns status requires_external_checkout and the checkout_url for the user to pay directly; never claim a purchase unless status is purchased. Only an integrated purchase provider can buy autonomously. Each quote_token can be submitted once: a repeat returns status quote_already_used and must never be retried.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 89 / 100

provenance85
liveness100
freshness65
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% ~updated-131d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npm97 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.30.1 · advisories checked 2026-10-20

advisoryseveritypackagefixed in
GHSA-22jm-h49p-29qwMCP TypeScript SDK: Experimental tasks were not tied to the session that created themhigh@modelcontextprotocol/[email protected]MCP SDK, directfixed in 1.32.0
GHSA-6qxp-vccf-f47hMCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP serverhigh@modelcontextprotocol/[email protected]MCP SDK, directfixed in 1.31.0
GHSA-6prh-2h8m-c8cwMCP TypeScript client SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodiesmoderate@modelcontextprotocol/[email protected]MCP SDK, directfixed in 1.32.0
GHSA-5r4p-p66f-jhc7Hono: `serveStatic` decodes the request path a second time, leading to bypass of middleware on static pathsmoderate[email protected]indirectfixed in 4.13.11

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://eventchat-events-mcp-production.up.railway.app/mcp streamable-httpnoneyes100%267 ms2026-07-282026-10-20
packageregistryversionruntimesecrets
uplayground-eventsnpm0.3.0npx

Tools (30)

add_to_dizko_planUse this when a user confirms they want to add one Dizko event to the connected user's persistent plan only after explicit confirmation.
bin_eventdestructiveUse this only when the user confirms an event is not for them. It hides the event and teaches their Dizko taste model.
create_event_calendar_fileread-onlyUse 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.
create_event_preference_profileUse 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.
delete_event_preferencesdestructiveUse 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.
find_scene_entitiesread-onlyUse this when a user asks who a DJ is or about a venue, collective, or promoter.
get_artistread-onlyUse 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.
get_artist_eventsread-onlyUse 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.
get_artist_pageread-onlyUse 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.
get_city_pulseread-onlyUse 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.
get_daily_roundupread-onlyUse 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.
get_eventread-onlyUse 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.
get_event_feedback_promptread-onlyUse this when a user needs a short post-event feedback prompt.
get_event_preferencesread-onlyUse this when the user asks what Dizko remembers about them. Returns a profile's saved preferences, learned taste (with scores) and feedback count.
get_event_search_followupsread-onlyUse this when an event search needs follow-up questions.
get_preference_onboardingread-onlyUse this when a user wants consent-first questions before saving event preferences.
get_taste_profileread-onlyUse this when personalizing for a connected user: read their learned Dizko taste plus saved and binned events.
get_ticket_offersread-onlyUse 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.
get_ticket_purchase_policyread-onlyUse 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.
get_venueread-onlyUse 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.
list_citiesread-onlyUse 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.
plan_nightread-onlyUse 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.
purchase_ticket_orderdestructiveUse 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.
quote_ticket_orderread-onlyUse 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.
recommend_eventsread-onlyUse 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.
recommend_events_for_userread-onlyUse this when a user wants recommendations personalized with a saved Dizko profile. Saved and learned taste rank the results; they never hide them.
record_event_feedbackUse 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.
save_eventUse this when a user confirms they want to save one Dizko event to the connected user's account only after explicit confirmation.
save_event_preferencesdestructiveUse 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.
search_eventsread-onlyUse 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "xyz.urbanplayground/events",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
  "remotes": [
    {
      "url": "https://eventchat-events-mcp-production.up.railway.app/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.3.0",
  "packages": [
    {
      "version": "0.3.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "uplayground-events",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "runtimeArguments": [
        {
          "type": "positional",
          "value": "mcp",
          "description": "Runs the stdio MCP server."
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/ZakKrevitt/EventChat",
    "source": "github",
    "subfolder": "ios/EventChat/agent-tools/eventchat-events"
  },
  "websiteUrl": "https://urbanplayground.xyz",
  "description": "Live event discovery: concerts, club nights, art, comedy, and festivals across 14 cities."
}