@agenticmail/claudecode 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +299 -0
- package/claudecode.plugin.json +73 -0
- package/dist/chunk-563BZ447.js +408 -0
- package/dist/chunk-P2DXF7DO.js +139 -0
- package/dist/chunk-RI4USTMC.js +89 -0
- package/dist/chunk-ULKJ773Y.js +65 -0
- package/dist/chunk-UPA2YLSM.js +91 -0
- package/dist/chunk-US5FT2UB.js +151 -0
- package/dist/chunk-XAW5NUNU.js +269 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +174 -0
- package/dist/config-BegnlyPD.d.ts +122 -0
- package/dist/dispatcher-bin.d.ts +1 -0
- package/dist/dispatcher-bin.js +40 -0
- package/dist/dispatcher.d.ts +116 -0
- package/dist/dispatcher.js +7 -0
- package/dist/http-routes.d.ts +36 -0
- package/dist/http-routes.js +11 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.js +47 -0
- package/dist/install.d.ts +47 -0
- package/dist/install.js +10 -0
- package/dist/status.d.ts +18 -0
- package/dist/status.js +8 -0
- package/dist/uninstall.d.ts +25 -0
- package/dist/uninstall.js +8 -0
- package/package.json +97 -0
- package/scripts/uninstall.mjs +78 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ope Olatunji (https://github.com/ope-olatunji)
|
|
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
|
|
13
|
+
all 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
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# @agenticmail/claudecode
|
|
2
|
+
|
|
3
|
+
> π Surfaces every [AgenticMail](https://github.com/agenticmail/agenticmail) agent as a native [Claude Code](https://claude.com/claude-code) subagent β and exposes the full 62-tool AgenticMail MCP toolbelt to any Claude Code session.
|
|
4
|
+
|
|
5
|
+
After install, a Claude Code session can write:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Agent { subagent_type: "agenticmail-fola", prompt: "draft a reply to my last email from accounting" }
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
β¦and Claude Code spawns a subagent who *is* Fola β reads Fola's inbox, drafts the reply from `fola@localhost`, the works. The reply flows back into the host Claude Code session as the `Agent` tool's return value.
|
|
12
|
+
|
|
13
|
+
This package is to Claude Code what `@agenticmail/openclaw` is to OpenClaw: an integration package that wires AgenticMail into the host AI runtime. It mirrors that package's layout 1:1, so if you know one, you know the other.
|
|
14
|
+
|
|
15
|
+
## Multi-agent coordination via the dispatcher
|
|
16
|
+
|
|
17
|
+
After install, a background daemon (`agenticmail-claudecode-dispatcher`, managed by PM2) subscribes to every AgenticMail account's SSE stream. When anything wakes one of those mailboxes β a new email, a `/tasks/rpc` from another agent, a `/tasks/assign` from a shell script β the dispatcher spawns a fresh **Claude-powered worker** for that agent.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Anyone (you, an agent, a curl)
|
|
21
|
+
β
|
|
22
|
+
βββ sends mail to fola@localhost
|
|
23
|
+
β ββ dispatcher wakes Fola β worker reads it, decides, replies
|
|
24
|
+
β
|
|
25
|
+
βββ POST /tasks/rpc { target: "Fola", task: ... }
|
|
26
|
+
ββ dispatcher wakes Fola β worker does the task, submit_result
|
|
27
|
+
ββ original /tasks/rpc long-poll resolves with structured JSON
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Each worker uses the user's Claude OAuth (the same auth `claude` itself uses β no separate Anthropic key). Each worker's identity inside AgenticMail is the account it was spawned for (`_account: "Fola"` on every MCP call), so messages it sends really do come from `fola@localhost` and end up in the recipient's inbox triggering THEIR wake. **Multi-agent threads form naturally** β every reply hits the next agent's inbox β wakes them β they reply β cycle.
|
|
31
|
+
|
|
32
|
+
Provisioning new agents is just `mcp__agenticmail__create_account({ name: "worker-7", role: "task-runner" })`. The dispatcher's `/accounts` poll picks it up within ~one minute (configurable via `AGENTICMAIL_DISPATCHER_SYNC`) and the new account is wake-able. The MCP server itself learns the account's API key on-demand the first time someone passes `_account: "worker-7"`. No manual install step.
|
|
33
|
+
|
|
34
|
+
**Concurrency cap.** Workers are gated by a semaphore (default 10 simultaneous). Beyond that, wakes queue. This is a hard floor on Anthropic-side cost β if you fan out to 50 agents at once, only 10 will be running Claude at any given moment; the rest are waiting their turn. Override via `AGENTICMAIL_DISPATCHER_MAX`.
|
|
35
|
+
|
|
36
|
+
## AgenticMail rides on Claude Code
|
|
37
|
+
|
|
38
|
+
**AgenticMail does not need its own connection to Anthropic for this integration to work.** No per-agent LLM credentials. No proxy. No fork of any other AgenticMail runtime.
|
|
39
|
+
|
|
40
|
+
This package's whole point: **the user's Claude Code session IS the brain for every AgenticMail agent.** When the host session calls `Agent { subagent_type: "agenticmail-fola", β¦ }`, Claude Code spawns a fresh subagent whose persona is "you are Fola" (see `~/.claude/agents/agenticmail-fola.md`). That subagent uses Claude Code's own Claude OAuth credentials β no separate Anthropic key needed β and operates Fola's mailbox via the MCP server with `_account: "Fola"` on every call.
|
|
41
|
+
|
|
42
|
+
From the outside Fola behaves the way you'd expect (her email address sends real mail, her inbox state is real, her tasks are real). Internally the LLM doing the work is the same Claude that's powering the host session. One Anthropic connection, many AgenticMail identities.
|
|
43
|
+
|
|
44
|
+
The MCP server at `@agenticmail/mcp` was extended to read a `AGENTICMAIL_ACCOUNT_KEYS_JSON` env var β a `{ agentName: apiKey }` map populated automatically by `agenticmail claudecode install`. When the subagent passes `_account: "Fola"`, the MCP server looks up Fola's key in that map and forwards the request as her. AsyncLocalStorage threads the per-call identity through to the AgenticMail HTTP API without any change to the 62 tool handlers.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Quick start
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Make sure AgenticMail itself is set up first
|
|
52
|
+
agenticmail setup
|
|
53
|
+
|
|
54
|
+
# Then wire it into Claude Code
|
|
55
|
+
agenticmail claudecode
|
|
56
|
+
|
|
57
|
+
# Restart Claude Code so it picks up the new MCP server
|
|
58
|
+
# (Quit + relaunch your terminal Claude Code session.)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
That's it. `agenticmail claudecode` is **idempotent** β re-run it any time you add a new agent to AgenticMail and it will surface the new agent as a Claude Code subagent.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## What this package does
|
|
66
|
+
|
|
67
|
+
The installer touches exactly two locations on disk, plus one record in AgenticMail's database:
|
|
68
|
+
|
|
69
|
+
| Where | What |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `~/.claude.json` β `mcpServers.agenticmail` | An MCP server entry that runs `npx -y @agenticmail/mcp` whenever Claude Code launches. |
|
|
72
|
+
| `~/.claude/agents/agenticmail-<name>.md` | One Claude Code subagent file per AgenticMail agent. Each one is a thin proxy whose only job is to relay the user prompt to its AgenticMail counterpart through the MCP server's `call_agent` tool. |
|
|
73
|
+
| AgenticMail accounts table | A dedicated "claudecode" agent β Claude Code's identity inside AgenticMail. The MCP server authenticates as this agent, so every call from Claude Code is attributable in AgenticMail's logs. |
|
|
74
|
+
|
|
75
|
+
That's the whole footprint. **Nothing else in your `~/.claude.json` is touched.** Other MCP servers, your project list, OAuth state, onboarding flags β all preserved by name; we read the file, mutate one key, and write it back.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Three ways to install
|
|
80
|
+
|
|
81
|
+
### 1. The wizard (recommended for most users)
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
agenticmail claudecode # install or re-sync
|
|
85
|
+
agenticmail claudecode --status # show what's installed
|
|
86
|
+
agenticmail claudecode --remove # uninstall (keeps the bridge agent)
|
|
87
|
+
agenticmail claudecode --remove --purge-bridge # uninstall AND delete the bridge agent
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 2. The standalone CLI
|
|
91
|
+
|
|
92
|
+
If you don't want to install the full `agenticmail` shell, this package ships its own bin:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm install -g @agenticmail/claudecode
|
|
96
|
+
agenticmail-claudecode install
|
|
97
|
+
agenticmail-claudecode status [--json]
|
|
98
|
+
agenticmail-claudecode uninstall [--purge-bridge]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 3. The HTTP API (headless, for agents installing themselves)
|
|
102
|
+
|
|
103
|
+
When AgenticMail's master API is running (default `http://127.0.0.1:3200`), it exposes three endpoints for the integration. They are mounted **before** the bearer-auth middleware on purpose β a fresh Claude Code session that does not yet have AgenticMail wired up has no way to know the master key, so requiring it would defeat the whole "agent installs itself" goal.
|
|
104
|
+
|
|
105
|
+
```http
|
|
106
|
+
GET /api/agenticmail/integrations/claudecode/status
|
|
107
|
+
POST /api/agenticmail/integrations/claudecode/install
|
|
108
|
+
POST /api/agenticmail/integrations/claudecode/uninstall
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Example β Claude Code installing itself:**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Inside a Claude Code session, simply:
|
|
115
|
+
curl -X POST http://127.0.0.1:3200/api/agenticmail/integrations/claudecode/install
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
That single call:
|
|
119
|
+
|
|
120
|
+
1. Creates (or reuses) the "claudecode" bridge agent inside AgenticMail.
|
|
121
|
+
2. Writes `~/.claude.json` `mcpServers.agenticmail`.
|
|
122
|
+
3. Writes one `~/.claude/agents/agenticmail-<name>.md` per discoverable AgenticMail agent.
|
|
123
|
+
4. Returns a JSON summary (`registeredAgents`, `bridgeAgent`, paths, `changed`).
|
|
124
|
+
|
|
125
|
+
The bridge agent's API key is **redacted** in the HTTP response β it's already been written to `~/.claude.json` server-side, so returning it over HTTP would be a needless second copy.
|
|
126
|
+
|
|
127
|
+
**Security model:** the master API binds to `127.0.0.1` by default. Anything that can reach the install endpoint can already read `~/.agenticmail/config.json` (same file ownership), so leaving these endpoints unauthenticated does not widen the attack surface. **If you bind the master API to a non-loopback interface you MUST put your own auth / firewall in front of it** β same caveat as every other unauthenticated route on this server (e.g. `/health`).
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## How a call flows
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
βββββββββββββββββββββββββββ
|
|
135
|
+
β Claude Code session β user β "@agenticmail-fola draft a follow-up"
|
|
136
|
+
β (your terminal) β
|
|
137
|
+
βββββββββββββ¬ββββββββββββββ
|
|
138
|
+
β Agent { subagent_type: "agenticmail-fola", prompt: ... }
|
|
139
|
+
βΌ
|
|
140
|
+
βββββββββββββββββββββββββββ
|
|
141
|
+
β Claude Code subagent β reads ~/.claude/agents/agenticmail-fola.md
|
|
142
|
+
β ("agenticmail-fola") β restricted to MCP relay tools
|
|
143
|
+
βββββββββββββ¬ββββββββββββββ
|
|
144
|
+
β mcp__agenticmail__call_agent(target: "Fola", task: <prompt>)
|
|
145
|
+
βΌ
|
|
146
|
+
βββββββββββββββββββββββββββ
|
|
147
|
+
β @agenticmail/mcp β stdio child process spawned by Claude Code
|
|
148
|
+
β (MCP server) β authenticated as the "claudecode" bridge agent
|
|
149
|
+
βββββββββββββ¬ββββββββββββββ
|
|
150
|
+
β POST http://127.0.0.1:3200/api/agenticmail/tasks/rpc
|
|
151
|
+
βΌ
|
|
152
|
+
βββββββββββββββββββββββββββ
|
|
153
|
+
β AgenticMail master API β creates a task, signals the target agent,
|
|
154
|
+
β (port 3200) β long-polls until the agent submits a result
|
|
155
|
+
βββββββββββββ¬ββββββββββββββ
|
|
156
|
+
β task event over SSE / email notification
|
|
157
|
+
βΌ
|
|
158
|
+
βββββββββββββββββββββββββββ
|
|
159
|
+
β Fola (AgenticMail agent)β reads task, does the work, submits result
|
|
160
|
+
βββββββββββββ¬ββββββββββββββ
|
|
161
|
+
β result body bubbles back up the call stack
|
|
162
|
+
βΌ
|
|
163
|
+
Returned to the host Claude Code session
|
|
164
|
+
as the Agent tool's completion text.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Local-to-local calls never leave `127.0.0.1`. SMTP only enters the picture as a fallback when the *target* AgenticMail agent is remote (a different machine on the same AgenticMail network) β that path is owned by the master API's `/tasks/rpc` handler, not this package.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## How auth works
|
|
172
|
+
|
|
173
|
+
The MCP server reads **four** env vars (written into `~/.claude.json` by the installer):
|
|
174
|
+
|
|
175
|
+
| Variable | Purpose |
|
|
176
|
+
|---|---|
|
|
177
|
+
| `AGENTICMAIL_API_URL` | Where the master API lives (default `http://127.0.0.1:3200`). |
|
|
178
|
+
| `AGENTICMAIL_API_KEY` | Bridge agent's API key (`ak_β¦`). The *default* identity β used when a tool call doesn't pass `_account`. Effectively "Claude Code talking on its own behalf". |
|
|
179
|
+
| `AGENTICMAIL_MASTER_KEY` | The master key (`mk_β¦`). Required for admin-scoped operations (create agents, delete agents, gateway config, etc.). |
|
|
180
|
+
| `AGENTICMAIL_ACCOUNT_KEYS_JSON` | A JSON map `{ "<agentName>": "<apiKey>" }` of every other AgenticMail agent. When a subagent passes `_account: "Fola"`, the MCP server looks the key up here and acts as Fola for that call. |
|
|
181
|
+
|
|
182
|
+
### The `_account` mechanism in one diagram
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Claude Code session
|
|
186
|
+
β
|
|
187
|
+
β Agent { subagent_type: "agenticmail-fola", prompt: "..." }
|
|
188
|
+
βΌ
|
|
189
|
+
Claude Code subagent "agenticmail-fola"
|
|
190
|
+
β reads ~/.claude/agents/agenticmail-fola.md
|
|
191
|
+
β body says: "You are Fola. Pass _account: 'Fola' on every call."
|
|
192
|
+
β
|
|
193
|
+
β mcp__agenticmail__list_inbox({ _account: "Fola", limit: 10 })
|
|
194
|
+
βΌ
|
|
195
|
+
@agenticmail/mcp (stdio child of Claude Code)
|
|
196
|
+
β reads AGENTICMAIL_ACCOUNT_KEYS_JSON, finds key for "Fola"
|
|
197
|
+
β AsyncLocalStorage stashes Fola's key for this request
|
|
198
|
+
β
|
|
199
|
+
β GET /api/agenticmail/mail/inbox Authorization: Bearer <Fola's key>
|
|
200
|
+
βΌ
|
|
201
|
+
AgenticMail master API
|
|
202
|
+
β authenticates request as Fola, returns Fola's inbox
|
|
203
|
+
βΌ
|
|
204
|
+
Subagent reads, reasons, replies β using Claude Code's own
|
|
205
|
+
Claude OAuth credentials. Returns to the host session.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
No separate Anthropic key. No proxy server. The user's `claude` is the only Anthropic-authenticated process involved.
|
|
209
|
+
|
|
210
|
+
### Why we don't touch `~/.claude/.credentials.json`
|
|
211
|
+
|
|
212
|
+
We never read or modify Claude Code's OAuth file. Claude Code itself manages those credentials and uses them when spawning each subagent session. By the time the subagent calls an MCP tool, Claude Code has already authenticated to Anthropic on its behalf β the MCP server doesn't need to know anything about that.
|
|
213
|
+
|
|
214
|
+
The only "ride on Claude Code" wiring on our side is the `_account` mechanism above, which selects which **AgenticMail** identity each MCP call is made as. The **Anthropic** identity is always whoever the user is logged into Claude Code as, end of story.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Idempotency and ownership
|
|
219
|
+
|
|
220
|
+
Every subagent file we write contains this marker in its frontmatter:
|
|
221
|
+
|
|
222
|
+
```yaml
|
|
223
|
+
# managed-by: @agenticmail/claudecode
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The uninstaller and the pruner **only touch files that have this marker.** That means:
|
|
227
|
+
|
|
228
|
+
- You can hand-author a Claude Code subagent named `agenticmail-foo.md` and we will not overwrite or delete it.
|
|
229
|
+
- Re-running install does not re-write a file whose generated content is identical to what's already on disk (mtimes stay meaningful).
|
|
230
|
+
- Re-running install **does** delete generated subagent files whose underlying AgenticMail agent has been removed β so the Claude Code routing table never drifts away from the AgenticMail account list.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Uninstall
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
agenticmail claudecode --remove # keeps the bridge agent
|
|
238
|
+
agenticmail claudecode --remove --purge-bridge # also deletes the bridge agent
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Or the equivalent npm flow:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
npm uninstall -g @agenticmail/claudecode
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
The `preuninstall` lifecycle hook runs `scripts/uninstall.mjs`, which removes:
|
|
248
|
+
|
|
249
|
+
- The `mcpServers.agenticmail` entry from `~/.claude.json`
|
|
250
|
+
- Every `agenticmail-*.md` file in `~/.claude/agents/` that carries our marker
|
|
251
|
+
|
|
252
|
+
It deliberately **does not** delete the bridge agent inside AgenticMail. That agent owns an inbox and may have ongoing conversations β silently nuking it on `npm uninstall` would be surprising. Use `agenticmail claudecode --remove --purge-bridge` if you want it gone.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Configuration overrides
|
|
257
|
+
|
|
258
|
+
Almost no one needs these β defaults are correct for the standard AgenticMail + Claude Code install. They exist for tests and unusual layouts.
|
|
259
|
+
|
|
260
|
+
| Env var | Default |
|
|
261
|
+
|---|---|
|
|
262
|
+
| `AGENTICMAIL_API_URL` | `http://127.0.0.1:3200` (or whatever `~/.agenticmail/config.json` says) |
|
|
263
|
+
| `AGENTICMAIL_MASTER_KEY` | Pulled from `~/.agenticmail/config.json` |
|
|
264
|
+
| `CLAUDE_CODE_CONFIG_PATH` | `~/.claude.json` |
|
|
265
|
+
| `CLAUDE_CODE_AGENTS_DIR` | `~/.claude/agents` |
|
|
266
|
+
|
|
267
|
+
Programmatic install (from another tool):
|
|
268
|
+
|
|
269
|
+
```ts
|
|
270
|
+
import { install, status, uninstall } from '@agenticmail/claudecode';
|
|
271
|
+
|
|
272
|
+
await install({
|
|
273
|
+
apiUrl: 'http://127.0.0.1:3200',
|
|
274
|
+
masterKey: 'mk_...',
|
|
275
|
+
// any other ResolveConfigOptions field
|
|
276
|
+
});
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Troubleshooting
|
|
282
|
+
|
|
283
|
+
**`AgenticMail API unreachable at http://127.0.0.1:3200`**
|
|
284
|
+
The master API isn't running. Start it with `agenticmail start`.
|
|
285
|
+
|
|
286
|
+
**`AgenticMail master key not found`**
|
|
287
|
+
You haven't run `agenticmail setup` yet, or your `~/.agenticmail/config.json` is missing/malformed.
|
|
288
|
+
|
|
289
|
+
**Subagents don't show up in Claude Code after install.**
|
|
290
|
+
Restart Claude Code. Subagent discovery happens at session start.
|
|
291
|
+
|
|
292
|
+
**The MCP server says "Neither AGENTICMAIL_API_KEY nor AGENTICMAIL_MASTER_KEY is set".**
|
|
293
|
+
Re-run `agenticmail claudecode` β your bridge agent's key may have been rotated. Install is safe to re-run any time.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## License
|
|
298
|
+
|
|
299
|
+
MIT Β© Ope Olatunji
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "claudecode",
|
|
3
|
+
"name": "agenticmail",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"displayName": "π AgenticMail for Claude Code",
|
|
6
|
+
"description": "π Surfaces every AgenticMail agent as a native Claude Code subagent (callable through the Agent tool) and exposes the full 62-tool AgenticMail MCP toolbelt to any Claude Code session.",
|
|
7
|
+
"author": "agenticmail",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"homepage": "https://github.com/agenticmail/agenticmail",
|
|
10
|
+
|
|
11
|
+
"host": {
|
|
12
|
+
"name": "claude-code",
|
|
13
|
+
"displayName": "Claude Code",
|
|
14
|
+
"homepage": "https://claude.com/claude-code"
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"configSchema": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"properties": {
|
|
21
|
+
"apiUrl": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "AgenticMail master API URL",
|
|
24
|
+
"default": "http://127.0.0.1:3200"
|
|
25
|
+
},
|
|
26
|
+
"claudeConfigPath": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "Path to Claude Code's user-level config (default: ~/.claude.json)",
|
|
29
|
+
"default": "~/.claude.json"
|
|
30
|
+
},
|
|
31
|
+
"agentsDir": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "Directory where per-agent Claude Code subagent files are written (default: ~/.claude/agents)",
|
|
34
|
+
"default": "~/.claude/agents"
|
|
35
|
+
},
|
|
36
|
+
"mcpServerName": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"description": "Key used under mcpServers in Claude Code config (default: agenticmail)",
|
|
39
|
+
"default": "agenticmail"
|
|
40
|
+
},
|
|
41
|
+
"bridgeAgentName": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "Name of the dedicated AgenticMail agent that represents Claude Code (auto-provisioned if absent)",
|
|
44
|
+
"default": "claudecode"
|
|
45
|
+
},
|
|
46
|
+
"subagentPrefix": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Prefix for the generated Claude Code subagent names (default: agenticmail-)",
|
|
49
|
+
"default": "agenticmail-"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"required": []
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
"writes": [
|
|
56
|
+
"~/.claude.json (mcpServers.<mcpServerName> block only)",
|
|
57
|
+
"~/.claude/agents/<subagentPrefix><agent>.md (one per AgenticMail agent)"
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
"tools": [
|
|
61
|
+
"Surfaces all 62 @agenticmail/mcp tools to Claude Code (mcp__agenticmail__*)",
|
|
62
|
+
"Plus one Claude Code subagent per AgenticMail agent (Agent { subagent_type: 'agenticmail-<name>' })"
|
|
63
|
+
],
|
|
64
|
+
|
|
65
|
+
"requires": {
|
|
66
|
+
"services": [
|
|
67
|
+
"AgenticMail master API (default http://127.0.0.1:3200)"
|
|
68
|
+
],
|
|
69
|
+
"bins": [
|
|
70
|
+
"agenticmail-mcp (from @agenticmail/mcp; auto-installed as a dependency)"
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
}
|