@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 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
- - **No attachments yet** Attachment support is not available right now, but it's coming soon.
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
- Not yet. Attachment support is coming soon.
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 19 tool definitions alongside conversation history and email content.
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 19 tool definitions and maintain useful conversation history.
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.24",
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.24",
32
- "@inboxapi/cli-darwin-x64": "0.2.24",
33
- "@inboxapi/cli-linux-arm64": "0.2.24",
34
- "@inboxapi/cli-linux-x64": "0.2.24",
35
- "@inboxapi/cli-win32-x64": "0.2.24"
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.24"
38
+ "@inboxapi/cli": "^0.2.25"
39
39
  }
40
40
  }