The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the DC Member API listing page.
Official clients for the Dynamite Circle Member API — your own profile, trips, events, virtual events, tickets, invites, inbox, rooms, chapters, places lookup, and the weekly locator digest.
The Python client is a single self-contained file. Zero dependencies (stdlib only). Works as a CLI, a Python library, and a Model Context Protocol server. Compatible with Claude Code, Claude Desktop, Codex CLI, Gemini CLI, Cursor, GitHub Copilot, and every other Agent Skills / MCP-compatible tool.
The TypeScript client is an npm library for trusted server-side TypeScript projects. It is not a CLI and not an MCP server.
The Dynamite Circle is the place where global founders find their people — a curated, members-only community of location-independent business owners running profitable companies around the world. Founded in 2011 (it started with twenty listeners on a remote tropical island), the DC has grown into a hand-selected network of ~1,500 active founders who meet at vetted in-person events like DCBKK and DCMEX, swap notes in private rooms, and travel through each other's home cities year-round.
DC is a private community, but it's open to applications from founders running location-independent businesses doing $100k+ in annual revenue. Every application is personally reviewed by a team member within 48 business hours — start an application here if that sounds like you.
Never used Claude Code, Codex, or git? Here's the 5-minute path from zero to "Claude can read my DC profile."
You need three free things on your computer:
If anything during install asks "do you want to add to PATH?" — say yes.
Open a terminal:
Then paste:
You now have a folder called dc with all the code in it.
In your browser: go to https://dc.dynamitecircle.com, log in, click your profile photo (top-right), and choose DC Member API Key. Copy the long string starting with dk_….
Back in your terminal (still inside the dc folder):
Open Claude Code and make sure it's pointed at the dc folder you just downloaded. (Claude usually opens to your last project — if it's somewhere else, click the folder icon and pick dc.)
Then ask:
"Show me my DC profile"
Claude runs the right command and shows you back your profile. A few more to try:
"What's the latest in DC announcements?" "What events am I attending?" "Show me the DCMEX schedule and bookmark anything about marketing" "Who else from my chapter is going to DCBKK?"
You're done. The rest of this README explains what's possible in more detail; py/SKILL.md lists every command Claude can run.
| Symptom | What to try |
|---|---|
python3: command not found | Python didn't install or didn't get added to PATH. Re-install and check the "Add to PATH" box on Windows; on Mac, try python instead of python3. |
git: command not found | Same idea — re-install Git. |
Claude says "I don't see a dc skill" | Make sure Claude Code is opened to the dc folder, not your home directory or another project. Or just ask Claude: "are you in the dc folder?" |
| Anything else | Run python3 py/dc.py self-test from the dc folder — it tells you exactly which step is broken. |
The same dc.py file is shipped as four integrations — pick whichever fits how your tool talks to it:
| Integration | What it is | Invoke with | Dependencies |
|---|---|---|---|
| Agent Skill | Auto-discovered via SKILL.md frontmatter (Claude Code, Codex, Gemini CLI, Cursor, Copilot) | Just open the repo with the tool — it reads py/SKILL.md and offers the commands | stdlib only |
| CLI | Run commands directly from the shell or scripts | python3 py/dc.py <command> | stdlib only |
| Python library | Import in your own Python code | from dc import DC; DC().profile() | stdlib only |
| MCP server | Speaks Model Context Protocol over stdio (Claude Desktop, Cursor, Codex MCP, Cline, etc.) | python3 py/dc.py --mcp | pip install mcp (optional) |
The mcp package is lazy-imported — Agent Skill / CLI / Python-library users never need it.
For TypeScript projects, use the package under ts/:
Keep dk_... API keys server-side. Do not ship a member API key in browser JavaScript.
The DC Member API is also a hosted MCP server — a remote endpoint you point your AI app at, with nothing to clone, install, or update:
claude mcp add --transport http dc https://api.dynamitecircle.com/mcpcode --add-mcp '{"name":"dc","url":"https://api.dynamitecircle.com/mcp"}'When prompted, sign in with your DC account (one-click OAuth) — or send a dk_ key as Authorization: Bearer. The server is always on the current API version, so there's nothing to keep up to date.
Hosted MCP vs. this client — which do I want?
| You want… | Use |
|---|---|
| Zero install, always-current, just MCP tools in a chat app | Hosted MCP (URL above) |
To call DC from your own Python code (from dynamitecircle import DC) | This client (library) |
A local CLI (dc profile) or shell scripting | This client (CLI) |
| A local stdio MCP server (offline-capable, pin a version, dev against localhost) | This client (dc --mcp) |
The rest of this README is about this client. For the hosted MCP, the URL above is all you need.
python3 py/dc.py help for the live list).env.dc next to the skill/profile call end-to-end[--limit N] [--cursor TOKEN] shape and returns the canonical envelope {items, count, cursor, has_more}--json, --python.mcp.json, just cd and claudeIf you're skipping past the Quick Start above and just want the CLI flow, here's the condensed version.
DC profile dropdown → DC Member API Key (admins/testers only). Keys look like dk_<api-key> and are revocable from the same dropdown.
This writes py/.env.dc (chmod 600, gitignored).
Expected output:
Run python3 py/dc.py help for the full command list.
Nothing to clone or update — point your tool at the remote endpoint:
For Claude web / Desktop, Cursor, ChatGPT, and other MCP apps, add a custom / remote connector pointing at https://api.dynamitecircle.com/mcp (Streamable HTTP). Sign in with your DC account (OAuth) or send a dk_ key as a Bearer header. Discovery is published at /.well-known/mcp.json. This is the lowest-effort path; everything below runs the client locally instead.
.mcp.json is already shipped with this repo. Open the repo with claude:
Tools become available as mcp__dc__*. First-time install of the optional MCP dependency:
Skill discovery (CLI + import) works automatically via py/SKILL.md.
uvx (PyPI)Prefer a local stdio server that pulls the latest published client on every launch with no clone to maintain? Use uv's uvx and pass your key in the env block:
Notes: the console script is dc (not dynamitecircle), so --from dynamitecircle[mcp] is required — it both names the package and pulls the optional mcp extra. --refresh is what makes it auto-update; drop it to let uvx cache. The DC_API_KEY in env wins over any .env.dc (an ephemeral uvx install has none).
Easiest — one-click .mcpb: download dc.mcpb from the latest GitHub release and double-click it. Claude Desktop installs the dc server and prompts for your DC_API_KEY (no JSON editing). Requires Python 3.9+ with the mcp package available on your machine (pip install 'dynamitecircle[mcp]'). (Or skip local install entirely and use the hosted MCP connector above.)
Manual — edit your config file:
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop.
Edit ~/.codex/config.toml:
Codex auto-discovers AGENTS.md (symlinked to CLAUDE.md) and .agents/skills/ (symlinked to .claude/skills/).
Reads GEMINI.md (symlinked to CLAUDE.md) for context. For MCP, configure in your Gemini CLI settings:
Settings → MCP → Add server, then point at the same dc.py --mcp.
Reads .github/copilot-instructions.md for context. Copilot doesn't have native MCP support yet — use it for in-editor suggestions while developing.
Same recipe: command = python3, args = ["/path/to/dc.py", "--mcp"]. The protocol is standard.
Global flags work before or after the command name:
All list-returning commands take the same flags:
Standard envelope:
Non-paginated extras (e.g. totalUnread on inbox) are passed through under an extra key.
Installed from PyPI (pip install dynamitecircle) — import by the package name:
Working from a clone instead? Point sys.path at the py/ folder and import as dc:
Override the API URL (e.g. for a local dev server):
The full live reference for the DC Member API — every endpoint, parameter, and response shape — is at https://www.dynamitecircle.com/developers/. The page is regenerated on every deploy, so it's always current.
The DC Member API ships new endpoints and refinements regularly. This skill is the official client and we update it whenever the API changes. Plan for updates — the skill will warn you on stderr the first time a request returns an X-API-Version newer than DC_API_VERSION, and major-version bumps may break older clients.
The no-maintenance option: if you use the hosted MCP (https://api.dynamitecircle.com/mcp), there's nothing to update — the server always runs the current API version. The strategies below apply only to the local client.
Pick whichever integration style fits your project. From simplest to most isolated:
pip / uvxThen dc setup --api-key dk_<api-key> and dc self-test. Update with pip install --upgrade dynamitecircle. For a local MCP that auto-updates on every launch, use the uvx config above.
Best for: the quickest local install, and the auto-updating uvx MCP setup.
To update: cd dc && git pull. Run self-test afterwards.
Best for: trying things out, scripts you run by hand, no other repo involved.
If you have your own project repo and want the dc repo versioned alongside it:
To update later:
Then in your code:
Best for: production-ish code where you want explicit, reviewable bumps.
Update with:
Best for: teammates who don't know submodules — files just appear in your repo.
If you keep all your projects in ~/code/:
Now cd ~/code/dc && git pull updates every consumer at once. Project-level .mcp.json / .codex/config.toml entries can use vendor/dc/py/dc.py and they'll resolve through the symlink.
Best for: power users with multiple personal projects and one machine.
The skill is one file with no setup.py, but you can install the package the MCP server needs and check the file out as a sibling:
Best for: CI environments, ephemeral containers, scripted setups.
self-test after every update. Five seconds, catches breakage.| Tier | Per minute | Per day |
|---|---|---|
| DC Community | 10 | 300 |
| DC BLACK | 60 | 3,000 |
Headers on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Daily-Remaining.
Tested on macOS, Linux, and Windows 10/11. Python 3.9+ required (uses pathlib, Path.replace, inspect.signature, contextvars, urllib).
stdout and stderr to UTF-8 at startup, so emoji and em-dashes render correctly even on legacy cmd.exe (which defaults to cp1252). If you still see mojibake on a very old terminal, set PYTHONIOENCODING=utf-8 once: setx PYTHONIOENCODING utf-8 then restart your shell.setup writes .env.dc and tries to chmod 600 it. On Windows this is a no-op — the file inherits NTFS perms from its parent. The skill emits a one-time note about this when you run setup. Make sure your repo isn't on a shared drive.python or python3.exe to invoke; the #!/usr/bin/env python3 shebang is ignored on Windows.This is a monorepo. The Python client lives at /py/; the TypeScript client lives at /ts/. Both wrap the same DC Member API and are validated against the pinned contract in /contracts/. /docs/ is shared. The dotfile-prefixed directories (.claude/, .agents/, .gemini/) exist because AI tools auto-discover skills from those specific paths — they're kept hidden but each one symlinks (or points) straight to the canonical folder, so you only edit files in one place. Edit py/dc.py and Claude Code, Codex, and Gemini CLI all see the same file via their respective discovery directories. Gemini CLI also reads .agents/skills/ as an alias, so we don't need a redundant .gemini/skills/ symlink.
If you're adding Python code or skill docs, edit py/ (or docs/) directly. If you're adding TypeScript library code, edit ts/. The discovery folders take care of themselves.
.claude/settings.json, .codex/config.toml, and .gemini/settings.json all auto-approve the dc MCP server's tools so users don't get a per-call approval prompt when they open this repo with their AI tool. Anyone uncomfortable with that can override with their personal .claude/settings.local.json, ~/.codex/config.toml, or ~/.gemini/settings.json. Every dc write tool is scoped to the caller's own DC account via their personal API key — pre-approval doesn't widen any blast radius, just removes per-call friction.
This repo is maintained by the Dynamite Circle team. It's read-only for the public — clone it and use it, but don't open PRs. If you spot a bug or want a new feature, contact us through the official DC channels.
MIT — see the LICENSE file for the full text.