@inboxapi/cli 0.2.24 → 0.2.25
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/README.md +90 -5
- package/claude/hooks/credential-check.js +4 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ Give your AI agent its own personal email address. Send, receive, read, search,
|
|
|
13
13
|
- [Installation](#installation)
|
|
14
14
|
- [Getting Started](#getting-started)
|
|
15
15
|
- [Commands](#commands)
|
|
16
|
+
- [CLI Commands](#cli-commands)
|
|
16
17
|
- [Usage with MCP Clients](#usage-with-mcp-clients)
|
|
17
18
|
- [Skills for Claude Code](#skills-for-claude-code)
|
|
18
19
|
- [Development](#development)
|
|
@@ -45,8 +46,9 @@ The CLI acts as a local bridge between your AI client and the [InboxAPI](https:/
|
|
|
45
46
|
- **This is your agent's personal email** — InboxAPI gives your AI agent its own email address for personal use. It is not a transactional email service — don't use it for bulk sending, marketing, or application notifications.
|
|
46
47
|
- **Weekly send limit** — Each account can send to up to five unique email addresses per week. This resets weekly.
|
|
47
48
|
- **Check your spam folder** — Each agent gets its own subdomain, and new subdomains don't have email reputation yet. Early messages may land in your recipient's spam or junk folder. Adding your agent's email address to your contacts or allowlist helps. Delivery improves over time as recipients interact with your agent's emails.
|
|
48
|
-
- **
|
|
49
|
+
- **Attachments** — Send attachments via CLI subcommands using `--attachment` (local files) or `--attachment-ref` (server-side attachments by ID).
|
|
49
50
|
- **No rich text yet** — Emails are sent as plain text only. Rich text (HTML) support is coming soon.
|
|
51
|
+
- **Owner verification** — Link your email to your agent's account with `verify_owner` to enable account recovery and remove trial restrictions. Recommended as a first step after setup.
|
|
50
52
|
|
|
51
53
|
## Installation
|
|
52
54
|
|
|
@@ -152,9 +154,70 @@ inboxapi setup-skills
|
|
|
152
154
|
inboxapi setup-skills --force # Overwrite existing skills and hooks
|
|
153
155
|
```
|
|
154
156
|
|
|
157
|
+
## CLI Commands
|
|
158
|
+
|
|
159
|
+
For agents with shell access, CLI subcommands are the simplest way to use InboxAPI — no MCP, JSON-RPC, or base64 knowledge needed.
|
|
160
|
+
|
|
161
|
+
### `send-email`
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
inboxapi send-email --to user@example.com --subject "Hello" --body "Hi there"
|
|
165
|
+
inboxapi send-email --to user@example.com --subject "Report" --body "See attached" --attachment ./report.pdf
|
|
166
|
+
inboxapi send-email --to user@example.com --subject "Fwd" --body "See attached" --attachment-ref 9f0206bb-...
|
|
167
|
+
inboxapi send-email --to "a@b.com, c@d.com" --subject "Hi" --body "Hello" --cc "cc@b.com" --priority high
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Supports `--cc`, `--bcc`, `--html-body`, `--from-name`, `--priority`, `--attachment` (local files, repeatable), and `--attachment-ref` (server-side attachment IDs, repeatable).
|
|
171
|
+
|
|
172
|
+
### `get-emails`
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
inboxapi get-emails --limit 5
|
|
176
|
+
inboxapi get-emails --limit 5 --human
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### `get-email`
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
inboxapi get-email "<message-id>"
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### `search-emails`
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
inboxapi search-emails --query "invoice" --limit 10
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### `get-attachment`
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
inboxapi get-attachment abc123 # prints signed URL as JSON
|
|
195
|
+
inboxapi get-attachment abc123 --output ./file.pdf # downloads to file
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### `send-reply`
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
inboxapi send-reply --message-id "<msg-id>" --body "Thanks!"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### `forward-email`
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
inboxapi forward-email --message-id "<msg-id>" --to recipient@example.com --note "FYI"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### `help`
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
inboxapi help # CLI-focused help with examples
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
All CLI commands support the `--human` flag for human-readable output instead of JSON.
|
|
217
|
+
|
|
155
218
|
## Usage with MCP Clients
|
|
156
219
|
|
|
157
|
-
InboxAPI CLI works as an MCP STDIO transport. Point your MCP client at the `inboxapi` binary:
|
|
220
|
+
InboxAPI CLI also works as an MCP STDIO transport. Point your MCP client at the `inboxapi` binary:
|
|
158
221
|
|
|
159
222
|
**Claude Desktop** (`claude_desktop_config.json`):
|
|
160
223
|
|
|
@@ -307,6 +370,20 @@ Maybe at first. Each agent gets a brand-new subdomain, and new senders don't hav
|
|
|
307
370
|
|
|
308
371
|
Email reaches the entire existing internet — billions of people and businesses already use it. A2A requires both sides to implement the protocol. When your agent needs to reach someone outside its own ecosystem, email is the universal option. Agents will likely need both.
|
|
309
372
|
|
|
373
|
+
### Why email instead of WhatsApp, Telegram, or other messaging apps?
|
|
374
|
+
|
|
375
|
+
**Scalability** — You can programmatically create hundreds of email addresses. WhatsApp, Telegram, and Signal all require phone numbers and verification. Scaling past a handful of accounts is impractical, often against terms of service, and sometimes impossible without physical SIM cards.
|
|
376
|
+
|
|
377
|
+
**No gatekeeping** — Email is the only communication channel where you can create an identity without a phone number, government ID, or approval from a platform owner. No single company controls who gets an email address.
|
|
378
|
+
|
|
379
|
+
**Open protocol** — Email is federated and vendor-neutral. WhatsApp, Discord, and Telegram are proprietary — they can revoke API access, ban bot accounts, or change the rules at any time. Email can't be shut off by one company.
|
|
380
|
+
|
|
381
|
+
**ToS compliance** — Most messaging platforms explicitly prohibit automated accounts or have strict approval processes (WhatsApp Business API requires business verification, Telegram restricts bot-to-bot messaging). Email has no such restrictions — automated sending is a first-class use case.
|
|
382
|
+
|
|
383
|
+
**Universal reach** — Messaging channels are siloed. Your Telegram bot can't reach a WhatsApp user. Email reaches anyone with an email address — which is effectively everyone.
|
|
384
|
+
|
|
385
|
+
For multi-channel agent frameworks like [OpenClaw](https://openclaw.ai/), email fills a gap that messaging platforms structurally cannot — unlimited, programmable identity creation with no platform approval required. InboxAPI gives agents that capability out of the box.
|
|
386
|
+
|
|
310
387
|
### What are the send limits?
|
|
311
388
|
|
|
312
389
|
Each account can email up to 5 unique external email addresses per week. Emails to other @inboxapi.ai addresses don't count against this limit. The limit resets weekly.
|
|
@@ -317,7 +394,7 @@ When all 5 slots are in use, the least recently used entry is auto-replaced afte
|
|
|
317
394
|
|
|
318
395
|
### Can I send attachments?
|
|
319
396
|
|
|
320
|
-
|
|
397
|
+
Yes. Attachment support is fully available. Supply an array of `EmailAttachment` objects containing the `filename`, `content_type`, and base64-encoded `content` in the `attachments` field when calling `send_email`.
|
|
321
398
|
|
|
322
399
|
### Can I send HTML emails?
|
|
323
400
|
|
|
@@ -327,6 +404,14 @@ HTML email support is coming soon. Currently emails are sent as plain text.
|
|
|
327
404
|
|
|
328
405
|
Your agent's credentials are stored locally at `~/.config/inboxapi/credentials.json` (Linux) or `~/Library/Application Support/inboxapi/credentials.json` (macOS). The CLI handles token creation and refresh automatically — your agent never needs to manage tokens manually.
|
|
329
406
|
|
|
407
|
+
### What if my agent loses access?
|
|
408
|
+
|
|
409
|
+
If your agent's credentials are lost or corrupted, you can recover the account using the `account_recover` tool — but only if you previously linked your email via `verify_owner`. Recovery revokes all existing tokens and issues new credentials. Without a verified owner email, there is no way to recover a locked-out account.
|
|
410
|
+
|
|
411
|
+
### What is owner verification?
|
|
412
|
+
|
|
413
|
+
Owner verification links your personal email address to your agent's InboxAPI account. Your agent calls `verify_owner` with your email, you receive a 6-digit code, and your agent submits it to complete verification. Once verified, you can recover the account if credentials are ever lost, and trial restrictions are removed from the account.
|
|
414
|
+
|
|
330
415
|
### What domains are blocked from sending?
|
|
331
416
|
|
|
332
417
|
InboxAPI maintains a denylist that blocks sending to government (.gov), military (.mil), intelligence, law enforcement, nuclear/critical infrastructure, and disposable email domains.
|
|
@@ -344,7 +429,7 @@ Every inbound email is classified into one of four trust levels:
|
|
|
344
429
|
|
|
345
430
|
### What AI model should I use with InboxAPI?
|
|
346
431
|
|
|
347
|
-
Your model must support **tool/function calling** — MCP requires this. We recommend a minimum **32K token context window** to comfortably fit InboxAPI's
|
|
432
|
+
Your model must support **tool/function calling** — MCP requires this. We recommend a minimum **32K token context window** to comfortably fit InboxAPI's 21 tool definitions alongside conversation history and email content.
|
|
348
433
|
|
|
349
434
|
**Model recommendations by tier:**
|
|
350
435
|
|
|
@@ -356,7 +441,7 @@ Your model must support **tool/function calling** — MCP requires this. We reco
|
|
|
356
441
|
|
|
357
442
|
**Datamarking overhead:** InboxAPI applies datamarking (spotlighting) to untrusted email content, replacing whitespace with Unicode marker characters. This can slightly increase token consumption when processing emails from external senders. Models with larger context windows handle this more comfortably.
|
|
358
443
|
|
|
359
|
-
**What won't work:** Models without tool/function calling support, models with context windows under 16K tokens, and very small local models (under ~7B parameters) that lack reliable tool calling. These will struggle to fit InboxAPI's
|
|
444
|
+
**What won't work:** Models without tool/function calling support, models with context windows under 16K tokens, and very small local models (under ~7B parameters) that lack reliable tool calling. These will struggle to fit InboxAPI's 21 tool definitions and maintain useful conversation history.
|
|
360
445
|
|
|
361
446
|
### What stops an agent from buying things or authorizing transactions via email?
|
|
362
447
|
|
|
@@ -50,8 +50,11 @@ function main() {
|
|
|
50
50
|
try {
|
|
51
51
|
const creds = JSON.parse(fs.readFileSync(credPath, "utf8"));
|
|
52
52
|
const email = creds.email || creds.account_name || "(unknown)";
|
|
53
|
+
const encryptionStatus = creds.encryption_secret
|
|
54
|
+
? "enabled (secret present in credentials)"
|
|
55
|
+
: "not configured";
|
|
53
56
|
process.stderr.write(
|
|
54
|
-
`\n[InboxAPI] Authenticated as: ${email}\n\n`,
|
|
57
|
+
`\n[InboxAPI] Authenticated as: ${email}\n[InboxAPI] Encryption: ${encryptionStatus}\n\n`,
|
|
55
58
|
);
|
|
56
59
|
} catch {
|
|
57
60
|
process.stderr.write(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inboxapi/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.25",
|
|
4
4
|
"description": "📧 Email for your AI 🤖",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"test": "cargo test"
|
|
29
29
|
},
|
|
30
30
|
"optionalDependencies": {
|
|
31
|
-
"@inboxapi/cli-darwin-arm64": "0.2.
|
|
32
|
-
"@inboxapi/cli-darwin-x64": "0.2.
|
|
33
|
-
"@inboxapi/cli-linux-arm64": "0.2.
|
|
34
|
-
"@inboxapi/cli-linux-x64": "0.2.
|
|
35
|
-
"@inboxapi/cli-win32-x64": "0.2.
|
|
31
|
+
"@inboxapi/cli-darwin-arm64": "0.2.25",
|
|
32
|
+
"@inboxapi/cli-darwin-x64": "0.2.25",
|
|
33
|
+
"@inboxapi/cli-linux-arm64": "0.2.25",
|
|
34
|
+
"@inboxapi/cli-linux-x64": "0.2.25",
|
|
35
|
+
"@inboxapi/cli-win32-x64": "0.2.25"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@inboxapi/cli": "^0.2.
|
|
38
|
+
"@inboxapi/cli": "^0.2.25"
|
|
39
39
|
}
|
|
40
40
|
}
|