Skip to content

Local Events Tracker

by agentstructure · remote · no sign-in to list tools · v1.0.0 · published by GitHub user agentstructure

Search local events, follow artists and interests, get weekend recommendations and change alerts

Deletes · 2Changes · 7

11 tools: 2 can delete or cancel things, 7 change things and 2 only read.

Scanned Oct 21, 2026

5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http local-events https://localeventstracker.com/mcp

Findings

Matches of fixed checks, with the text they matched.

5 warn
  • The server marks "search_local_events" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "search_local_events" says "search": a word for reading.

    What this check looks for
  • The description contains "any other tool", wording about other tools or servers.

    Matched text

    description: "...details for one event by event_id (from any other tool): venue, performers, price range if pub..."

    What this check looks for
  • The server marks "get_event_details" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_event_details" says "get": a word for reading.

    What this check looks for
  • The server marks "list_local_event_alerts" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "list_local_event_alerts" says "list": a word for reading.

    What this check looks for
  • The server marks "get_weekend_recommendations" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_weekend_recommendations" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Deletes or cancels 2Claude Code: deny
  • manage_event_profileView 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 (ci…No findings

    Why it is in this group

    • The description's first verb is "view": a word for reading.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 the server declares

    • title: Manage event profile
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • manage_event_watchlistList, pause, resume, update or delete the user's watchlists by name.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    List, pause, resume, update or delete the user's watchlists by name. Also shows plan limits.

    Annotations the server declares

    • title: Manage watchlists
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Changes things 7Claude Code: ask
  • get_event_detailsFull 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 hi…2 findings

    Why it is in this group

    • The name "get_event_details" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The description contains "any other tool", wording about other tools or servers.

      Matched text

      description: "...details for one event by event_id (from any other tool): venue, performers, price range if pub..."

      What this check looks for
    • Warn

      The server marks "get_event_details" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_event_details" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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 the server declares

    • title: Get event details
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • get_weekend_recommendationsRank 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 tim…1 finding

    Why it is in this group

    • The name "get_weekend_recommendations" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_weekend_recommendations" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_weekend_recommendations" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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 the server declares

    • title: Weekend recommendations
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • list_local_event_alertsReturn 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…1 finding

    Why it is in this group

    • The name "list_local_event_alerts" says "list": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "list_local_event_alerts" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "list_local_event_alerts" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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 the server declares

    • title: List new event alerts
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • manage_alert_deliveryChoose 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…No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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 the server declares

    • title: Email, phone and text alerts
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • save_event_feedbackRecord 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 weight…No findings

    Why it is in this group

    • The name "save_event_feedback" says "save": a word for a change.
    Description, as the server wrote it
    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 the server declares

    • title: Save event feedback
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • search_local_eventsFind 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 & Th…1 finding

    Why it is in this group

    • The name "search_local_events" says "search": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "search_local_events" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "search_local_events" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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 the server declares

    • title: Search local events
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • track_event_interestsSave 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 …No findings

    Why it is in this group

    • The description's first verb is "save": a word for a change.
    Description, as the server wrote it
    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 the server declares

    • title: Track event interests
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 2Claude Code: allow
  • get_event_changesDetected changes with previous and current values, for one event_id or for all events the user saved, is going to or marked interested.No findings

    Why it is in this group

    • The name "get_event_changes" says "get": a word for reading.
    Description, as the server wrote it
    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 the server declares

    • title: Get event changes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_followed_artistsList the performers and teams this user follows.No findings

    Why it is in this group

    • The name "get_followed_artists" says "get": a word for reading.
    Description, as the server wrote it
    List the performers and teams this user follows.

    Annotations the server declares

    • title: Get followed artists
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http local-events https://localeventstracker.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__local-events__get_event_changes",
      "mcp__local-events__get_followed_artists"
    ],
    "ask": [
      "mcp__local-events__search_local_events",
      "mcp__local-events__get_event_details",
      "mcp__local-events__track_event_interests",
      "mcp__local-events__list_local_event_alerts",
      "mcp__local-events__get_weekend_recommendations",
      "mcp__local-events__save_event_feedback",
      "mcp__local-events__manage_alert_delivery"
    ],
    "deny": [
      "mcp__local-events__manage_event_watchlist",
      "mcp__local-events__manage_event_profile"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as local-events. Review it before you use it.