@agenticmail/mcp 0.5.42 → 0.5.43
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/REFERENCE.md +87 -791
- package/package.json +1 -1
package/REFERENCE.md
CHANGED
|
@@ -1,843 +1,139 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AgenticMail MCP Server — Tool Reference
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **62 tools** available via MCP stdio transport (`@agenticmail/mcp`)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
| Property | Value |
|
|
10
|
-
|----------|-------|
|
|
11
|
-
| Name | `AgenticMail` |
|
|
12
|
-
| Version | `0.2.26` |
|
|
13
|
-
| Description | `Email infrastructure for AI agents — by Ope Olatunji` |
|
|
14
|
-
| Transport | `StdioServerTransport` (stdin/stdout) |
|
|
15
|
-
| Capabilities | Tools, Resources |
|
|
16
|
-
| SDK | `@modelcontextprotocol/sdk ^1.12.0` |
|
|
17
|
-
|
|
18
|
-
## Environment Variables
|
|
19
|
-
|
|
20
|
-
| Variable | Default | Description |
|
|
21
|
-
|----------|---------|-------------|
|
|
22
|
-
| `AGENTICMAIL_API_URL` | `http://127.0.0.1:3100` | API server URL |
|
|
23
|
-
| `AGENTICMAIL_API_KEY` | `''` | Agent API key |
|
|
24
|
-
| `AGENTICMAIL_MASTER_KEY` | `''` | Master key (for admin tools) |
|
|
25
|
-
|
|
26
|
-
## API Request Function
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
async function apiRequest(
|
|
30
|
-
method: string,
|
|
31
|
-
path: string,
|
|
32
|
-
body?: unknown,
|
|
33
|
-
useMasterKey = false,
|
|
34
|
-
timeoutMs = 30_000
|
|
35
|
-
): Promise<any>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
- Base URL: `${API_URL}/api/agenticmail${path}`
|
|
39
|
-
- Auth: `Authorization: Bearer ${useMasterKey && MASTER_KEY ? MASTER_KEY : API_KEY}`
|
|
40
|
-
- Content-Type: `application/json` (only when body provided)
|
|
41
|
-
- Timeout: `AbortSignal.timeout(timeoutMs)`
|
|
42
|
-
- Error: Reads response text, throws `Error: API error {status}: {text}`
|
|
43
|
-
- Response: Parses JSON if Content-Type includes `application/json`, returns `null` otherwise
|
|
44
|
-
|
|
45
|
-
## Master Key Tools
|
|
46
|
-
|
|
47
|
-
These tools automatically use the master key instead of the agent key:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
create_account, setup_email_relay, setup_email_domain, setup_guide,
|
|
51
|
-
setup_gmail_alias, setup_payment, purchase_domain, check_gateway_status,
|
|
52
|
-
send_test_email, delete_agent, deletion_reports, cleanup_agents
|
|
53
|
-
```
|
|
7
|
+
## Core
|
|
54
8
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## Tool Definitions
|
|
58
|
-
|
|
59
|
-
### send_email
|
|
60
|
-
|
|
61
|
-
Send email from agent's mailbox. External emails scanned for sensitive content.
|
|
62
|
-
|
|
63
|
-
**Input Schema:**
|
|
64
|
-
| Field | Type | Required | Description |
|
|
65
|
-
|-------|------|----------|-------------|
|
|
66
|
-
| `to` | string | Yes | Recipient email |
|
|
67
|
-
| `subject` | string | Yes | Email subject |
|
|
68
|
-
| `text` | string | No | Plain text body |
|
|
69
|
-
| `html` | string | No | HTML body |
|
|
70
|
-
| `cc` | string | No | CC recipients |
|
|
71
|
-
| `inReplyTo` | string | No | Message-ID for threading |
|
|
72
|
-
| `references` | string | No | Reference chain |
|
|
73
|
-
| `attachments` | array | No | File attachments |
|
|
74
|
-
|
|
75
|
-
**Attachment schema:** `{ filename: string, content: string (required), contentType: string, encoding: string }`
|
|
76
|
-
|
|
77
|
-
**Behavior:**
|
|
78
|
-
- Posts to `POST /mail/send`
|
|
79
|
-
- If blocked: Returns pending ID, schedules follow-up reminders
|
|
80
|
-
- If sent with warnings: Returns message ID + warnings
|
|
81
|
-
- If clean: Returns message ID
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
### list_inbox
|
|
86
|
-
|
|
87
|
-
**Input Schema:**
|
|
88
|
-
| Field | Type | Required | Default | Range |
|
|
89
|
-
|-------|------|----------|---------|-------|
|
|
90
|
-
| `limit` | number | No | 20 | 1–100 |
|
|
91
|
-
| `offset` | number | No | 0 | 0+ |
|
|
92
|
-
|
|
93
|
-
**Behavior:** `GET /mail/inbox?limit=N&offset=N`
|
|
94
|
-
|
|
95
|
-
**Response format:** `"UID: {uid} | From: {address} | Subject: {subject} | Date: {date}"` per message.
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
### read_email
|
|
100
|
-
|
|
101
|
-
**Input Schema:**
|
|
102
|
-
| Field | Type | Required |
|
|
103
|
-
|-------|------|----------|
|
|
104
|
-
| `uid` | number | Yes (positive integer) |
|
|
105
|
-
|
|
106
|
-
**Behavior:** `GET /mail/messages/{uid}`
|
|
107
|
-
|
|
108
|
-
**Response format:** Multi-line with From, To, Subject, Date, Message-ID, In-Reply-To, body text, attachments list, security section (spam score, sanitization, attachment warnings, phishing alerts).
|
|
109
|
-
|
|
110
|
-
**Security section includes:**
|
|
111
|
-
- `[SPAM]` or `[WARNING]` with score and category
|
|
112
|
-
- `[SANITIZED]` with detection types
|
|
113
|
-
- Attachment risk levels: `[CRITICAL]` (double extensions), `[HIGH]` (executables, HTML), `[MEDIUM]` (archives)
|
|
114
|
-
- Phishing rule matches: `ph_mismatched_display_url`, `ph_data_uri`, `ph_homograph`, `ph_spoofed_sender`, `de_webhook_exfil`, `pi_invisible_unicode`
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
### reply_email
|
|
119
|
-
|
|
120
|
-
**Input Schema:**
|
|
121
|
-
| Field | Type | Required | Default |
|
|
122
|
-
|-------|------|----------|---------|
|
|
123
|
-
| `uid` | number | Yes | — |
|
|
124
|
-
| `text` | string | Yes | — |
|
|
125
|
-
| `html` | string | No | — |
|
|
126
|
-
| `replyAll` | boolean | No | false |
|
|
127
|
-
|
|
128
|
-
**Behavior:**
|
|
129
|
-
1. `GET /mail/messages/{uid}` — fetch original
|
|
130
|
-
2. Build reply: `Re: {subject}`, `In-Reply-To: {messageId}`, `References: {chain}`
|
|
131
|
-
3. If `replyAll`: includes all original recipients
|
|
132
|
-
4. Appends quoted body: `\n\n--- Original message ---\n{original text}`
|
|
133
|
-
5. `POST /mail/send` with threading headers
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
### forward_email
|
|
138
|
-
|
|
139
|
-
**Input Schema:**
|
|
140
|
-
| Field | Type | Required |
|
|
141
|
-
|-------|------|----------|
|
|
142
|
-
| `uid` | number | Yes |
|
|
143
|
-
| `to` | string | Yes |
|
|
144
|
-
| `text` | string | No |
|
|
145
|
-
|
|
146
|
-
**Behavior:**
|
|
147
|
-
1. Fetch original message
|
|
148
|
-
2. Build forward: `Fwd: {subject}`
|
|
149
|
-
3. Body: `{optional text}\n\n--- Forwarded message ---\n{original text}`
|
|
150
|
-
4. Preserves original attachments as base64
|
|
151
|
-
5. `POST /mail/send`
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
### search_emails
|
|
156
|
-
|
|
157
|
-
**Input Schema:**
|
|
158
|
-
| Field | Type | Required | Description |
|
|
159
|
-
|-------|------|----------|-------------|
|
|
160
|
-
| `from` | string | No | Sender filter |
|
|
161
|
-
| `to` | string | No | Recipient filter |
|
|
162
|
-
| `subject` | string | No | Subject filter |
|
|
163
|
-
| `text` | string | No | Body text search |
|
|
164
|
-
| `since` | string | No | ISO 8601 date (after) |
|
|
165
|
-
| `before` | string | No | ISO 8601 date (before) |
|
|
166
|
-
| `seen` | boolean | No | Read status filter |
|
|
167
|
-
| `searchRelay` | boolean | No | Also search relay account (default: false) |
|
|
168
|
-
|
|
169
|
-
**Behavior:** `POST /mail/search`
|
|
170
|
-
|
|
171
|
-
**Response:** Local UIDs + relay results (if enabled) with `uid, source, account, messageId, subject, from, to, date, flags`.
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
### import_relay_email
|
|
176
|
-
|
|
177
|
-
**Input Schema:**
|
|
178
|
-
| Field | Type | Required |
|
|
179
|
-
|-------|------|----------|
|
|
180
|
-
| `uid` | number | Yes |
|
|
181
|
-
|
|
182
|
-
**Behavior:** `POST /mail/import-relay` — imports email from connected relay into local inbox.
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
### delete_email
|
|
187
|
-
|
|
188
|
-
**Input Schema:** `{ uid: number (required, positive integer) }`
|
|
189
|
-
|
|
190
|
-
**Behavior:** `DELETE /mail/messages/{uid}`
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
### move_email
|
|
195
|
-
|
|
196
|
-
**Input Schema:**
|
|
197
|
-
| Field | Type | Required | Default |
|
|
198
|
-
|-------|------|----------|---------|
|
|
199
|
-
| `uid` | number | Yes | — |
|
|
200
|
-
| `to` | string | Yes | — |
|
|
201
|
-
| `from` | string | No | "INBOX" |
|
|
202
|
-
|
|
203
|
-
**Behavior:** `POST /mail/messages/{uid}/move`
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
### mark_read
|
|
208
|
-
|
|
209
|
-
**Input Schema:** `{ uid: number (required) }`
|
|
210
|
-
|
|
211
|
-
**Behavior:** `POST /mail/messages/{uid}/seen`
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
### mark_unread
|
|
216
|
-
|
|
217
|
-
**Input Schema:** `{ uid: number (required) }`
|
|
218
|
-
|
|
219
|
-
**Behavior:** `POST /mail/messages/{uid}/unseen`
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
### inbox_digest
|
|
224
|
-
|
|
225
|
-
**Input Schema:**
|
|
226
|
-
| Field | Type | Default | Range |
|
|
227
|
-
|-------|------|---------|-------|
|
|
228
|
-
| `limit` | number | 20 | 1–50 |
|
|
229
|
-
| `offset` | number | 0 | 0+ |
|
|
230
|
-
| `folder` | string | "INBOX" | — |
|
|
231
|
-
| `previewLength` | number | 200 | 50–500 |
|
|
232
|
-
|
|
233
|
-
**Behavior:** `GET /mail/digest?limit=N&offset=N&folder=F&previewLength=N`
|
|
234
|
-
|
|
235
|
-
**Response format:** Compact digest with `[*]` for unread, `[r]` for read, sender, subject, date, and text preview.
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
### wait_for_email
|
|
240
|
-
|
|
241
|
-
**Input Schema:**
|
|
242
|
-
| Field | Type | Default | Range |
|
|
243
|
-
|-------|------|---------|-------|
|
|
244
|
-
| `timeout` | number | 120 | 1–300 seconds |
|
|
245
|
-
|
|
246
|
-
**Behavior:**
|
|
247
|
-
1. Opens SSE connection to `GET /events`
|
|
248
|
-
2. Listens for `new` (email) or `task` events
|
|
249
|
-
3. Falls back to polling if SSE unavailable
|
|
250
|
-
4. Uses `AbortController` for timeout
|
|
251
|
-
|
|
252
|
-
**Response:**
|
|
253
|
-
```json
|
|
254
|
-
{
|
|
255
|
-
"arrived": true,
|
|
256
|
-
"mode": "push",
|
|
257
|
-
"eventType": "email",
|
|
258
|
-
"timedOut": false,
|
|
259
|
-
"uid": 123,
|
|
260
|
-
"subject": "...",
|
|
261
|
-
"from": "..."
|
|
262
|
-
}
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
### list_folders
|
|
268
|
-
|
|
269
|
-
**Behavior:** `GET /mail/folders`
|
|
270
|
-
|
|
271
|
-
**Response:** Folder paths, one per line.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
### list_folder
|
|
276
|
-
|
|
277
|
-
**Input Schema:**
|
|
278
|
-
| Field | Type | Required | Default | Range |
|
|
279
|
-
|-------|------|----------|---------|-------|
|
|
280
|
-
| `folder` | string | Yes | — | — |
|
|
281
|
-
| `limit` | number | No | 20 | 1–100 |
|
|
282
|
-
| `offset` | number | No | 0 | 0+ |
|
|
283
|
-
|
|
284
|
-
**Behavior:** `GET /mail/folders/{folder}?limit=N&offset=N`
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
### Batch Operations
|
|
289
|
-
|
|
290
|
-
All batch tools validate: `Array.isArray(uids) && uids.length > 0`
|
|
291
|
-
|
|
292
|
-
**batch_delete:** `{ uids: number[], folder?: string }` → `POST /mail/batch/delete`
|
|
293
|
-
|
|
294
|
-
**batch_mark_read:** `{ uids: number[], folder?: string }` → `POST /mail/batch/seen`
|
|
295
|
-
|
|
296
|
-
**batch_mark_unread:** `{ uids: number[], folder?: string }` → `POST /mail/batch/unseen`
|
|
297
|
-
|
|
298
|
-
**batch_move:** `{ uids: number[], to: string, from?: string }` → `POST /mail/batch/move`
|
|
299
|
-
|
|
300
|
-
**batch_read:** `{ uids: number[], folder?: string }` → `POST /mail/batch/read`
|
|
301
|
-
Returns 500-char preview per message.
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
### manage_contacts
|
|
306
|
-
|
|
307
|
-
**Input Schema:**
|
|
308
|
-
| Field | Type | Required |
|
|
309
|
-
|-------|------|----------|
|
|
310
|
-
| `action` | "list" \| "add" \| "delete" | Yes |
|
|
311
|
-
| `email` | string | For "add" |
|
|
312
|
-
| `name` | string | No (for "add") |
|
|
313
|
-
| `id` | string | For "delete" |
|
|
314
|
-
|
|
315
|
-
**API calls:** `GET /contacts`, `POST /contacts`, `DELETE /contacts/{id}`
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
### manage_drafts
|
|
320
|
-
|
|
321
|
-
**Input Schema:**
|
|
322
|
-
| Field | Type | Required |
|
|
323
|
-
|-------|------|----------|
|
|
324
|
-
| `action` | "list" \| "create" \| "update" \| "send" \| "delete" | Yes |
|
|
325
|
-
| `to` | string | For "create" |
|
|
326
|
-
| `subject` | string | For "create" |
|
|
327
|
-
| `text` | string | For "create"/"update" |
|
|
328
|
-
| `html` | string | No |
|
|
329
|
-
| `id` | string | For "update"/"send"/"delete" |
|
|
330
|
-
|
|
331
|
-
**API calls:** `GET /drafts`, `POST /drafts`, `PUT /drafts/{id}`, `POST /drafts/{id}/send`, `DELETE /drafts/{id}`
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
### manage_signatures
|
|
336
|
-
|
|
337
|
-
**Input Schema:**
|
|
338
|
-
| Field | Type | Required |
|
|
339
|
-
|-------|------|----------|
|
|
340
|
-
| `action` | "list" \| "create" \| "delete" | Yes |
|
|
341
|
-
| `name` | string | For "create" |
|
|
342
|
-
| `text` | string | For "create" |
|
|
343
|
-
| `isDefault` | boolean | No |
|
|
344
|
-
| `id` | string | For "delete" |
|
|
9
|
+
### `whoami`
|
|
10
|
+
Get the current agent\.
|
|
345
11
|
|
|
346
|
-
|
|
12
|
+
### `update_metadata`
|
|
13
|
+
Update the current agent\.
|
|
347
14
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
### manage_templates
|
|
351
|
-
|
|
352
|
-
**Input Schema:**
|
|
353
|
-
| Field | Type | Required |
|
|
354
|
-
|-------|------|----------|
|
|
355
|
-
| `action` | "list" \| "create" \| "delete" | Yes |
|
|
356
|
-
| `name` | string | For "create" |
|
|
357
|
-
| `subject` | string | For "create" |
|
|
358
|
-
| `text` | string | For "create" |
|
|
359
|
-
| `id` | string | For "delete" |
|
|
360
|
-
|
|
361
|
-
**API calls:** `GET /templates`, `POST /templates`, `DELETE /templates/{id}`
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
### template_send
|
|
366
|
-
|
|
367
|
-
**Input Schema:**
|
|
368
|
-
| Field | Type | Required |
|
|
369
|
-
|-------|------|----------|
|
|
370
|
-
| `id` | string | Yes |
|
|
371
|
-
| `to` | string | Yes |
|
|
372
|
-
| `variables` | object | No |
|
|
373
|
-
| `cc` | string | No |
|
|
374
|
-
| `bcc` | string | No |
|
|
375
|
-
|
|
376
|
-
**Behavior:** `POST /templates/{id}/send`
|
|
377
|
-
|
|
378
|
-
Replaces `{{ variableName }}` patterns in subject and body.
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
### manage_scheduled
|
|
383
|
-
|
|
384
|
-
**Input Schema:**
|
|
385
|
-
| Field | Type | Required |
|
|
386
|
-
|-------|------|----------|
|
|
387
|
-
| `action` | "create" \| "list" \| "cancel" | Yes |
|
|
388
|
-
| `to` | string | For "create" |
|
|
389
|
-
| `subject` | string | For "create" |
|
|
390
|
-
| `text` | string | For "create" |
|
|
391
|
-
| `sendAt` | string | For "create" |
|
|
392
|
-
| `html` | string | No |
|
|
393
|
-
| `cc` | string | No |
|
|
394
|
-
| `bcc` | string | No |
|
|
395
|
-
| `id` | string | For "cancel" |
|
|
396
|
-
|
|
397
|
-
**Supported `sendAt` formats:** ISO 8601, relative (`in 30 minutes`), named (`tomorrow 8am`), day-based (`next monday 9am`), human (`02-14-2026 3:30 PM EST`), casual (`tonight`).
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
### manage_tags
|
|
402
|
-
|
|
403
|
-
**Input Schema:**
|
|
404
|
-
| Field | Type | Required |
|
|
405
|
-
|-------|------|----------|
|
|
406
|
-
| `action` | "list" \| "create" \| "delete" \| "tag_message" \| "untag_message" \| "get_messages" \| "get_message_tags" | Yes |
|
|
407
|
-
| `name` | string | For "create" |
|
|
408
|
-
| `color` | string | No (hex, for "create") |
|
|
409
|
-
| `id` | string | For "delete"/"tag_message"/"untag_message"/"get_messages" |
|
|
410
|
-
| `uid` | number | For "tag_message"/"untag_message"/"get_message_tags" |
|
|
411
|
-
| `folder` | string | No (for message operations) |
|
|
412
|
-
|
|
413
|
-
**API calls:** `GET /tags`, `POST /tags`, `DELETE /tags/{id}`, `POST /tags/{id}/messages`, `DELETE /tags/{id}/messages/{uid}`, `GET /tags/{id}/messages`, `GET /messages/{uid}/tags`
|
|
414
|
-
|
|
415
|
-
---
|
|
416
|
-
|
|
417
|
-
### manage_rules
|
|
418
|
-
|
|
419
|
-
**Input Schema:**
|
|
420
|
-
| Field | Type | Required |
|
|
421
|
-
|-------|------|----------|
|
|
422
|
-
| `action` | "list" \| "create" \| "delete" | Yes |
|
|
423
|
-
| `name` | string | For "create" |
|
|
424
|
-
| `priority` | number | No (for "create") |
|
|
425
|
-
| `conditions` | object | For "create" |
|
|
426
|
-
| `actions` | object | For "create" |
|
|
427
|
-
| `id` | string | For "delete" |
|
|
428
|
-
|
|
429
|
-
**Conditions:** `from_contains`, `subject_contains`, `subject_regex`, `to_contains`, `has_attachment`
|
|
430
|
-
|
|
431
|
-
**Actions:** `move_to`, `mark_read`, `delete`, `add_tags`
|
|
15
|
+
## Email Management
|
|
432
16
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
### manage_spam
|
|
436
|
-
|
|
437
|
-
**Input Schema:**
|
|
438
|
-
| Field | Type | Required |
|
|
439
|
-
|-------|------|----------|
|
|
440
|
-
| `action` | "list" \| "report" \| "not_spam" \| "score" | Yes |
|
|
441
|
-
| `uid` | number | For "report"/"not_spam"/"score" |
|
|
442
|
-
| `folder` | string | No (for "report"/"score") |
|
|
443
|
-
| `limit` | number | No (for "list") |
|
|
444
|
-
| `offset` | number | No (for "list") |
|
|
445
|
-
|
|
446
|
-
**API calls:** `GET /mail/spam`, `POST /mail/messages/{uid}/spam`, `POST /mail/messages/{uid}/not-spam`, `GET /mail/messages/{uid}/spam-score`
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
### manage_pending_emails
|
|
451
|
-
|
|
452
|
-
**Input Schema:**
|
|
453
|
-
| Field | Type | Required |
|
|
454
|
-
|-------|------|----------|
|
|
455
|
-
| `action` | "list" \| "view" \| "approve" \| "reject" | Yes |
|
|
456
|
-
| `id` | string | For "view"/"approve"/"reject" |
|
|
457
|
-
|
|
458
|
-
**Critical:** `approve` and `reject` actions are **explicitly blocked** — returns error message directing agent to notify the owner.
|
|
459
|
-
|
|
460
|
-
**API calls:** `GET /mail/pending`, `GET /mail/pending/{id}`
|
|
461
|
-
|
|
462
|
-
---
|
|
463
|
-
|
|
464
|
-
### create_folder
|
|
17
|
+
### `delete_email`
|
|
18
|
+
Delete an email by its UID.
|
|
465
19
|
|
|
466
|
-
|
|
20
|
+
### `mark_read`
|
|
21
|
+
Mark an email as read.
|
|
467
22
|
|
|
468
|
-
|
|
23
|
+
### `mark_unread`
|
|
24
|
+
Mark an email as unread.
|
|
469
25
|
|
|
470
|
-
|
|
26
|
+
### `list_folder`
|
|
27
|
+
List messages in a specific folder.
|
|
471
28
|
|
|
472
|
-
###
|
|
29
|
+
### `create_folder`
|
|
30
|
+
Create a new mail folder for organizing emails.
|
|
473
31
|
|
|
474
|
-
|
|
32
|
+
## Drafts & Templates
|
|
475
33
|
|
|
476
|
-
|
|
34
|
+
### `template_send`
|
|
35
|
+
Send an email using a saved template with variable substitution. Variables like {{name}} are replaced..
|
|
477
36
|
|
|
478
|
-
|
|
37
|
+
## Batch Operations
|
|
479
38
|
|
|
480
|
-
###
|
|
39
|
+
### `batch_read`
|
|
40
|
+
Read multiple emails at once by UIDs. Returns full parsed content for each message in a single call..
|
|
481
41
|
|
|
482
|
-
|
|
42
|
+
### `batch_delete`
|
|
43
|
+
Delete multiple emails by UIDs.
|
|
483
44
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|-------|------|----------|-------------|
|
|
487
|
-
| `name` | string | Yes | Agent name |
|
|
488
|
-
| `domain` | string | No | Default: localhost |
|
|
489
|
-
| `role` | enum | No | secretary, assistant, researcher, writer, custom |
|
|
45
|
+
### `batch_mark_read`
|
|
46
|
+
Mark multiple emails as read.
|
|
490
47
|
|
|
491
|
-
|
|
48
|
+
### `batch_mark_unread`
|
|
49
|
+
Mark multiple emails as unread.
|
|
492
50
|
|
|
493
|
-
|
|
51
|
+
### `batch_move`
|
|
52
|
+
Move multiple emails to another folder.
|
|
494
53
|
|
|
495
|
-
|
|
54
|
+
## Agent Management
|
|
496
55
|
|
|
497
|
-
|
|
56
|
+
### `list_agents`
|
|
57
|
+
List all AI agents in the system with their email addresses and roles. Use this to discover which agents you can communicate with via message_agent..
|
|
498
58
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|-------|------|----------|
|
|
502
|
-
| `name` | string | Yes |
|
|
503
|
-
| `reason` | string | No |
|
|
59
|
+
### `create_account`
|
|
60
|
+
Create a new agent email account (requires master API key).
|
|
504
61
|
|
|
505
|
-
|
|
62
|
+
### `delete_agent`
|
|
63
|
+
Delete an agent account. Archives all emails and generates a deletion report before removing the account permanently.
|
|
506
64
|
|
|
507
|
-
|
|
65
|
+
### `deletion_reports`
|
|
66
|
+
List past agent deletion reports or retrieve a specific report by ID. Shows archived email summaries from deleted agents.
|
|
508
67
|
|
|
509
|
-
|
|
68
|
+
## Agent Coordination
|
|
510
69
|
|
|
511
|
-
|
|
70
|
+
### `message_agent`
|
|
71
|
+
Send a message to another AI agent by name. The message is delivered to their email inbox.
|
|
512
72
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|-------|------|----------|
|
|
516
|
-
| `id` | string | No (specific report) |
|
|
73
|
+
### `call_agent`
|
|
74
|
+
Synchronous RPC: assign a task to another agent, notify them via email (wakes wait_for_email), and wait for the result. Times out after specified duration..
|
|
517
75
|
|
|
518
|
-
|
|
76
|
+
### `check_messages`
|
|
77
|
+
Check for new unread messages from other agents or external senders. Returns a summary of pending communications.
|
|
519
78
|
|
|
520
|
-
|
|
79
|
+
### `check_tasks`
|
|
80
|
+
Check for pending tasks assigned to you (or a specific agent) or tasks you assigned to others.
|
|
521
81
|
|
|
522
|
-
###
|
|
82
|
+
### `claim_task`
|
|
83
|
+
Claim a pending task assigned to you.
|
|
523
84
|
|
|
524
|
-
|
|
85
|
+
### `submit_result`
|
|
86
|
+
Submit the result for a claimed task, marking it as completed.
|
|
525
87
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|-------|------|----------|
|
|
529
|
-
| `action` | "list_inactive" \| "cleanup" \| "set_persistent" | Yes |
|
|
530
|
-
| `hours` | number | No (for list/cleanup) |
|
|
531
|
-
| `dryRun` | boolean | No (for cleanup) |
|
|
532
|
-
| `agentId` | string | For "set_persistent" |
|
|
533
|
-
| `persistent` | boolean | For "set_persistent" |
|
|
88
|
+
### `wait_for_email`
|
|
89
|
+
Wait for a new email or task notification using push notifications (SSE). Blocks until an email arrives, a task is assigned to you, or timeout is reached.
|
|
534
90
|
|
|
535
|
-
|
|
91
|
+
## Contacts, Tags & Rules
|
|
536
92
|
|
|
537
|
-
|
|
93
|
+
## Security & Moderation
|
|
538
94
|
|
|
539
|
-
|
|
95
|
+
## Setup & Configuration
|
|
540
96
|
|
|
541
|
-
|
|
97
|
+
### `setup_guide`
|
|
98
|
+
Get a comparison of email setup modes (Relay vs Domain) with difficulty levels, requirements, pros/cons, and step-by-step instructions. Show this to users who want to set up real internet email..
|
|
542
99
|
|
|
543
|
-
|
|
100
|
+
### `setup_gmail_alias`
|
|
101
|
+
Get step-by-step instructions (with exact field values) to add an agent email as a Gmail "Send mail as" alias. Returns the Gmail settings URL and all field values.
|
|
544
102
|
|
|
545
|
-
###
|
|
103
|
+
### `setup_payment`
|
|
104
|
+
Get instructions for adding a payment method to Cloudflare (required before purchasing domains). Returns Option A (self-service link) and Option B (browser automation steps).
|
|
546
105
|
|
|
547
|
-
|
|
106
|
+
### `purchase_domain`
|
|
107
|
+
Search for available domains via Cloudflare Registrar (requires master API key). NOTE: Cloudflare API only supports READ access — domains must be purchased manually at https://dash.cloudflare.com or from another registrar (then point nameservers to Cloudflare)..
|
|
548
108
|
|
|
549
|
-
|
|
109
|
+
## SMS / Phone
|
|
550
110
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
### list_agents
|
|
554
|
-
|
|
555
|
-
**Behavior:** `GET /accounts/directory`
|
|
111
|
+
### `sms_setup`
|
|
112
|
+
Configure SMS/phone number access via Google Voice. The user must have a Google Voice account with SMS-to-email forwarding enabled.
|
|
556
113
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
### message_agent
|
|
114
|
+
### `sms_send`
|
|
115
|
+
Send an SMS text message via Google Voice. Records the message and provides instructions for sending via Google Voice web interface.
|
|
560
116
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|-------|------|----------|-------------|
|
|
564
|
-
| `agent` | string | Yes | Target agent name |
|
|
565
|
-
| `subject` | string | Yes | Email subject |
|
|
566
|
-
| `text` | string | Yes | Message body |
|
|
567
|
-
| `priority` | enum | No | normal, high, urgent |
|
|
117
|
+
### `sms_messages`
|
|
118
|
+
List SMS messages (inbound and outbound). Use direction filter to see only received or sent messages..
|
|
568
119
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
2. If priority=high: prefix `[HIGH] `
|
|
572
|
-
3. If priority=urgent: prefix `[URGENT] `
|
|
573
|
-
4. `POST /mail/send` to `{agent}@localhost`
|
|
120
|
+
### `sms_check_code`
|
|
121
|
+
Check for recent verification/OTP codes received via SMS. Scans inbound SMS for common code patterns (6-digit, 4-digit, alphanumeric).
|
|
574
122
|
|
|
575
|
-
|
|
123
|
+
### `sms_read_voice`
|
|
124
|
+
Get instructions and URL for reading SMS directly from Google Voice web (FASTEST method). Returns the voice.google.com URL and guidance for browser-based SMS reading.
|
|
576
125
|
|
|
577
|
-
###
|
|
126
|
+
### `sms_record`
|
|
127
|
+
Record an SMS message read from Google Voice web or any other source. Saves to SMS database and extracts verification codes.
|
|
578
128
|
|
|
579
|
-
|
|
129
|
+
### `sms_parse_email`
|
|
130
|
+
Parse an SMS from a forwarded Google Voice email. Use this when you receive an email from Google Voice containing an SMS.
|
|
580
131
|
|
|
581
|
-
|
|
132
|
+
### `sms_config`
|
|
133
|
+
Get the current SMS/phone number configuration for this agent. Shows whether SMS is enabled, the phone number, and forwarding email..
|
|
582
134
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
### check_tasks
|
|
586
|
-
|
|
587
|
-
**Input Schema:**
|
|
588
|
-
| Field | Type | Required |
|
|
589
|
-
|-------|------|----------|
|
|
590
|
-
| `direction` | "incoming" \| "outgoing" | Yes |
|
|
591
|
-
| `assignee` | string | No (for incoming only) |
|
|
592
|
-
|
|
593
|
-
**Behavior:** `GET /tasks/pending?assignee={name}` or `GET /tasks/assigned`
|
|
594
|
-
|
|
595
|
-
---
|
|
596
|
-
|
|
597
|
-
### claim_task
|
|
598
|
-
|
|
599
|
-
**Input Schema:** `{ id: string (required) }`
|
|
600
|
-
|
|
601
|
-
**Behavior:** `POST /tasks/{id}/claim`
|
|
602
|
-
|
|
603
|
-
---
|
|
604
|
-
|
|
605
|
-
### submit_result
|
|
606
|
-
|
|
607
|
-
**Input Schema:**
|
|
608
|
-
| Field | Type | Required |
|
|
609
|
-
|-------|------|----------|
|
|
610
|
-
| `id` | string | Yes |
|
|
611
|
-
| `result` | object | No |
|
|
612
|
-
|
|
613
|
-
**Behavior:** `POST /tasks/{id}/result`
|
|
614
|
-
|
|
615
|
-
---
|
|
616
|
-
|
|
617
|
-
### call_agent
|
|
618
|
-
|
|
619
|
-
**Input Schema:**
|
|
620
|
-
| Field | Type | Required | Default | Range |
|
|
621
|
-
|-------|------|----------|---------|-------|
|
|
622
|
-
| `target` | string | Yes | — | — |
|
|
623
|
-
| `task` | string | Yes | — | — |
|
|
624
|
-
| `payload` | object | No | — | — |
|
|
625
|
-
| `timeout` | number | No | 180 | 5–300 seconds |
|
|
626
|
-
|
|
627
|
-
**Behavior:** `POST /tasks/rpc` — holds connection open, returns result or timeout.
|
|
628
|
-
|
|
629
|
-
---
|
|
630
|
-
|
|
631
|
-
### Gateway Tools
|
|
632
|
-
|
|
633
|
-
**setup_email_relay** (master):
|
|
634
|
-
```
|
|
635
|
-
{ provider: "gmail"|"outlook"|"custom", email: string, password: string,
|
|
636
|
-
smtpHost?: string, smtpPort?: number, imapHost?: string, imapPort?: number,
|
|
637
|
-
agentName?: string, agentRole?: string, skipDefaultAgent?: boolean }
|
|
638
|
-
```
|
|
639
|
-
|
|
640
|
-
**setup_email_domain** (master):
|
|
641
|
-
```
|
|
642
|
-
{ cloudflareToken: string, cloudflareAccountId: string,
|
|
643
|
-
domain?: string, purchase?: { keywords: string[], tld?: string },
|
|
644
|
-
gmailRelay?: { email: string, appPassword: string } }
|
|
645
|
-
```
|
|
646
|
-
|
|
647
|
-
**setup_gmail_alias** (master):
|
|
648
|
-
```
|
|
649
|
-
{ agentEmail: string, agentDisplayName?: string }
|
|
650
|
-
```
|
|
651
|
-
|
|
652
|
-
**setup_guide** (master): No input.
|
|
653
|
-
|
|
654
|
-
**setup_payment** (master): No input.
|
|
655
|
-
|
|
656
|
-
**purchase_domain** (master):
|
|
657
|
-
```
|
|
658
|
-
{ keywords: string[], tld?: string }
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
**check_gateway_status** (master): No input.
|
|
662
|
-
|
|
663
|
-
**send_test_email** (master):
|
|
664
|
-
```
|
|
665
|
-
{ to: string }
|
|
666
|
-
```
|
|
667
|
-
|
|
668
|
-
---
|
|
669
|
-
|
|
670
|
-
## Outbound Guard Rules
|
|
671
|
-
|
|
672
|
-
### PII Detection (18 rules)
|
|
673
|
-
|
|
674
|
-
| Rule ID | Severity | Pattern |
|
|
675
|
-
|---------|----------|---------|
|
|
676
|
-
| `ob_ssn` | HIGH | `\b\d{3}-\d{2}-\d{4}\b` |
|
|
677
|
-
| `ob_ssn_obfuscated` | HIGH | Obfuscated SSN variants |
|
|
678
|
-
| `ob_credit_card` | HIGH | `\b(?:\d{4}[-\s]?){3}\d{4}\b` |
|
|
679
|
-
| `ob_phone` | MEDIUM | Phone number patterns |
|
|
680
|
-
| `ob_bank_routing` | HIGH | Routing/account numbers |
|
|
681
|
-
| `ob_drivers_license` | HIGH | Driver's license patterns |
|
|
682
|
-
| `ob_dob` | MEDIUM | Date of birth with keywords |
|
|
683
|
-
| `ob_passport` | HIGH | Passport numbers |
|
|
684
|
-
| `ob_tax_id` | HIGH | EIN/TIN patterns |
|
|
685
|
-
| `ob_itin` | HIGH | ITIN patterns |
|
|
686
|
-
| `ob_medicare` | HIGH | Medicare/Medicaid IDs |
|
|
687
|
-
| `ob_immigration` | HIGH | Immigration A-numbers |
|
|
688
|
-
| `ob_pin` | MEDIUM | PIN codes |
|
|
689
|
-
| `ob_security_qa` | MEDIUM | Security Q&A patterns |
|
|
690
|
-
| `ob_iban` | HIGH | IBAN patterns |
|
|
691
|
-
| `ob_swift` | MEDIUM | SWIFT/BIC codes |
|
|
692
|
-
| `ob_crypto_wallet` | HIGH | BTC/ETH/XMR wallet addresses |
|
|
693
|
-
| `ob_wire_transfer` | HIGH | Wire transfer instructions |
|
|
694
|
-
|
|
695
|
-
### Credential Detection (19 rules)
|
|
696
|
-
|
|
697
|
-
| Rule ID | Severity | Pattern |
|
|
698
|
-
|---------|----------|---------|
|
|
699
|
-
| `ob_api_key` | HIGH | API key patterns |
|
|
700
|
-
| `ob_aws_key` | HIGH | `AKIA[A-Z0-9]{16}` |
|
|
701
|
-
| `ob_password_value` | HIGH | Password field patterns |
|
|
702
|
-
| `ob_private_key` | HIGH | PEM private key headers |
|
|
703
|
-
| `ob_bearer_token` | HIGH | Bearer token patterns |
|
|
704
|
-
| `ob_connection_string` | HIGH | DB connection strings |
|
|
705
|
-
| `ob_github_token` | HIGH | GitHub token patterns |
|
|
706
|
-
| `ob_stripe_key` | HIGH | Stripe key patterns |
|
|
707
|
-
| `ob_jwt` | HIGH | JWT token patterns |
|
|
708
|
-
| `ob_webhook_url` | HIGH | Slack/Discord webhook URLs |
|
|
709
|
-
| `ob_env_block` | HIGH | Consecutive ENV variable lines |
|
|
710
|
-
| `ob_seed_phrase` | HIGH | Crypto seed/recovery phrases |
|
|
711
|
-
| `ob_2fa_codes` | HIGH | 2FA backup codes |
|
|
712
|
-
| `ob_credential_pair` | HIGH | Username+password pairs |
|
|
713
|
-
| `ob_oauth_token` | HIGH | OAuth tokens |
|
|
714
|
-
| `ob_vpn_creds` | HIGH | VPN credentials |
|
|
715
|
-
|
|
716
|
-
### System Internals (3 rules)
|
|
717
|
-
|
|
718
|
-
| Rule ID | Severity | Pattern |
|
|
719
|
-
|---------|----------|---------|
|
|
720
|
-
| `ob_private_ip` | MEDIUM | Private IP ranges (10.x, 172.16-31.x, 192.168.x) |
|
|
721
|
-
| `ob_file_path` | MEDIUM | File paths (/home, /Users, /etc, C:\\) |
|
|
722
|
-
| `ob_env_variable` | MEDIUM | Environment variable assignments |
|
|
723
|
-
|
|
724
|
-
### Owner Privacy (2 rules)
|
|
725
|
-
|
|
726
|
-
| Rule ID | Severity | Pattern |
|
|
727
|
-
|---------|----------|---------|
|
|
728
|
-
| `ob_owner_info` | HIGH | Mentions of owner's personal info |
|
|
729
|
-
| `ob_personal_reveal` | HIGH | Reveals about agent's creator/operator |
|
|
730
|
-
|
|
731
|
-
### Attachment Risk
|
|
732
|
-
|
|
733
|
-
| Risk Level | Extensions |
|
|
734
|
-
|------------|------------|
|
|
735
|
-
| HIGH (keys) | `.pem`, `.key`, `.p12`, `.pfx`, `.env`, `.credentials`, `.keystore`, `.jks`, `.p8` |
|
|
736
|
-
| MEDIUM (data) | `.db`, `.sqlite`, `.sqlite3`, `.sql`, `.csv`, `.tsv`, `.json`, `.yml`, `.yaml`, `.conf`, `.config`, `.ini` |
|
|
737
|
-
| HIGH (exec) | `.exe`, `.bat`, `.cmd`, `.ps1`, `.sh`, `.msi`, `.scr`, `.com`, `.vbs`, `.js`, `.wsf`, `.hta`, `.cpl`, `.jar`, `.app`, `.dmg`, `.run` |
|
|
738
|
-
| MEDIUM (archive) | `.zip`, `.rar`, `.7z`, `.tar`, `.gz`, `.bz2`, `.xz`, `.cab`, `.iso` |
|
|
739
|
-
| CRITICAL | Double extensions (e.g., `.pdf.exe`) |
|
|
740
|
-
|
|
741
|
-
---
|
|
742
|
-
|
|
743
|
-
## Pending Email Follow-Up System
|
|
744
|
-
|
|
745
|
-
### Schedule
|
|
746
|
-
|
|
747
|
-
| Step | Delay | Description |
|
|
748
|
-
|------|-------|-------------|
|
|
749
|
-
| 0 | 12 hours | First reminder |
|
|
750
|
-
| 1 | 6 hours | Second reminder |
|
|
751
|
-
| 2 | 3 hours | Third reminder |
|
|
752
|
-
| 3 | 1 hour | Final reminder before cooldown |
|
|
753
|
-
| — | 3 days | Cooldown period |
|
|
754
|
-
| 4+ | Repeat cycle | Re-starts from 12 hours |
|
|
755
|
-
|
|
756
|
-
### Heartbeat
|
|
757
|
-
|
|
758
|
-
Every 5 minutes, checks all tracked pending emails. If externally resolved, cancels reminders.
|
|
759
|
-
|
|
760
|
-
### API
|
|
761
|
-
|
|
762
|
-
| Function | Description |
|
|
763
|
-
|----------|-------------|
|
|
764
|
-
| `scheduleFollowUp(pendingId, recipient, subject, checkFn)` | Start follow-ups |
|
|
765
|
-
| `drainFollowUps()` | Get and clear queued notifications |
|
|
766
|
-
| `cancelFollowUp(pendingId)` | Cancel specific email follow-ups |
|
|
767
|
-
| `cancelAllFollowUps()` | Cancel all follow-ups |
|
|
768
|
-
| `activeFollowUpCount()` | Count tracked emails |
|
|
769
|
-
|
|
770
|
-
### Message Templates
|
|
771
|
-
|
|
772
|
-
**Interim (steps 0–2):**
|
|
773
|
-
```
|
|
774
|
-
[FOLLOW-UP REMINDER {step+1}/{4}]
|
|
775
|
-
Your blocked email to {recipient} (subject: "{subject}") is still pending owner approval.
|
|
776
|
-
Please follow up with your owner — ask if they've reviewed the notification email.
|
|
777
|
-
Next reminder in {nextDelayH} hour(s).
|
|
778
|
-
Pending ID: {pendingId}
|
|
779
|
-
```
|
|
780
|
-
|
|
781
|
-
**Final (step 3):**
|
|
782
|
-
```
|
|
783
|
-
[FINAL FOLLOW-UP]
|
|
784
|
-
Your blocked email to {recipient} (subject: "{subject}") is STILL pending approval.
|
|
785
|
-
This is the last reminder before a 3-day cooldown. Please urgently remind your owner.
|
|
786
|
-
Pending ID: {pendingId}
|
|
787
|
-
```
|
|
788
|
-
|
|
789
|
-
**Cycle restart (after cooldown):**
|
|
790
|
-
```
|
|
791
|
-
[FOLLOW-UP REMINDER — cycle {cycle+2}]
|
|
792
|
-
Your blocked email to {recipient} has been pending for over {totalDays} days.
|
|
793
|
-
Starting a new follow-up cycle. Please remind your owner.
|
|
794
|
-
Pending ID: {pendingId}
|
|
795
|
-
```
|
|
796
|
-
|
|
797
|
-
---
|
|
798
|
-
|
|
799
|
-
## Resources
|
|
800
|
-
|
|
801
|
-
| URI | Name | MIME Type | Description |
|
|
802
|
-
|-----|------|-----------|-------------|
|
|
803
|
-
| `agenticmail://inbox` | Agent Inbox | `text/plain` | 20 most recent inbox messages |
|
|
804
|
-
|
|
805
|
-
**Format:** `{index}. UID: {uid} | From: {address} | Subject: {subject} | Date: {date}`
|
|
806
|
-
|
|
807
|
-
---
|
|
808
|
-
|
|
809
|
-
## Constants Summary
|
|
810
|
-
|
|
811
|
-
| Constant | Value |
|
|
812
|
-
|----------|-------|
|
|
813
|
-
| Default API URL | `http://127.0.0.1:3100` |
|
|
814
|
-
| API request timeout | 30,000ms |
|
|
815
|
-
| list_inbox max limit | 100 |
|
|
816
|
-
| list_folder max limit | 100 |
|
|
817
|
-
| inbox_digest max limit | 50 |
|
|
818
|
-
| inbox_digest max preview | 500 chars |
|
|
819
|
-
| wait_for_email max timeout | 300 seconds |
|
|
820
|
-
| wait_for_email default timeout | 120 seconds |
|
|
821
|
-
| call_agent max timeout | 300 seconds |
|
|
822
|
-
| call_agent default timeout | 180 seconds |
|
|
823
|
-
| batch_read preview length | 500 chars |
|
|
824
|
-
| Follow-up step delays | [12h, 6h, 3h, 1h] |
|
|
825
|
-
| Follow-up cooldown | 3 days (259,200,000ms) |
|
|
826
|
-
| Follow-up heartbeat | 5 minutes |
|
|
827
|
-
|
|
828
|
-
---
|
|
829
|
-
|
|
830
|
-
## Signal Handlers
|
|
831
|
-
|
|
832
|
-
| Signal | Action |
|
|
833
|
-
|--------|--------|
|
|
834
|
-
| `SIGTERM` | Close server, exit 0 |
|
|
835
|
-
| `SIGINT` | Close server, exit 0 |
|
|
836
|
-
|
|
837
|
-
Shutdown errors are silently ignored.
|
|
838
|
-
|
|
839
|
-
---
|
|
135
|
+
## Database Storage
|
|
840
136
|
|
|
841
|
-
|
|
137
|
+
### `storage`
|
|
138
|
+
Full database management system for agents. 28 actions: DDL (create/alter/drop/clone/rename tables & columns), DML (insert/upsert/query/aggregate/update/delete/truncate), indexing (create/list/drop/reindex), import/export (JSON/CSV, conflict handling), raw SQL, maintenance (stats/vacuum/analyze/explain), archiving.
|
|
842
139
|
|
|
843
|
-
[MIT](./LICENSE) - Ope Olatunji ([@ope-olatunji](https://github.com/ope-olatunji))
|