dynamitecircle 1.6.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,543 @@
1
+ Metadata-Version: 2.4
2
+ Name: dynamitecircle
3
+ Version: 1.6.1
4
+ Summary: Official Python client for the public Dynamite Circle Member API. CLI, library, Agent Skill, and MCP server in one file.
5
+ Project-URL: Homepage, https://github.com/dynamitecircle/dc
6
+ Project-URL: Repository, https://github.com/dynamitecircle/dc
7
+ Project-URL: Documentation, https://www.dynamitecircle.com/developers/
8
+ Project-URL: Changelog, https://github.com/dynamitecircle/dc/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/dynamitecircle/dc/issues
10
+ Project-URL: Apply to DC, https://dc.dynamitecircle.com/account/apply?utm_medium=pypi&utm_source=dynamitecircle&utm_campaign=client-package
11
+ Author-email: Dynamite Circle <team@dynamitecircle.com>
12
+ License: MIT License
13
+
14
+ Copyright (c) 2026 Dynamite Circle
15
+
16
+ Permission is hereby granted, free of charge, to any person obtaining a copy
17
+ of this software and associated documentation files (the "Software"), to deal
18
+ in the Software without restriction, including without limitation the rights
19
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
+ copies of the Software, and to permit persons to whom the Software is
21
+ furnished to do so, subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in all
24
+ copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
+ SOFTWARE.
33
+ License-File: LICENSE
34
+ Keywords: agent-skills,dc,dcbkk,dcmex,dynamite-circle,events,mcp,membership
35
+ Classifier: Development Status :: 5 - Production/Stable
36
+ Classifier: Intended Audience :: Developers
37
+ Classifier: License :: OSI Approved :: MIT License
38
+ Classifier: Operating System :: OS Independent
39
+ Classifier: Programming Language :: Python :: 3
40
+ Classifier: Programming Language :: Python :: 3.9
41
+ Classifier: Programming Language :: Python :: 3.10
42
+ Classifier: Programming Language :: Python :: 3.11
43
+ Classifier: Programming Language :: Python :: 3.12
44
+ Classifier: Programming Language :: Python :: 3.13
45
+ Classifier: Topic :: Internet :: WWW/HTTP
46
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
47
+ Requires-Python: >=3.9
48
+ Provides-Extra: mcp
49
+ Requires-Dist: mcp>=0.9.0; extra == 'mcp'
50
+ Description-Content-Type: text/markdown
51
+
52
+ # DC Official Client
53
+
54
+ The official Python client for the [Dynamite Circle Member API](https://www.dynamitecircle.com/developers/) — your own profile, trips, events, virtual events, tickets, invites, inbox, rooms, chapters, places lookup, and the weekly locator digest.
55
+
56
+ A single self-contained file. Zero dependencies (stdlib only). Works as a CLI, a Python library, **and** a [Model Context Protocol](https://modelcontextprotocol.io) server. Compatible with Claude Code, Claude Desktop, Codex CLI, Gemini CLI, Cursor, GitHub Copilot, and every other Agent Skills / MCP-compatible tool.
57
+
58
+ ```
59
+ py/dc.py ← one file, three integration modes
60
+ ```
61
+
62
+ ## About the Dynamite Circle
63
+
64
+ The [Dynamite Circle](https://www.dynamitecircle.com/?utm_medium=github&utm_source=dc-official&utm_campaign=client-repo) 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](https://www.dynamitecircle.com/dcbkk/) and DCMEX, swap notes in private rooms, and travel through each other's home cities year-round.
65
+
66
+ 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](https://dc.dynamitecircle.com/account/apply?utm_medium=github&utm_source=dc-official&utm_campaign=client-repo&referrer=github.com) if that sounds like you.
67
+
68
+ ## Quick Start
69
+
70
+ Never used Claude Code, Codex, or git? Here's the 5-minute path from zero to "Claude can read my DC profile."
71
+
72
+ ### 1. Install the basics (one-time)
73
+
74
+ You need three free things on your computer:
75
+
76
+ - **Python 3.9+** — the language this client is written in. [Download here](https://www.python.org/downloads/) (Mac/Windows/Linux installers; check **"Add Python to PATH"** on Windows).
77
+ - **Git** — the tool that downloads code from GitHub. [Download here](https://git-scm.com/downloads).
78
+ - **An AI assistant** — pick one:
79
+ - **[Claude Code](https://claude.com/product/claude-code)** ← *recommended* — this repo is built around it
80
+ - **[Codex CLI](https://github.com/openai/codex)** — works too, slightly different commands
81
+ - **[Claude Desktop](https://claude.ai/download)** — the chat app, gets you the MCP server but no CLI
82
+
83
+ If anything during install asks "do you want to add to PATH?" — say yes.
84
+
85
+ ### 2. Get the code
86
+
87
+ Open a terminal:
88
+ - **Mac**: Spotlight → "Terminal"
89
+ - **Windows**: Start → "Terminal" (or "PowerShell")
90
+ - **Linux**: you know what to do
91
+
92
+ Then paste:
93
+
94
+ ```bash
95
+ git clone https://github.com/dynamitecircle/dc.git
96
+ cd dc
97
+ ```
98
+
99
+ You now have a folder called `dc` with all the code in it.
100
+
101
+ ### 3. Get your DC API key
102
+
103
+ 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_…`.
104
+
105
+ ### 4. Tell the client about your key
106
+
107
+ Back in your terminal (still inside the `dc` folder):
108
+
109
+ ```bash
110
+ python3 py/dc.py setup --api-key dk_paste_your_key_here
111
+ ```
112
+
113
+ ### 5. Try it
114
+
115
+ 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`.)
116
+
117
+ Then ask:
118
+
119
+ > "Show me my DC profile"
120
+
121
+ Claude runs the right command and shows you back your profile. A few more to try:
122
+
123
+ > "What's the latest in DC announcements?"
124
+ > "What events am I attending?"
125
+ > "Show me the DCMEX schedule and bookmark anything about marketing"
126
+ > "Who else from my chapter is going to DCBKK?"
127
+
128
+ You're done. The rest of this README explains what's possible in more detail; [`py/SKILL.md`](py/SKILL.md) lists every command Claude can run.
129
+
130
+ ### If something didn't work
131
+
132
+ | Symptom | What to try |
133
+ |---|---|
134
+ | `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`. |
135
+ | `git: command not found` | Same idea — re-install Git. |
136
+ | 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?"* |
137
+ | Anything else | Run `python3 py/dc.py self-test` from the `dc` folder — it tells you exactly which step is broken. |
138
+
139
+ ---
140
+
141
+ ## How it's exposed
142
+
143
+ The same `dc.py` file is shipped as **four** integrations — pick whichever fits how your tool talks to it:
144
+
145
+ | Integration | What it is | Invoke with | Dependencies |
146
+ |---|---|---|---|
147
+ | **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`](py/SKILL.md) and offers the commands | stdlib only |
148
+ | **CLI** | Run commands directly from the shell or scripts | `python3 py/dc.py <command>` | stdlib only |
149
+ | **Python library** | Import in your own Python code | `from dc import DC; DC().profile()` | stdlib only |
150
+ | **MCP server** | Speaks Model Context Protocol over stdio (Claude Desktop, Cursor, Codex MCP, Cline, etc.) | `python3 py/dc.py --mcp` | `pip install mcp` (optional) |
151
+
152
+ The `mcp` package is **lazy-imported** — Agent Skill / CLI / Python-library users never need it.
153
+
154
+ ## Features
155
+
156
+ - **Full Member API coverage** — read + write across every public endpoint (run `python3 py/dc.py help` for the live list)
157
+ - **Setup command** — saves your API key to a chmod-600 `.env.dc` next to the skill
158
+ - **Self-test command** — validates env, network, key shape, and a live `/profile` call end-to-end
159
+ - **Cursor pagination** — every list-returning command uses the same `[--limit N] [--cursor TOKEN]` shape and returns the canonical envelope `{items, count, cursor, has_more}`
160
+ - **Three output formats** — text (default, pretty JSON), `--json`, `--python`
161
+ - **MCP-ready** — same skill auto-exposes all commands as MCP tools
162
+ - **Pre-configured for Claude Code** — repo ships an `.mcp.json`, just `cd` and `claude`
163
+
164
+ ## CLI quickstart (already comfortable in a terminal?)
165
+
166
+ If you're skipping past the [Quick Start](#quick-start) above and just want the CLI flow, here's the condensed version.
167
+
168
+ ### 1. Get an API key
169
+
170
+ DC profile dropdown → **DC Member API Key** (admins/testers only). Keys look like `dk_<api-key>` and are revocable from the same dropdown.
171
+
172
+ ### 2. Save the key
173
+
174
+ ```bash
175
+ python3 py/dc.py setup --api-key dk_<api-key>
176
+ ```
177
+
178
+ This writes `py/.env.dc` (chmod 600, gitignored).
179
+
180
+ ### 3. Verify the connection
181
+
182
+ ```bash
183
+ python3 py/dc.py self-test
184
+ ```
185
+
186
+ Expected output:
187
+
188
+ ```json
189
+ {
190
+ "ok": true,
191
+ "userID": "<your-id>",
192
+ "displayName": "<Your Name>",
193
+ "checks": [
194
+ { "step": "env", "ok": true, "message": "DC_API_KEY loaded from ..." },
195
+ { "step": "keyShape", "ok": true, "message": "Key prefix valid (expected userID: <id>)" },
196
+ { "step": "profile", "ok": true, "message": "connected as userID[<id>] <Your Name>" }
197
+ ]
198
+ }
199
+ ```
200
+
201
+ ### 4. Try a few commands
202
+
203
+ ```bash
204
+ python3 py/dc.py profile
205
+ python3 py/dc.py trips --limit 5
206
+ python3 py/dc.py events --past --limit 3
207
+ python3 py/dc.py chapters --limit 5
208
+ python3 py/dc.py permacode
209
+ ```
210
+
211
+ Run `python3 py/dc.py help` for the full command list.
212
+
213
+ ## Setup per AI tool
214
+
215
+ ### Claude Code
216
+
217
+ `.mcp.json` is already shipped with this repo. Open the repo with `claude`:
218
+
219
+ ```bash
220
+ cd dc
221
+ claude
222
+ ```
223
+
224
+ Tools become available as `mcp__dc__*`. First-time install of the optional MCP dependency:
225
+
226
+ ```bash
227
+ pip install -r py/requirements.txt
228
+ ```
229
+
230
+ Skill discovery (CLI + import) works automatically via `py/SKILL.md`.
231
+
232
+ ### Claude Desktop
233
+
234
+ Edit your config file:
235
+
236
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
237
+ - Linux: `~/.config/Claude/claude_desktop_config.json`
238
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
239
+
240
+ ```json
241
+ {
242
+ "mcpServers": {
243
+ "dc": {
244
+ "command": "python3",
245
+ "args": ["/absolute/path/to/dc/py/dc.py", "--mcp"]
246
+ }
247
+ }
248
+ }
249
+ ```
250
+
251
+ Restart Claude Desktop.
252
+
253
+ ### Codex CLI
254
+
255
+ Edit `~/.codex/config.toml`:
256
+
257
+ ```toml
258
+ [mcp_servers.dc]
259
+ command = "python3"
260
+ args = ["/absolute/path/to/dc/py/dc.py", "--mcp"]
261
+ ```
262
+
263
+ Codex auto-discovers `AGENTS.md` (symlinked to `CLAUDE.md`) and `.agents/skills/` (symlinked to `.claude/skills/`).
264
+
265
+ ### Gemini CLI
266
+
267
+ Reads `GEMINI.md` (symlinked to `CLAUDE.md`) for context. For MCP, configure in your Gemini CLI settings:
268
+
269
+ ```yaml
270
+ mcp_servers:
271
+ dc:
272
+ command: python3
273
+ args:
274
+ - /absolute/path/to/dc/py/dc.py
275
+ - --mcp
276
+ ```
277
+
278
+ ### Cursor
279
+
280
+ Settings → MCP → Add server, then point at the same `dc.py --mcp`.
281
+
282
+ ### GitHub Copilot
283
+
284
+ Reads `.github/copilot-instructions.md` for context. Copilot doesn't have native MCP support yet — use it for in-editor suggestions while developing.
285
+
286
+ ### Any other MCP client
287
+
288
+ Same recipe: command = `python3`, args = `["/path/to/dc.py", "--mcp"]`. The protocol is standard.
289
+
290
+ ## Output formats
291
+
292
+ ```bash
293
+ python3 dc.py profile # text (pretty JSON for dicts/lists)
294
+ python3 dc.py profile --json # explicit JSON
295
+ python3 dc.py profile --python # Python repr (eval-safe)
296
+ ```
297
+
298
+ Global flags work before or after the command name:
299
+
300
+ ```bash
301
+ python3 dc.py --json profile
302
+ python3 dc.py profile --json
303
+ ```
304
+
305
+ ## Cursor pagination
306
+
307
+ All list-returning commands take the same flags:
308
+
309
+ ```bash
310
+ python3 dc.py trips
311
+ python3 dc.py trips --limit 10
312
+ python3 dc.py trips --limit 10 --cursor <opaque-token-from-previous-response>
313
+ python3 dc.py trips --past --limit 5
314
+ ```
315
+
316
+ Standard envelope:
317
+
318
+ ```json
319
+ {
320
+ "items": [ /* page of records */ ],
321
+ "count": 42,
322
+ "cursor": "opaque-token-or-null",
323
+ "has_more": true
324
+ }
325
+ ```
326
+
327
+ Non-paginated extras (e.g. `totalUnread` on `inbox`) are passed through under an `extra` key.
328
+
329
+ ## Use as a Python library
330
+
331
+ ```python
332
+ import sys
333
+ sys.path.insert(0, "dc")
334
+ from dc import DC
335
+
336
+ dc = DC()
337
+
338
+ # Reads
339
+ profile = dc.profile()
340
+ trips = dc.trips(past=True, limit=10)
341
+ events = dc.events(past=True, limit=5)
342
+ chapters = dc.chapters()
343
+ overlaps = dc.overlaps()
344
+ locator = dc.locator(sections="homeCity,favoriteCities")
345
+
346
+ # Writes
347
+ dc.profile_update({"headline": "CEO at Acme"})
348
+ dc.trip_create(start_date="2026-12-01", end_date="2026-12-05", place_id="ChIJ...")
349
+ dc.event_rsvp("<eventID>", "yes")
350
+ dc.invite_create(email="new@friend.com", full_name="New Friend")
351
+ ```
352
+
353
+ Override the API URL (e.g. for a local dev server):
354
+
355
+ ```python
356
+ dc = DC(api_url="http://localhost:8080")
357
+ ```
358
+
359
+ ## API reference
360
+
361
+ 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.
362
+
363
+ ## Staying up to date
364
+
365
+ 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 a server `X-API-Version` newer than `DC_API_VERSION`, and major-version bumps may break older clients.
366
+
367
+ Pick whichever integration style fits your project. From simplest to most isolated:
368
+
369
+ ### 1. Plain git clone — quick local use
370
+
371
+ ```bash
372
+ git clone https://github.com/dynamitecircle/dc.git
373
+ cd dc
374
+ python3 py/dc.py setup --api-key dk_<api-key>
375
+ ```
376
+
377
+ To update: `cd dc && git pull`. Run `self-test` afterwards.
378
+
379
+ Best for: trying things out, scripts you run by hand, no other repo involved.
380
+
381
+ ### 2. Git submodule — pinned to a specific commit
382
+
383
+ If you have your own project repo and want the `dc` repo versioned alongside it:
384
+
385
+ ```bash
386
+ cd your-project
387
+ git submodule add https://github.com/dynamitecircle/dc.git vendor/dc
388
+ git commit -m "Add dc client as submodule"
389
+ ```
390
+
391
+ To update later:
392
+
393
+ ```bash
394
+ cd vendor/dc
395
+ git pull origin main
396
+ cd ../..
397
+ git add vendor/dc
398
+ git commit -m "Bump dc client"
399
+ ```
400
+
401
+ Then in your code:
402
+
403
+ ```python
404
+ import sys
405
+ sys.path.insert(0, "vendor/dc/py")
406
+ from dc import DC
407
+ ```
408
+
409
+ Best for: production-ish code where you want explicit, reviewable bumps.
410
+
411
+ ### 3. Git subtree — same updates, no submodule indirection
412
+
413
+ ```bash
414
+ cd your-project
415
+ git subtree add --prefix vendor/dc \
416
+ https://github.com/dynamitecircle/dc.git main --squash
417
+ ```
418
+
419
+ Update with:
420
+
421
+ ```bash
422
+ git subtree pull --prefix vendor/dc \
423
+ https://github.com/dynamitecircle/dc.git main --squash
424
+ ```
425
+
426
+ Best for: teammates who don't know submodules — files just appear in your repo.
427
+
428
+ ### 4. Symlink — share one clone across many projects
429
+
430
+ If you keep all your projects in `~/code/`:
431
+
432
+ ```bash
433
+ git clone https://github.com/dynamitecircle/dc.git ~/code/dc
434
+
435
+ # In each project that uses it:
436
+ cd ~/code/your-project
437
+ ln -s ../dc vendor/dc
438
+ ```
439
+
440
+ 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.
441
+
442
+ Best for: power users with multiple personal projects and one machine.
443
+
444
+ ### 5. Pip-installable Git ref — one-shot for a virtualenv
445
+
446
+ 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:
447
+
448
+ ```bash
449
+ pip install mcp
450
+ git clone https://github.com/dynamitecircle/dc.git
451
+ ```
452
+
453
+ Best for: CI environments, ephemeral containers, scripted setups.
454
+
455
+ ### Update etiquette
456
+
457
+ - **Stay current.** The DC Member API ships new endpoints regularly and the client mirrors them; running stale means missing features and (eventually) compatibility warnings on stderr.
458
+ - **Run `self-test` after every update.** Five seconds, catches breakage.
459
+ - **Watch stderr the first time you call any command after updating.** The version-mismatch warning prints once per process when the server is on a newer minor/major.
460
+ - **Major version bumps may be backwards-incompatible.** Read the release notes on the GitHub repo before pulling across a major boundary.
461
+
462
+ ## Rate limits
463
+
464
+ | Tier | Per minute | Per day |
465
+ |-------------------|------------|---------|
466
+ | DC Community | 10 | 300 |
467
+ | DC BLACK | 60 | 3,000 |
468
+
469
+ Headers on every response: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `X-RateLimit-Daily-Remaining`.
470
+
471
+ ## Platform support
472
+
473
+ Tested on macOS, Linux, and Windows 10/11. Python 3.9+ required (uses `pathlib`, `Path.replace`, `inspect.signature`, `contextvars`, `urllib`).
474
+
475
+ ### Windows notes
476
+
477
+ - The skill auto-reconfigures `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.
478
+ - `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.
479
+ - Use `python` or `python3.exe` to invoke; the `#!/usr/bin/env python3` shebang is ignored on Windows.
480
+
481
+ ## Project layout
482
+
483
+ ```
484
+ dc/
485
+ ├── README.md # this file
486
+ ├── CLAUDE.md # AI-tool guide (also linked as AGENTS.md, GEMINI.md)
487
+ ├── AGENTS.md → CLAUDE.md # symlink (Codex)
488
+ ├── GEMINI.md → CLAUDE.md # symlink (Gemini)
489
+ ├── LICENSE # MIT
490
+ ├── manifest.json # MCPB manifest (MCP 2025-11 spec)
491
+ ├── .mcp.json # auto-registers `dc` MCP server in Claude Code
492
+ ├── .codex/
493
+ │ └── config.toml # auto-registers `dc` for Codex CLI
494
+ ├── .github/
495
+ │ └── copilot-instructions.md # GitHub Copilot
496
+
497
+ ├── py/ # ← Python client (canonical)
498
+ │ ├── SKILL.md # Agent Skills frontmatter + usage
499
+ │ ├── config.json # name, version, env requirements
500
+ │ ├── dc.py # CLI + Python import + --mcp server
501
+ │ ├── requirements.txt # optional MCP dep — skip for CLI/import
502
+ │ ├── .env.dc.example # template
503
+ │ └── .env.dc # gitignored (created by `setup`)
504
+
505
+ │ (Future: go/, node/, rs/ folders for sister clients in other languages)
506
+
507
+ ├── docs/ # ← REAL design docs (canonical)
508
+ │ ├── skill-info.md # design rules / architecture
509
+ │ └── mcp-info.md # MCP setup for every supported client
510
+
511
+ ├── .claude/ # Agent Skills discovery (Claude Code)
512
+ │ ├── skills/dc → ../../py # symlink to canonical Python client
513
+ │ └── docs → ../docs # symlink to canonical docs
514
+
515
+ ├── .agents/ # Agent Skills discovery (Codex CLI + Gemini CLI alias)
516
+ │ ├── skills/dc → ../../py # symlink to canonical Python client
517
+ │ └── docs → ../docs # symlink to canonical docs
518
+
519
+ ├── .gemini/ # Gemini CLI MCP config
520
+ │ └── settings.json # auto-approves dc MCP tools (trust: true)
521
+
522
+ ├── .gitignore
523
+ └── .gitattributes
524
+ ```
525
+
526
+ ### About the layout
527
+
528
+ This is a **monorepo**. The Python client lives at `/py/` so we can add future sister clients (`go/`, `node/`, `rs/`) at the same level — they all wrap the same DC Member API. `/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.
529
+
530
+ If you're adding new code or docs, edit `py/` (or `docs/`) directly. The discovery folders take care of themselves.
531
+
532
+ ### Pre-approval out of the box
533
+
534
+ `.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.
535
+
536
+ ## Maintenance
537
+
538
+ 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.
539
+
540
+ ## License
541
+
542
+ [MIT](LICENSE) — see the LICENSE file for the full text.
543
+
@@ -0,0 +1,6 @@
1
+ dynamitecircle.py,sha256=3moeGXySkngNZFQV7NISbnjN5aFv8wa4MVBDKvyOilc,86357
2
+ dynamitecircle-1.6.1.dist-info/METADATA,sha256=gTlA4mMxVLRZQwZYiJlLTDC6Nb4nqsZRC64n6GjqVCw,22066
3
+ dynamitecircle-1.6.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
4
+ dynamitecircle-1.6.1.dist-info/entry_points.txt,sha256=G7TBq9waVWZX1fJKk3M9_krU5DbFA8sMxYZteoaoHKo,43
5
+ dynamitecircle-1.6.1.dist-info/licenses/LICENSE,sha256=R89bZDtaCBHVOJOl302yPsnI70E_yRUhvVc5p6ddy1E,1072
6
+ dynamitecircle-1.6.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ dc = dynamitecircle:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dynamite Circle
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.