Read and act on your own Dynamite Circle membership data via the public DC Member API.
healthy
status
85
tools exposed
707ms
connect latency
97e99ee81a1f
schema fingerprint
Tools (85)
alerts
GET /alerts — List your alerts
Returns the user's alerts, ordered by creation date (newest first). Maximum 50 results.
alerts_create
POST /alerts — Create an alert
Create a new alert. The system will search for matching content and deliver digests on the configured frequency. Maximum 10 active alerts per user.
⚠️ WRITE operation: this mutates your DC account data.
alerts_by_id_update
PATCH /alerts/:alertID — Update an alert
Update one or more fields on an existing alert. Only provide the fields you want to change.
⚠️ WRITE operation: this mutates your DC account data.
alerts_by_id_delete
DELETE /alerts/:alertID — Deactivate an alert
Soft-delete an alert by setting `active: false`. The alert's history is preserved for past digests. Use `PATCH /alerts/:alertID` with `active: true` to reactivate.
⚠️ WRITE operation: this mutates your DC account data.
announcements
GET /announcements — List recent announcements
Returns the most recent announcements from DC's broadcast channels — official updates from the DC team and chapter staff (DC, DCBKK, DCMEX, DC BLACK, etc.). Same content you see in the app's announcements channels, in a flat newest-first feed.
Visibil
announcements_latest
GET /announcements/latest — Latest announcement per channel (quick overview)
Returns the **single most recent announcement from each visible channel** — a one-shot overview rather than a paged feed. Useful as a "what's new across DC?" quick check before drilling into the full feed via `GET /announc
trips
GET /trips — List your trips
Returns your upcoming trips by default. Add `?past=true` to include past trips.
**For "who should I meet on this trip?"** fetch `GET /trips/:tripID` (or the discovery-only `GET /trips/:tripID/discovery`) — both return the ranked top-10 DCers + AI-written summaries + th
trips_create
POST /trips — Create a trip
Create a new trip. Provide exactly one of `placeID` or `eventID` — the server resolves the location (city, country, country code) automatically. Use `GET /places/search` to find a placeID by city/country name first, or pass an `eventID` from `/events` to create a trip to
trip_update
PATCH /trips/:tripID — Update a trip
Update one or more fields on an existing trip. Only include the fields you want to change. To change destination, provide either `placeID` or `eventID` and the full location will be re-resolved.
**Trip points**: passing `points` replaces the entire array (it's
trip_delete
DELETE /trips/:tripID — Delete a trip
Permanently delete one of your trips. Removes the trip doc and its linked chat room (`trip.roomID`). The destination chapter's upcoming-trip count is recomputed in the background. **Owner-only** — you can only delete trips you created. The action is irreversibl
trips_overlaps
GET /trips/overlaps — Find overlapping trips
Find other members whose trips overlap with yours by city + date range. **This is a narrow date-window match, NOT the AI-ranked discovery pool.** For the full set of DCers you could meet on a trip — including locals in town and AI-written "why you should
trip
GET /trips/:tripID — Get a single trip
Single-trip read with the full payload. **This is the canonical endpoint for "who should I meet on this trip?"** — the response embeds a complete `discovery` block (ranked top-10 picks with AI summaries, the full pool of locals + visitors, events in town, and
trip_refresh_create
POST /trips/:tripID/refresh — Trigger a trip refresh
Owner-only sync trigger. Enqueues a deduped background job that recomputes the trip's discovery (overlapping people, events, AI blurbs). Spammy reloads coalesce. Returns 202 Accepted immediately; the cached `discovery` block on the trip doc updat
trip_discovery
GET /trips/:tripID/discovery — Get the discovery block for a trip
Discovery-only read for a trip. Returns the same `discovery` block as `GET /trips/:tripID` (people, fullPool, whyToMeet, events, overlappingTrips) without the trip body. Useful for callers that just want "who should I meet on this tr
chapters
GET /chapters — List chapters
List all DC chapters (city-based community hubs), sorted by member count. Each chapter has a Google Place ID — pass it to `POST /trips` to create a trip to that chapter's city.
**See also:** For a chapter by city or country name (`q='Lisbon'`, `q='Thailand'`), `POST /
chapter
GET /chapters/:cityID — Get a single chapter
Get full details for a single chapter, including up to 100 home-chapter members and the list of DCers currently visiting via active trips.
- `members` — DCers whose **home chapter** is this city (up to 100).
- `currentVisitors` — DCers with an active tr
events
GET /events — List upcoming events
Returns upcoming DC events, sorted by date. Add `?past=true` to include past events.
**See also:** For events by name or topic (`q='productivity'`, `q='DCBKK 2026'`), `POST /search/events` searches title + description directly — faster than paginating this date-s
event
GET /events/:eventID — Get event details
Returns full details for a specific event, including your ticket status.
event_attendees
GET /events/:eventID/attendees — List event attendees
List the confirmed attendees of an event — DCers holding a `valid` paid ticket OR a `valid`/`maybe` RSVP status. Refunded/canceled tickets are excluded. Hidden and guest profiles are filtered out.
Profiles returned use the same shape as the res
event_rsvp
POST /events/:eventID/rsvp — RSVP to a free event
RSVP to an event that uses free RSVP (not ticketed). Only works for events with rsvpEnabled: true.
⚠️ WRITE operation: this mutates your DC account data.
event_schedule
GET /events/:eventID/schedule — Get event schedule
Returns the full schedule (sessions) for an event, sorted chronologically.
**Access:** any active DCer who can see the event can view its public schedule. Personal agenda actions still require a valid ticket.
**Time-zone handling:** session `star
event_agenda
GET /events/:eventID/agenda — Get your personal agenda for an event
Returns the sessions and meetups **YOU** have on your personal agenda for an event:
- Sessions you bookmarked from the schedule.
- Meetups you RSVPd to.
**Access:** caller must hold a valid ticket to the event.
Use `POST /events
event_agenda_get
GET /events/:eventID/agenda/:userID — Get another attendee's agenda for an event
Returns another attendee's personal agenda for an event — the sessions they bookmarked + meetups they RSVPd to. Use this so an AI agent can plan together with another DCer (find a coffee window, suggest sessions to ove
event_schedule_attendees
GET /events/:eventID/schedule/:sessionID/attendees — List session attendees (people who bookmarked it)
Returns the list of attendees who have **bookmarked** a specific session into their agenda. Same profile shape as `/events/:eventID/attendees`.
**Access:** any active DCer who can see the event.
event_meetups
GET /events/:eventID/meetups — List event meetups
Returns the approved member-organized meetups for an event, sorted chronologically. Only approved meetups are returned.
**Access:** any active DCer who can see the event can view approved meetup listings + attendee lists. Only RSVPing to a meetup (
event_meetup_attendees
GET /events/:eventID/meetups/:meetupID/attendees — List meetup attendees
Returns the list of attendees who have RSVPd to a specific meetup. Same profile shape as `/events/:eventID/attendees`.
**Access:** any active DCer who can see the event.
event_sponsors
GET /events/:eventID/sponsors — List event sponsors
Returns the sponsors for an event, ordered by tier (primary → supporting) then display order. Deleted sponsors are filtered out.
**Access:** any active DCer who can see the event — sponsors are public.
event_schedule_bookmark
POST /events/:eventID/schedule/:sessionID/bookmark — Bookmark / unbookmark a session
Add or remove a session from your personal agenda — this is the API equivalent of the bookmark/star icon on a session card in the DC app.
Requires a valid ticket for the event. Counter `rsvpCount` on the session d
event_meetup_rsvp
POST /events/:eventID/meetups/:meetupID/rsvp — RSVP to / leave a meetup
Join or leave a meetup. Requires a valid ticket for the event. The meetup's `rsvpCount` is updated atomically and idempotently.
When the meetup has a linked chat channel, this mirrors the DC app side effects too: joining subsc
event_agendas
GET /events/:eventID/agendas — Get multiple attendees' agendas in one call
Returns the agendas (bookmarked sessions + meetup RSVPs) for **multiple** attendees in a single call. Use when an AI agent needs to plan around several DCers at once — comparing schedules, finding shared sessions, building a
event_free_slots_create
POST /events/:eventID/free-slots — Find shared free time slots across attendees
Computes shared **free slots** across a set of event attendees — the time windows where they're NOT in a bookmarked session or meetup. Use to find a coffee window with one DCer, or a junto-style lunch slot for a group.
follows_profiles
GET /follows/profiles — List followed DCers
List the DCers you are currently following. Returns the same mini-profile shape used by every other list endpoint, so each entry roundtrips cleanly with `GET /profile/:userID` or `POST /follows/profiles/:userID`. Cap: 150 follows; the response `cap` echoe
follows_profiles_by_id_create
POST /follows/profiles/:userID — Follow a DCer
Follow a DCer. Idempotent — calling it twice with the same userID is safe (no-op the second time). Target must exist and be publicly visible (hidden + guest profiles are refused with 404). You cannot follow yourself.
When the cap of 150 is reached, re
follows_profiles_by_id_delete
DELETE /follows/profiles/:userID — Unfollow a DCer
Unfollow a DCer. Idempotent — unfollowing someone you weren't following is a no-op (still returns 200 with the updated `count`). Use it whenever you want to stop seeing a DCer in your `/locator/digest` favoritePeople section.
⚠️ WRITE operation: t
follows_chapters
GET /follows/chapters — List followed chapters
List the DC chapters (city hubs) you are currently following. Each entry is a mini-chapter with the chapter's Google Place ID — useful for creating trips or surfacing activity in that city. Cap: 50 follows.
This list also drives the `/locator/digest`
follows_chapter_create
POST /follows/chapters/:cityID — Follow a chapter
Follow a DC chapter (city hub). Idempotent. Target must exist in the chapters list (discover via `GET /chapters`). Cap 50 — hitting it returns `409 follow_limit_reached`.
This list also drives the `/locator/digest` `favoritePeople` and `favoriteCit
follows_chapter_delete
DELETE /follows/chapters/:cityID — Unfollow a chapter
Unfollow a DC chapter. Idempotent — unfollowing a chapter you weren't following is a no-op.
⚠️ WRITE operation: this mutates your DC account data.
inbox_unread
GET /inbox/unread — Get unread counts
Returns your total unread message count and per-room breakdown. Only includes rooms you are subscribed to or are a member of.
interests
GET /interests — Get your interests config
Returns the user's interests configuration — the set of tags they have subscribed or unsubscribed from. Returns an empty `{ tags: {}, createdAt: null, updatedAt: null }` shape when no config exists yet.
interests_create
POST /interests — Subscribe or unsubscribe from interests
Subscribe or unsubscribe from interest tags in a single call. Pass a `updates` map of `{ slug: { subscribed: boolean } }` with up to 20 entries. Slugs that are not in the known interest definitions are silently ignored at the name-lookup ste
invites
GET /invites — List your invites
List the referral invites credited to you. Two source types appear:
- **`manual`** — invites you sent via `POST /invites` (the explicit email-an-invitee flow).
- **`permaCode`** — applicants who signed up through your shareable permacode link (`GET /invites/permacod
invites_create
POST /invites — Send an invite
Send a referral invite to someone. The server queues a templated email (delivered via a background task) that points the invitee at the apply flow with you pre-credited as the referrer. The created invite shows up in `GET /invites` immediately at status `new`.
⚠️ WRI
invites_permacode
GET /invites/permacode — Get your permacode
Returns your permanent referral code. Share this link to let people apply with your referral.
calendar
GET /calendar — Get your iCalendar feed URL + settings
Returns your iCalendar feed URLs and the toggles that control which event categories the feed includes.
**Three URLs are returned:**
- `httpsURL` — paste into any calendar app that accepts an HTTPS subscription
- `webcalURL` — same URL with th
calendar_update
PATCH /calendar — Update calendar feed settings
Update any subset of your calendar feed toggles. Send only the toggles you want to change — omitted fields are left untouched. Returns `{ updated: true }` on success; re-fetch `GET /calendar` if you need the full toggle set + feed URLs (the URLs thems
limits
GET /limits — Get your effective rate limits + current usage
Returns the effective per-minute and per-day rate limits for your API key, **plus current usage** (how many calls you have already made in the current minute and day windows, when each window resets, and how many calls you have left). Lim
locator_digest
GET /locator/digest — Get locator digest
Returns your weekly locator digest — the same data that powers the Friday locator email.
Use this to surface trip/event activity around the people and cities a member already follows.
The response is composed of four independent sections; pass `?sections=<c
locator_settings
GET /locator/settings — Get your Friday locator email settings
Returns the four toggles that control the Friday locator email digest. The digest is a weekly outbound email surfacing new events, tickets, and trips relevant to you.
locator_settings_update
PATCH /locator/settings — Update your Friday locator email settings
Update any subset of the Friday locator email toggles. Send only the fields you want to change.
⚠️ WRITE operation: this mutates your DC account data.
membership
GET /membership — Get your membership state
Returns your full membership state: role, lifecycle dates, trial status, billing/subscription details, and a link to the Stripe Customer Portal where you can manage your subscription, payment methods, and download invoices.
membership_invoices
GET /membership/invoices — List your Stripe invoices
Returns your Stripe invoices, newest first. Each entry includes a hosted-invoice URL and a PDF link, both safe to share — perfect for self-serve receipts. Returns an empty array for legacy paypal/chargify members or members with no Stripe custome
notifications
GET /notifications — Get your notification preferences
Returns your push + email preferences per notification category. Defaults are applied for any preference you have never explicitly set. Email is `null` for `reaction` / `myReaction` because email is not supported for those categories.
For the
notifications_update
PATCH /notifications — Update your notification preferences
Update any subset of your notification preferences. Send only the categories/channels you want to change — the rest stay as-is. Email is rejected for `reaction` / `myReaction` (not supported).
⚠️ WRITE operation: this mutates your DC acco
places_search
GET /places/search — Search Google Places
Search for places by name. Use this to look up a Google Place ID before creating a trip or referencing a venue.
Results include a `type` field that classifies each match as `city` (a chapter-level locality usable for trips) or `venue` (a specific establish
place
GET /places/:placeID — Get place details
Fetch full details for one Google Place ID. Useful for verifying a placeID before sending it to `POST /trips` (which only accepts `type: "city"` placeIDs and rejects venues with a 400). Same shape as a single entry from `GET /places/search`.
profile_match_create
POST /profile-match — Match DCers from a description (or recommend if omitted)
**AI-powered profile matchmaker.** Match DCers against a natural-language description, or — when `query` is omitted — recommend DCers based on your own profile (chapter, industry, expertise, goals).
Returns ranked resul
profile
GET /profile — Get your own profile
Returns your own full profile — every field the in-app profile editor surfaces to you, plus tier-derived state. Same shape regardless of tier (DC and DC BLACK members get identical own-profile payloads). Use `PATCH /profile` to update editable fields.
profile_update
PATCH /profile — Update profile fields
Update allowed profile fields. Only the fields you include will be changed. Location, photo, and gender cannot be updated via API.
⚠️ WRITE operation: this mutates your DC account data.
report_issue_create
POST /report-issue — Report an issue or feedback
Submit a bug report, feedback, or question to the DC team. Optionally include a base64-encoded screenshot (PNG, JPEG, or WebP, up to 4 MB raw).
**Privacy note:** Screenshots and report text are sent unredacted to the DC team. Don't include passwords
rooms
GET /rooms — List your subscribed rooms
Returns every room you are subscribed to (DMs, group DMs, channels you follow, discussions, activities, event rooms), sorted by `lastActivityAt` descending. Cursor-paginated.
To filter by type use `GET /rooms/inbox/:type` (e.g. `/rooms/inbox/dm` for DMs only
rooms_inbox
GET /rooms/inbox/:type — List your rooms by type
Returns your subscribed rooms filtered to a single type. Same shape as `GET /rooms` but scoped — e.g. `/rooms/inbox/dm` returns DMs only, `/rooms/inbox/group` returns group DMs.
rooms_browse
GET /rooms/browse/:type — Browse public channels by type
Browse publicly-joinable rooms of a given type that you are NOT yet subscribed to. The same surface the in-app Browse Channels modal shows. DC BLACK rooms are filtered out for DC tier members.
rooms_by_id
GET /rooms/:roomID — Get a single room
Get a single room's metadata + its latest daily AND weekly AI summaries (when they exist). **Access:** members and subscribers of the room, plus any DCer for browsable public channels/discussions/quick-questions. Private rooms, DMs, group DMs, and event/city r
rooms_summary
GET /rooms/:roomID/summary/:type — Get the latest daily or weekly summary
Get the latest single summary of a given type for a room.
**Type is required** — daily and weekly summaries cover different windows and live in separate slots. Pass the type you want as a path segment.
For history (multiple
rooms_summaries
GET /rooms/:roomID/summaries/:type — List past daily or weekly summaries
List past summaries of a given type for a room, newest first. Cursor-paginated — pass `cursor` from the previous response to fetch the next (older) page.
Each summary covers a non-overlapping window (one per day for daily, on
rooms_messages
GET /rooms/:roomID/messages — List messages in a room
List messages in a room you are a member of. **Read-only — no write side effects, no unread-state mutation, no reactions/posts/edits.** Cursor-paginated newest-first.
**Access:** strict — the caller must be a subscribed member of the room (same
rooms_subscribe_create
POST /rooms/:roomID/subscribe — Subscribe to a room
Subscribe to a public channel, discussion, quick-question room, or event room. The caller is added to the room's `seen` subcollection with `flags.isSubscribed: true` and starts receiving its updates in their inbox.
**Access:** the room must be en
rooms_unsubscribe_create
POST /rooms/:roomID/unsubscribe — Unsubscribe from a room
Unsubscribe from a public channel, discussion, quick-question, or event room. The caller's `seen` doc is updated to `flags.isSubscribed: false`, the badge count is cleared, and the room drops out of the inbox sidebar.
**Access:** the caller
rooms_mute_create
POST /rooms/:roomID/mute — Mute a room
Mute notifications for a room. Sets `mutedUntilAt` to a far-future timestamp (no expiry) — the room stays muted until explicitly unmuted. The room still appears in the inbox; only notifications are suppressed.
**Access:** the caller must be a member/subscribe
rooms_unmute_create
POST /rooms/:roomID/unmute — Unmute a room
Unmute a previously-muted room. Clears `mutedUntilAt`. **Access:** the caller must be a member/subscriber of the room. Idempotent.
⚠️ WRITE operation: this mutates your DC account data.
rooms_archive_create
POST /rooms/:roomID/archive — Archive a room
Archive a room — hides it from the inbox sidebar without unsubscribing. Use `unarchive` to bring it back. **Access:** the caller must be a member/subscriber. Idempotent.
⚠️ WRITE operation: this mutates your DC account data.
rooms_unarchive_create
POST /rooms/:roomID/unarchive — Unarchive a room
Unarchive a previously-archived room. Restores it to the inbox sidebar. **Access:** the caller must be a member/subscriber. Idempotent.
⚠️ WRITE operation: this mutates your DC account data.
rooms_pin_create
POST /rooms/:roomID/pin — Pin a room
Pin a room to the top of the inbox. For subscription-type rooms the caller is auto-subscribed if not already (mirrors the in-app behavior — you can't pin what you don't follow). **Access:** the caller must already have an interaction history with the room (DMs a
rooms_unpin_create
POST /rooms/:roomID/unpin — Unpin a room
Unpin a previously-pinned room. Returns it to its normal place in the inbox sort order. **Access:** the caller must be a member/subscriber. Idempotent.
⚠️ WRITE operation: this mutates your DC account data.
search
GET /search — Cross-resource omni-search
Cross-resource search across profiles, rooms, messages (incl. private DMs + group DMs you're in), events, and chapters in one round trip. Returns the top-N matches per resource, grouped by resource.
Use this when you don't yet know which resource carries th
search_profiles
GET /search/profiles — Search profiles
Full-text search across DCer profiles — headlines, bios, business descriptions, expertise, hobbies, etc. Returns matching profile records with privacy gates applied (hidden + guest profiles filtered out).
For structured/AI-driven matchmaking ("DCers in Lisbon
search_rooms
GET /search/rooms — Search rooms
Search rooms by name, description, and topic. Returns rooms that match the query AND that you have access to (subscribed-or-browsable; private rooms / DMs / group DMs you're NOT a member of are filtered out).
**Query syntax (`q=`):** plain words match with prefix +
search_messages
GET /search/messages — Search messages (incl. your private DMs)
Search message bodies across every room you can access. **This is the key surface for "catch me up on what was said about X"** — your private DMs, group DMs, and any room you're a member of are all searchable. Messages from rooms you d
search_events
GET /search/events — Search events
Search enabled DC events by name, description, host, and venue. No default time filter — pass `?since=` or `?until=` (ISO 8601 dates) to constrain. They compose: pass both for an explicit window.
**Query syntax (`q=`):** plain words match with prefix + typo toler
search_chapters
GET /search/chapters — Search chapters
Search DC chapters by city or country name.
**Query syntax (`q=`):** plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. `q="remote work"`. AND/OR/NOT/parentheses are NOT parsed in `q=` — use
tickets
GET /tickets — List your tickets
Returns your tickets across events, newest first. Defaults to the tickets you're holding (`valid` plus `maybe`) — "what am I attending". Pass `?status=valid`, `?status=maybe`, or `?status=refunded` to narrow to one.
virtual_events
GET /virtual-events — List Live Calls
Returns upcoming Live Calls (online sessions like Connect Calls, Happy Hour, Welcome Call, plus DC BLACK-only calls). Add `?past=true` to include past calls.
virtual_event
GET /virtual-events/:sessionID — Get Live Call details
Returns the same payload shape as one entry from `GET /virtual-events` for a single online Live Call — `sessionID`, `name`, `description`, `kind` (which audience tier the session is open to), `scheduledAt` / `scheduledEndAt` (ISO 8601), `durati
virtual_event_attendees
GET /virtual-events/:sessionID/attendees — List Live Call attendees
List the attendees of a Live Call — the DCers who RSVPd `yes` or `maybe` (the same set behind `attendeeCount`, mirroring how `GET /events/:eventID/attendees` counts RSVPs). Profiles use the standard other-person shape (identical to
virtual_event_rsvp
POST /virtual-events/:sessionID/rsvp — RSVP to Live Call
RSVP to a Live Call. The user is added to the matching attendance list on the session doc (`participantIDs` for `yes`, `maybeIDs` for `maybe`, `notIDs` for `no`) and removed from the others.
Three statuses:
- `yes` — you intend to attend; yo
Endpoint
https://api.dynamitecircle.com/mcp Category: Dev & Git · Last checked: 2026-07-30T13:54:01Z
Monitor your own MCP server
Get alerted the moment yours goes down, a tool schema drifts, or an upstream silently breaks.
What this means. This server responded to the MCP handshake and listed its tools without authentication. The schema fingerprint lets us flag if tool signatures silently change (schema drift) between checks.