Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "search_events"
⟨61 unchanged words⟩ list_upcoming, for one act by name find_performer.All wordsWords in `query`must appear inmatch the title, venue, performers, organizer ortags;tagsdatesat the start of a word, singular or plural, with common synonyms (standup = stand-up, kids = children); by default all of them must match, with match "any" (or | / commas between them) any one does. A word that matches nothing is read as the closest word the events use, and `search` in the result says how the query was read. Dates are local (America/Los_Angeles), YYYY-MM-DD. Results come ⟨44 unchanged words⟩
⟨149 unchanged words⟩ max 100)","type":"integer"},"match":{"description":"all (default): every word in query must match; any: at least one word or |-separated phrase does (results with more matches are no different in order: earliest first); semantic: by meaning (\"something romantic\", \"chill music outdoors\"), from an embedding of query","enum":["all","any","semantic"],"type":"string"},"near":{"description":"Events within radius_km of ⟨174 unchanged words⟩ "Free text, e.g. 'salsa', 'hackathon', 'streetfair'fair'. Separate alternatives with | or commas ('salsa | bachata', 'comedy, improv'); keep a phrase together with quotes. A neighborhood or town after 'in'/'near' ('art openings in SoMa') becomes the place filter.","type":"string"},"radius_km":{ ⟨201 unchanged words⟩
⟨328 unchanged words⟩ required":[],"type":"object"},"search":{"description":"How the query was read","properties":{"match":{"description":"all, any or semantic: how the query's words were combined","type":["string","null"]},"order":{"description":"\"best match first\" for match semantic (otherwise results are earliest first)","type":["string","null"]},"place_from_query":{"description":"A neighborhood or town taken from the query and used as the place filter","type":["string","null"]},"read_as":{"additionalProperties":{"type":"string"},"description":"A word nothing matched, read as the closest word the events use","type":"object"},"terms":{"description":"Each word or phrase searched, with the other forms that counted (synonyms)","items":{"properties":{"also":{"items":{"type":"string"},"type":"array"},"term":{"type":"string"}},"required":[],"type":"object"},"type":"array"}},"required":[],"type":"object"},"shown":{"description":"Events returned (at ⟨10 unchanged words⟩
Changed the definition of "create_custom_calendar", "find_performer", "get_city" and 3 more
⟨13 unchanged words⟩ Returns a link that opens the calendar onSFomoSF Events (open_on_sfomo;open_on_sf_events; give the user this first), subscribe links ⟨31 unchanged words⟩ and no exclude term. Nothing is stored bySFomoSF Events: the interests are encoded in the link ⟨46 unchanged words⟩
⟨50 unchanged words⟩ :"string"},"type":"array"},"checked_live":{"description":"When we last opened the original listing and found it still matches (time, venue, not cancelled); local ISO time. Absent = not checked in the last two days","type":["string","null"]},"
Added "get_city"; changed the definition of "create_custom_calendar", "find_performer", "get_event" and 2 more (5 tools before, 6 now)
⟨88 unchanged words⟩ with search_events, and call this again to adjust. For a one-off answer rather than a standing calendar, use search_events. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
⟨21 unchanged words⟩ default false)","type":"boolean"},"include_seniors":{"description":"Include events only for older adults (senior-center programs, 55+ groups; default false)","type":"boolean"},"interests":{"description":"1-12 interests; each needs ⟨352 unchanged words⟩ ","startup","talks","wellness","wine","business"],"type":"string"}},"type" ⟨23 unchanged words⟩
Added "find_performer" (4 tools before, 5 now)
Find a performer — Find a performer, band, comedian or act in Bay Area by name (words in `query` must all match; case-insensitive) and get their upcoming events, top venues, genres or topics and the platforms that list them. Names come only from public event listings; there are no contact details. Use it for "when is <band> playing" or "who plays at <venue>". Use get_event with an id for one event's full listing.
Changed the definition of "create_custom_calendar", "get_event", "list_upcoming" and 1 more
before
—after
Create a custom calendarbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Create a custom calendar"}before
—Changed the definition of "create_custom_calendar", "list_upcoming" and "search_events"
⟨82 unchanged words⟩ free events","type":"boolean"},"near":{"description":"Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events).","type":"string"},"neighborhood":{"description":"Only events in this San Francisco neighborhood (or town): Bayview, Bernal Heights, Castro, Chinatown, Excelsior, FiDi / South Beach, Glen Park, Golden Gate Park, Haight, Hayes Valley, Ingleside / Oceanview, Inner Richmond, Inner Sunset, Japantown, Lakeshore, Lincoln Park, Lone Mountain / USF, Marina, McLaren Park, Mission, Mission Bay, Nob Hill, Noe Valley, North Beach, Outer Mission, Outer Richmond, Pacific Heights, Portola, Potrero Hill, Presidio, Presidio Heights, Russian Hill, Seacliff, SoMa, Sunset / Parkside, Tenderloin, Treasure Island, Twin Peaks, Visitacion Valley, West of Twin Peaks, Western Addition. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them.","type":"string"},"query":{"description":"Words that must ALL ⟨11 unchanged words⟩ separate interests for alternatives.","type":"string"},"radius_km":{"description":"Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)","type":"number"},"scope":{"description":"Area for
Added "get_event"; changed the definition of "create_custom_calendar", "list_upcoming" and "search_events" (3 tools before, 4 now)
⟨49 unchanged words⟩ city":{"description":"One city outside SF,e.g. 'Oakland'(case-insensitive)","type":"string"},"days":{ ⟨69 unchanged words⟩ ,"times":{"description":"Start times,Pacificlocal: morning 5-12, afternoon 12-17, evening 17-21, ⟨44 unchanged words⟩ ","sports","startup","talks","wellness","wine"],"type":"string"}},"type" ⟨23 unchanged words⟩
Added "create_custom_calendar" (2 tools before, 3 now)
Build a subscribable calendar of upcoming Bay Area events from the user's interests. Returns a link that opens the calendar on SFomo (open_on_sfomo; give the user this first), subscribe links (Google Calendar, Apple/Outlook webcal, plain .ics) and a preview. The calendar refreshes itself every few hours, so new matching events keep appearing. An event is included if it matches ANY interest and no exclude term. Nothing is stored by SFomo: the interests are encoded in the link itself. Interview the user first (see the custom_calendar prompt), check matches with search_events, and call this agai…
Certificate recorded, valid to 2027-01-06
Authorization not required
Unknown → Live
First tool surface recorded: 2 tools (server version 0.1.0)
https://sfomo.ai/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 13 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨85 unchanged words⟩ :"string"},"type":"array"},"checked_live":{"description":"When we last opened the original listing and found it still matches (time, venue, not cancelled); local ISO time. Absent = not checked in the last two days","type":["string","null"]},"city":{"description":"Town or city within ⟨223 unchanged words⟩
Get whatSFomoSF Events covers in Bay Area: how many upcoming ⟨81 unchanged words⟩
⟨52 unchanged words⟩ :"string"},"type":"array"},"checked_live":{"description":"When we last opened the original listing and found it still matches (time, venue, not cancelled); local ISO time. Absent = not checked in the last two days","type":["string","null"]},"city":{"description":"Town or city within ⟨189 unchanged words⟩
⟨81 unchanged words⟩ :"string"},"type":"array"},"checked_live":{"description":"When we last opened the original listing and found it still matches (time, venue, not cancelled); local ISO time. Absent = not checked in the last two days","type":["string","null"]},"city":{"description":"Town or city within ⟨245 unchanged words⟩
⟨62 unchanged words⟩ :"string"},"type":"array"},"checked_live":{"description":"When we last opened the original listing and found it still matches (time, venue, not cancelled); local ISO time. Absent = not checked in the last two days","type":["string","null"]},"city":{"description":"Town or city within ⟨241 unchanged words⟩
before
—after
{"properties":{"attribution":{"type":"string"},"events_next_30_days":{"type":"number"},"events_next_7_days":{"type":"number"},"how_it_works":{"type":["string","null"]},"name":{"type":["string","null"]},"place_note":{"type":["string","null"]},"sample":{"items":{"properties":{"audience":{"description":"kids, teens or seniors when the event is only for them","type":["string","null"]},"biz_formats":{"items":{"type":"string"},"type":"array"},"categories":{"items":{"type":"string"},"type":"array"},"city":{"description":"Town or city within the metro","type":["string","null"]},"date":{"description":"Local start date, YYYY-MM-DD","type":"string"},"distance_km":{"description":"With near: distance from the place","type":"number"},"end":{"type":["string","null"]},"first_seen":{"type":["string","null"]},"free":{"type":"boolean"},"id":{"description":"Stable 12-character id; pass it to get_event","type":"string"},"last_fetched":{"type":["string","null"]},"last_seen":{"type":["string","null"]},"link":{"description":"The original listing; keep it and credit What's Up In","type":["string","null"]},"location":{"type":["string","null"]},"neighborhood":{"type":["string","null"]},"performers":{"items":{"type":"string"},"type":"array"},"possibly_free":{"type":"boolean"},"posted_by_sources":{"type":"number"},"price":{"description":"All-in price as the source states it, \"Free\", or \"See tickets\" when the source doesn't state the all-in total","type":["string","null"]},"recurring":{"description":"weekly, biweekly or monthly when the event is one date of a series","type":["string","null"]},"region":{"type":["string","null"]},"rv":{"type":["string","null"]},"sectors":{"items":{"type":"string"},"type":"array"},"sold_out":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"start":{"description":"Local start, ISO 8601, when the source gives a time","type":["string","null"]},"title":{"type":"string"},"topics":{"items":{"type":"string"},"type":"array"}},"required":["id","title","date"],"type":"object"},"type":"array"},"subscribe":{"description":"Subscribe links: Google Calendar, Apple/Outlook webcal, plain .ics","type":"object"},"total_upcoming":{"type":"number"}},"required":["subscribe"],"type":"object"}⟨53 unchanged words⟩ playing" or "who plays at <venue>".UseFor events by topic or venue rather than by name, use search_events; use get_event with an id for one event's full listing. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
before
—after
{"properties":{"attribution":{"type":"string"},"coverage":{"description":"Coverage and accuracy page","type":["string","null"]},"data_generated":{"description":"When this city's data was last published","type":["string","null"]},"directory_generated":{"type":["string","null"]},"matched":{"type":"number"},"matches":{"items":{"properties":{"events_listed":{"type":"number"},"genres":{"items":{"type":"string"},"type":"array"},"listed_on":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"next_date":{"type":["string","null"]},"next_events":{"items":{"properties":{"audience":{"description":"kids, teens or seniors when the event is only for them","type":["string","null"]},"biz_formats":{"items":{"type":"string"},"type":"array"},"categories":{"items":{"type":"string"},"type":"array"},"city":{"description":"Town or city within the metro","type":["string","null"]},"date":{"description":"Local start date, YYYY-MM-DD","type":"string"},"distance_km":{"description":"With near: distance from the place","type":"number"},"end":{"type":["string","null"]},"first_seen":{"type":["string","null"]},"free":{"type":"boolean"},"id":{"description":"Stable 12-character id; pass it to get_event","type":"string"},"last_fetched":{"type":["string","null"]},"last_seen":{"type":["string","null"]},"link":{"description":"The original listing; keep it and credit What's Up In","type":["string","null"]},"location":{"type":["string","null"]},"neighborhood":{"type":["string","null"]},"performers":{"items":{"type":"string"},"type":"array"},"possibly_free":{"type":"boolean"},"posted_by_sources":{"type":"number"},"price":{"description":"All-in price as the source states it, \"Free\", or \"See tickets\" when the source doesn't state the all-in total","type":["string","null"]},"recurring":{"description":"weekly, biweekly or monthly when the event is one date of a series","type":["string","null"]},"region":{"type":["string","null"]},"rv":{"type":["string","null"]},"sectors":{"items":{"type":"string"},"type":"array"},"sold_out":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"start":{"description":"Local start, ISO 8601, when the source gives a time","type":["string","null"]},"title":{"type":"string"},"topics":{"items":{"type":"string"},"type":"array"}},"required":["id","title","date"],"type":"object"},"type":"array"},"recurring_dates":{"items":{"type":"string"},"type":"array"},"top_venues":{"items":{"type":"string"},"type":"array"},"topics":{"items":{"type":"string"},"type":"array"},"upcoming_events":{"type":"number"}},"required":["name"],"type":"object"},"type":"array"},"query":{"type":["string","null"]}},"required":["matched","matches"],"type":"object"}LookGetupthe full listing for one upcoming event byits stablethe `id`(asthat search_events, list_upcoming or find_performer returned:bytitle,search_eventsdates,/venue,list_upcomingprice (all-in, or "See tickets"),withtheitsoriginal listing (`link`), every sourcelinkthat lists it and first_seen / last_seen / last_fetched dates. Ids stay the same while an event is listed; a past or removed event returns an error, so search again. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
before
—after
{"properties":{"attribution":{"type":"string"},"coverage":{"description":"Coverage and accuracy page","type":["string","null"]},"data_generated":{"description":"When this city's data was last published","type":["string","null"]},"event":{"properties":{"audience":{"description":"kids, teens or seniors when the event is only for them","type":["string","null"]},"biz_formats":{"items":{"type":"string"},"type":"array"},"categories":{"items":{"type":"string"},"type":"array"},"city":{"description":"Town or city within the metro","type":["string","null"]},"date":{"description":"Local start date, YYYY-MM-DD","type":"string"},"distance_km":{"description":"With near: distance from the place","type":"number"},"end":{"type":["string","null"]},"first_seen":{"type":["string","null"]},"free":{"type":"boolean"},"id":{"description":"Stable 12-character id; pass it to get_event","type":"string"},"last_fetched":{"type":["string","null"]},"last_seen":{"type":["string","null"]},"link":{"description":"The original listing; keep it and credit What's Up In","type":["string","null"]},"location":{"type":["string","null"]},"neighborhood":{"type":["string","null"]},"performers":{"items":{"type":"string"},"type":"array"},"possibly_free":{"type":"boolean"},"posted_by_sources":{"type":"number"},"price":{"description":"All-in price as the source states it, \"Free\", or \"See tickets\" when the source doesn't state the all-in total","type":["string","null"]},"recurring":{"description":"weekly, biweekly or monthly when the event is one date of a series","type":["string","null"]},"region":{"type":["string","null"]},"rv":{"type":["string","null"]},"sectors":{"items":{"type":"string"},"type":"array"},"sold_out":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"start":{"description":"Local start, ISO 8601, when the source gives a time","type":["string","null"]},"title":{"type":"string"},"topics":{"items":{"type":"string"},"type":"array"}},"required":["id","title","date"],"type":"object"}},"required":["event"],"type":"object"}ListBrowse the next N days of events,optionally fordayonebycategoryday,topicwithornoplace.search words. `by_day` counts every match perdate;date, and whentheremoreareeventsmorematch than `limit`,the rowsshownare spread evenly across the days (earliest first within each day), sonarroweachwithdaycategoryis represented. Use it for overviews like "what's happening this week"; for search words,topicfree-only, a town or exact from/to dates use search_events, and for one event's details get_event. Optional filters: one category or topic, an audience, and a place: `neighborhood` keeps events inside a named area (radius_km widens it past the boundary), `near` ranks events by distance from a place orpage"lat,lon" within radius_km. No sign-in; each client gets 30 calls asingleminutedayandwith2,500search_eventseventfrom/to.rows an hour.
{"properties":{"audience":{"description":"Who the event is only for: kids, teens, seniors (older adults: senior-center programs, 55+ groups), or general (none of those). Default: no filter. Caregiver/aging talks for families and professionals are general.","enum":["general","kids","teens","seniors"],"type":"string"},"biz_format":{"description":"Kind of work event: referral_group (BNI etc.), chamber, mixer, breakfast_lunch, workshop_training, conference_expo, career_fair, ce_credits, pitch_demo, committee_meeting","enum":["referral_group","chamber","mixer","breakfast_lunch","workshop_training","conference_expo","career_fair","ce_credits","pitch_demo","committee_meeting"],"type":"string"},"category":{"enum":["ai","dance" ⟨223 unchanged words⟩ default 0)","type":"number"},"sector":{"description":"Industry a work event is for (only events with a work topic carry one; general networking has none): e.g. senior_care, healthcare, real_estate, finance_insurance, legal, tech","enum":["senior_care","healthcare","life_sciences","real_estate","finance_insurance","legal","tech","defense_government","trades_construction","hospitality_food","retail_ecommerce","marketing_media","nonprofit","energy_climate","hr_workforce","creative_design"],"type":"string"},"topic":{"enum":["arts","books","civic ⟨17 unchanged words⟩ ","startup","talks","wellness","wine","business"],"type":"string"}},"type":"object"}
before
—after
{"properties":{"attribution":{"type":"string"},"by_day":{"additionalProperties":{"type":"number"},"description":"Matches per date (YYYY-MM-DD), all of them, not just the rows shown","type":"object"},"count":{"description":"Events that matched in total","type":"number"},"coverage":{"description":"Coverage and accuracy page","type":["string","null"]},"data_generated":{"description":"When this city's data was last published","type":["string","null"]},"events":{"items":{"properties":{"audience":{"description":"kids, teens or seniors when the event is only for them","type":["string","null"]},"biz_formats":{"items":{"type":"string"},"type":"array"},"categories":{"items":{"type":"string"},"type":"array"},"city":{"description":"Town or city within the metro","type":["string","null"]},"date":{"description":"Local start date, YYYY-MM-DD","type":"string"},"distance_km":{"description":"With near: distance from the place","type":"number"},"end":{"type":["string","null"]},"first_seen":{"type":["string","null"]},"free":{"type":"boolean"},"id":{"description":"Stable 12-character id; pass it to get_event","type":"string"},"last_fetched":{"type":["string","null"]},"last_seen":{"type":["string","null"]},"link":{"description":"The original listing; keep it and credit What's Up In","type":["string","null"]},"location":{"type":["string","null"]},"neighborhood":{"type":["string","null"]},"performers":{"items":{"type":"string"},"type":"array"},"possibly_free":{"type":"boolean"},"posted_by_sources":{"type":"number"},"price":{"description":"All-in price as the source states it, \"Free\", or \"See tickets\" when the source doesn't state the all-in total","type":["string","null"]},"recurring":{"description":"weekly, biweekly or monthly when the event is one date of a series","type":["string","null"]},"region":{"type":["string","null"]},"rv":{"type":["string","null"]},"sectors":{"items":{"type":"string"},"type":"array"},"sold_out":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"start":{"description":"Local start, ISO 8601, when the source gives a time","type":["string","null"]},"title":{"type":"string"},"topics":{"items":{"type":"string"},"type":"array"}},"required":["id","title","date"],"type":"object"},"type":"array"},"note":{"type":["string","null"]},"place":{"properties":{"center":{"items":{"type":"number"},"type":"array"},"kind":{"type":["string","null"]},"matched":{"type":["string","null"]},"note":{"type":["string","null"]},"radius_km":{"type":["number","null"]},"unplaced_events":{"description":"Events left out because their venue isn't mapped","type":"number"}},"required":[],"type":"object"},"shown":{"description":"Events returned (at most limit)","type":"number"}},"required":["count","shown","events"],"type":"object"}Search every upcoming Bay Areaeventsevent(by words, dates, price, topic or place: dance, AI, music, arts, food, sports, comedy,fun,exercise,volunteervolunteering, dating, business and professional networking. Use it whenever the question has search words, a date range ("this weekend": from/to)., free-only, a town or an area; for a day-by-day overview of the next few days with no search words use list_upcoming, for one act by name find_performer. All words in `query` mustmatchappeartitle/location/performers/organizer/tags.inDatesthe title, venue, performers, organizer or tags; dates are local (America/Los_Angeles), YYYY-MM-DD. Results come earliest first, at most `limit`; `count` says how many matched in total, so narrow the search rather than paging. get_city lists valid neighborhood, town, category and topic values. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{"properties":{"audience":{"description":"Who the event is only for: kids, teens, seniors (older adults: senior-center programs, 55+ groups), or general (none of those). Default: no filter. Caregiver/aging talks for families and professionals are general.","enum":["general","kids","teens","seniors"],"type":"string"},"biz_format":{"description":"Kind of work event: referral_group (BNI etc.), chamber, mixer, breakfast_lunch, workshop_training, conference_expo, career_fair, ce_credits, pitch_demo, committee_meeting","enum":["referral_group","chamber","mixer","breakfast_lunch","workshop_training","conference_expo","career_fair","ce_credits","pitch_demo","committee_meeting"],"type":"string"},"category":{"description":"Scored category (the ⟨347 unchanged words⟩ lists one)","type":"string"},"sector":{"description":"Industry a work event is for (only events with a work topic carry one; general networking has none): e.g. senior_care, healthcare, real_estate, finance_insurance, legal, tech","enum":["senior_care","healthcare","life_sciences","real_estate","finance_insurance","legal","tech","defense_government","trades_construction","hospitality_food","retail_ecommerce","marketing_media","nonprofit","energy_climate","hr_workforce","creative_design"],"type":"string"},"to":{"description":"Latest date (default: ⟨16 unchanged words⟩ food_drink, sports, talks, classes, markets,outdoorsoutdoors; business = chamber mixers, referral groups, small-business workshops, trade shows, career fairs)","enum":["arts","books", ⟨18 unchanged words⟩ ","startup","talks","wellness","wine","business"],"type":"string"}},"type":"object"}
before
—after
{"properties":{"attribution":{"type":"string"},"count":{"description":"Events that matched in total","type":"number"},"coverage":{"description":"Coverage and accuracy page","type":["string","null"]},"data_generated":{"description":"When this city's data was last published","type":["string","null"]},"events":{"items":{"properties":{"audience":{"description":"kids, teens or seniors when the event is only for them","type":["string","null"]},"biz_formats":{"items":{"type":"string"},"type":"array"},"categories":{"items":{"type":"string"},"type":"array"},"city":{"description":"Town or city within the metro","type":["string","null"]},"date":{"description":"Local start date, YYYY-MM-DD","type":"string"},"distance_km":{"description":"With near: distance from the place","type":"number"},"end":{"type":["string","null"]},"first_seen":{"type":["string","null"]},"free":{"type":"boolean"},"id":{"description":"Stable 12-character id; pass it to get_event","type":"string"},"last_fetched":{"type":["string","null"]},"last_seen":{"type":["string","null"]},"link":{"description":"The original listing; keep it and credit What's Up In","type":["string","null"]},"location":{"type":["string","null"]},"neighborhood":{"type":["string","null"]},"performers":{"items":{"type":"string"},"type":"array"},"possibly_free":{"type":"boolean"},"posted_by_sources":{"type":"number"},"price":{"description":"All-in price as the source states it, \"Free\", or \"See tickets\" when the source doesn't state the all-in total","type":["string","null"]},"recurring":{"description":"weekly, biweekly or monthly when the event is one date of a series","type":["string","null"]},"region":{"type":["string","null"]},"rv":{"type":["string","null"]},"sectors":{"items":{"type":"string"},"type":"array"},"sold_out":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"start":{"description":"Local start, ISO 8601, when the source gives a time","type":["string","null"]},"title":{"type":"string"},"topics":{"items":{"type":"string"},"type":"array"}},"required":["id","title","date"],"type":"object"},"type":"array"},"place":{"properties":{"center":{"items":{"type":"number"},"type":"array"},"kind":{"type":["string","null"]},"matched":{"type":["string","null"]},"note":{"type":["string","null"]},"radius_km":{"type":["number","null"]},"unplaced_events":{"description":"Events left out because their venue isn't mapped","type":"number"}},"required":[],"type":"object"},"shown":{"description":"Events returned (at most limit)","type":"number"}},"required":["count","shown","events"],"type":"object"}Get city coverage — Get what SFomo covers in Bay Area: how many upcoming events it lists and for which dates, when the data was last published, how many sources feed it, and upcoming events per category, topic, neighborhood and town. Call it before searching to pick valid category, topic, neighborhood and town values, or to tell a user what this site covers; it returns counts only, no events (use search_events or list_upcoming for those). Takes no arguments. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
after
Get one eventbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Get one event"}before
—after
List upcoming eventsList the next N days of events, optionally for onecategory.category, topic or place. `by_day` counts every match per date; when there are more than `limit`, the rows shown are spread across the days (earliest first within each day), so narrow with category, topic or place, or page a single day with search_events from/to.
⟨19 unchanged words⟩ max 60)","type":"integer"},"limit":{"description":"Max rows (default 50, max 100)","type":"integer"},"near":{"description":"Events within radius_km of ⟨223 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"List upcoming events"}before
—after
Search eventsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Search events"}⟨19 unchanged words⟩ max 60)","type":"integer"},"near":{"description":"Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events).","type":"string"},"neighborhood":{"description":"Only events in this San Francisco neighborhood (or town): Bayview, Bernal Heights, Castro, Chinatown, Excelsior, FiDi / South Beach, Glen Park, Golden Gate Park, Haight, Hayes Valley, Ingleside / Oceanview, Inner Richmond, Inner Sunset, Japantown, Lakeshore, Lincoln Park, Lone Mountain / USF, Marina, McLaren Park, Mission, Mission Bay, Nob Hill, Noe Valley, North Beach, Outer Mission, Outer Richmond, Pacific Heights, Portola, Potrero Hill, Presidio, Presidio Heights, Russian Hill, Seacliff, SoMa, Sunset / Parkside, Tenderloin, Treasure Island, Twin Peaks, Visitacion Valley, West of Twin Peaks, Western Addition. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them.","type":"string"},"radius_km":{"description":"Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)","type":"number"},"topic":{"enum":["arts","books" ⟨26 unchanged words⟩
⟨77 unchanged words⟩ max 100)","type":"integer"},"near":{"description":"Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events).","type":"string"},"neighborhood":{"description":"Only events in this San Francisco neighborhood (or town): Bayview, Bernal Heights, Castro, Chinatown, Excelsior, FiDi / South Beach, Glen Park, Golden Gate Park, Haight, Hayes Valley, Ingleside / Oceanview, Inner Richmond, Inner Sunset, Japantown, Lakeshore, Lincoln Park, Lone Mountain / USF, Marina, McLaren Park, Mission, Mission Bay, Nob Hill, Noe Valley, North Beach, Outer Mission, Outer Richmond, Pacific Heights, Portola, Potrero Hill, Presidio, Presidio Heights, Russian Hill, Seacliff, SoMa, Sunset / Parkside, Tenderloin, Treasure Island, Twin Peaks, Visitacion Valley, West of Twin Peaks, Western Addition. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them.","type":"string"},"query":{"description":"Free text, e.g. 'salsa', 'hackathon', 'street fair'","type":"string"},"radius_km":{"description":"Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)","type":"number"},"scope":{"description":"Geography: ⟨119 unchanged words⟩
⟨44 unchanged words⟩ ,"sports","startup","talks","wellness","wine"],"type":"string"}},"type":"object"}
⟨10 unchanged words⟩ sports, comedy, fun, exercise, volunteer, dating, SF Tech Week). All words in `query` must matchtitle/location/organizer/tags.title/location/performers/organizer/tags. Dates arePacificlocal (America/Los_Angeles), YYYY-MM-DD.
⟨24 unchanged words⟩ "string"},"city":{"description":"Cityoutside SF, e.g.'Oakland','San'Berkeley',Francisco''SanorJose'another town in the Bay Area (case-insensitive)","type":"string"},"free ⟨50 unchanged words⟩ "},"scope":{"description":"Geography: one region (sf = SF,onepeninsulaBay=AreaPeninsula,regionsouth_bay = South Bay,Santaeast_bayCruz=CountyEast Bay,thenorth_baywhole= North Bay,Areasanta_cruz(excludes= Santa Cruz, beyond = Farther), bay_area (sf, peninsula, south_bay, east_bay, north_bay), or any (default)","enum":["sf","peninsula","south_bay","east_bay","north_bay","santa_cruz","beyond","bay_area","any"],"type":"string"},"season":{"description":"Seasonal series tag, e.g.'techweek26''techweek27'for(onlySFwhenTechtheWeeksite2026lists one)","type":"string"},"to":{ ⟨46 unchanged words⟩ ","sports","startup","talks","wellness","wine"],"type":"string"}},"type":"object"}
Look up one upcoming event by its stable `id` (as returned by search_events / list_upcoming), with its source link and first_seen / last_seen / last_fetched dates.