DC Member API
io.github.dynamitecircle/dcRead and act on your own Dynamite Circle membership data via the public DC Member API.
Tools · 85
GET /alerts — List your alerts Returns the user's alerts, ordered by creation date (newest first). Maximum 50 results.
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:…
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.
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 r…
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, et…
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. …
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-on…
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` t…
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 fu…
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 …
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 …
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` bl…
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 re…
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, over…
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'…
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` — …
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'…
GET /events/:eventID — Get event details Returns full details for a specific event, including your ticket status.
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 ex…
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 …
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 sc…
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. -…
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 th…
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…
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 …
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`. **Acce…
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 a…
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 sess…
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.…
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 n…
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 ses…
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 `G…
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 + g…
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…
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 trip…
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 f…
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 dat…
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.
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, updat…
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 entri…
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). - **`p…
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…
GET /invites/permacode — Get your permacode Returns your permanent referral code. Share this link to let people apply with your referral.
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:** - `httpsUR…
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…
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…
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 …
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, ticke…
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 y…
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 c…
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 r…
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…
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 re…
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 classifi…
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 …
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 — re…
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 memb…
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 mut…
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). **Pri…
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. Cu…
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/inbo…
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…
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 br…
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 …
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 f…
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-pa…
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.i…
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: fals…
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…
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…
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/subscrib…
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 oper…
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…
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. ⚠️ WR…
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 ma…
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 app…
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…
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 p…
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: pa…
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 …
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`, `?statu…
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.
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…
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 /…
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`,…
Similar MCP servers embedding-nearest
How to use
Add to your Claude Desktop / Cursor / Cline MCP config:
{
"mcpServers": {
"dc_member_api": {
"url": "https://api.dynamitecircle.com/mcp",
"transport": "streamable-http"
}
}
}