{"server":{"name":"io.github.agentstructure/local-events","title":"Local Events Tracker","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://localeventstracker.com/mcp","type":"streamable-http"}],"version":"1.0.0","websiteUrl":"https://localeventstracker.com","description":"Search local events, follow artists and interests, get weekend recommendations and change alerts"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-14T19:43:41.130893Z","publishedAt":"2026-10-14T19:43:41.130893Z","statusChangedAt":"2026-10-14T19:43:41.130893Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://localeventstracker.com/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-11-25"],"stateless":true},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":198,"consecutive_failures":0,"last_probe_at":"2026-10-20T03:11:47.412Z","last_ok_at":"2026-10-20T03:11:47.412Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"get_event_changes","title":"Get event changes","description":"Detected changes with previous and current values, for one event_id or for all events the user saved, is going to or marked interested. EVENT_MISSING_FROM_SOURCE is low confidence and does not mean cancelled.","annotations":{"title":"Get event changes","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"get_event_details","title":"Get event details","description":"Full details for one event by event_id (from any other tool): venue, performers, price range if published, ticket link, source records, when AgentStructure first saw it, and its history of detected changes. Refreshes from Ticketmaster when stored data is older than 6 hours.","annotations":{"title":"Get event details","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"get_followed_artists","title":"Get followed artists","description":"List the performers and teams this user follows.","annotations":{"title":"Get followed artists","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"get_weekend_recommendations","title":"Weekend recommendations","description":"Rank events for the coming weekend (Friday to Sunday local dates) near a saved or given location, using the user's saved interests, followed artists, budget, preferred days and times, and past feedback. Each result says why it was recommended, using only what actually matched. Pass busy intervals from the user's calendar (if the user allowed calendar access in the assistant) to skip conflicts; free/busy is enough, never send event details.","annotations":{"title":"Weekend recommendations","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"list_local_event_alerts","title":"List new event alerts","description":"Return new alerts for this user: newly observed events matching a watchlist or a followed artist, and changes (cancelled, postponed, rescheduled, date, time, venue or price changes, sale start) to matching or saved events. Returned alerts are marked as read. Set refresh true to run a small check right now (limited per hour). An empty list means nothing new, not nothing happening.","annotations":{"title":"List new event alerts","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"manage_alert_delivery","title":"Email, phone and text alerts","description":"Choose where alerts go besides this chat: add_email sends a confirmation link to the address (alerts start only after the user confirms), add_phone returns a private subscribe link for the free ntfy phone app, add_sms (paid plans, U.S. numbers) texts a 6-digit code to phone; pass consent: true only after the user agreed to receive automated alert texts (msg & data rates may apply, reply STOP to cancel), then verify_sms with the code. remove_email, remove_phone and remove_sms stop them, get shows the current setup. One digest is sent after each daily check; at most one text a day. Only add an address or number the user gave for this purpose.","annotations":{"title":"Email, phone and text alerts","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"manage_event_profile","title":"Manage event profile","description":"View or change the user's event preferences and privacy: budget, preferred days and times, time zone, interests (artist, team, genre, category, venue, keyword), saved locations (city precision; trips with valid_from/valid_until never replace home), clear personalization, or delete the account and all its data (both need confirm: true and an explicit request from the user).","annotations":{"title":"Manage event profile","readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":true},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"manage_event_watchlist","title":"Manage watchlists","description":"List, pause, resume, update or delete the user's watchlists by name. Also shows plan limits.","annotations":{"title":"Manage watchlists","readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":true},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"save_event_feedback","title":"Save event feedback","description":"Record the user's reaction to an event: interested, not_interested (never recommend again), going, saved (alerts on changes), more_like_this or less_like_this (adjusts genre weighting). Only call when the user says so; never infer it.","annotations":{"title":"Save event feedback","readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"search_local_events","title":"Search local events","description":"Find upcoming events (concerts, comedy, theatre, sports, family shows, festivals) near a US ZIP code, a city or coordinates, filtered by dates, categories (Music, Sports, Arts & Theatre, Film, Miscellaneous, or genres such as Jazz or Comedy), keywords, artist, venue and maximum price. Returns events with local date, time zone, venue, published price range (null means not published, never free), ticket link, provenance, freshness and coverage limits. Sources: Ticketmaster, plus SeatGeek when enabled on this server; each event names its source (SeatGeek events say \"Event data from SeatGeek\"; credit it). SeatGeek resale_market prices are listed resale prices, not face value. The same event on both sources is shown once, with the other link under other_listings. Coverage varies by country; say so when results are thin. Never invent events beyond the results.","annotations":{"title":"Search local events","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"},{"name":"track_event_interests","title":"Track event interests","description":"Save a persistent watchlist: a place (US ZIP code, city or coordinates, plus radius_km) and/or followed artists or teams, with optional categories, keywords, venues, maximum price and how many days ahead. AgentStructure then checks on a schedule and records newly observed matching events and changes as alerts. Saving again with the same name replaces it. Returns current matches as a preview.","annotations":{"title":"Track event interests","readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:11:47.412Z"}],"dev.protogrid/trust":{"score":80,"components":{"hygiene":80,"liveness":100,"freshness":100,"provenance":45},"drivers":["+website","+reachable","+uptime-100%","+updated-5d-ago","-no-repository"],"flags":["no-repository"],"blocked":false,"computed_at":"2026-10-20T04:42:43.796Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":89,"label":"new","components":{"auth":null,"hygiene":100,"protocol":75,"stability":null,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"11 of 11 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint","status":"pass","category":"hygiene"},{"id":"tools.token_cost","detail":"about 3,418 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"tool history recorded for 5 of the 7 days needed","status":"na","category":"stability"},{"id":"stability.rug_pull","detail":"tool history recorded for 5 of the 7 days needed","status":"na","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["~protocol.modern"],"flags":[],"tool_count":11,"token_estimate":3418,"tools_hash":"0e86bd1e18fa98b3b12d3a3d24561b83","tools_changed_at":"2026-10-16T21:57:23.908Z","computed_at":"2026-10-20T04:41:29.314Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.agentstructure/local-events","aliases":[],"alias_count":0,"repository_key":null,"owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.agentstructure%2Flocal-events/tools","arguments":{"name":"io.github.agentstructure/local-events"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.agentstructure%2Flocal-events/connection?target=mcpServers","arguments":{"name":"io.github.agentstructure/local-events","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}