courier-mcp 0.1.2 → 0.1.4
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 +21 -17
- package/package.json +21 -29
- package/server.mjs +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# courier-mcp
|
|
2
2
|
|
|
3
|
-
**MCP server for AI agent email.** Create
|
|
3
|
+
**MCP server for durable AI agent email identity infrastructure.** Create persistent inboxes, receive OTP codes, extract magic links, handle verification emails — not temporary burner mail.
|
|
4
4
|
|
|
5
5
|
For Hermes, Claude Code, Cursor, and any MCP-compatible agent framework.
|
|
6
6
|
|
|
@@ -25,31 +25,35 @@ Then add to your MCP config:
|
|
|
25
25
|
|
|
26
26
|
| Tool | Description |
|
|
27
27
|
|------|-------------|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
28
|
+
| create_inbox | Create a durable agent email identity. No signup. |
|
|
29
|
+
| wait_for_email | Poll until an email arrives. Auto-retry. |
|
|
30
|
+
| extract_otp | Get verification codes from inbox. |
|
|
31
|
+
| extract_magic_link | Get magic links from inbox. |
|
|
32
|
+
| get_inbox | Check inbox contents. |
|
|
33
33
|
|
|
34
34
|
## Why agents need this
|
|
35
35
|
|
|
36
36
|
AI agents can't use Gmail. They can't do OAuth flows. They can't click "verify email" links in a browser.
|
|
37
37
|
|
|
38
|
-
Courier gives agents
|
|
39
|
-
- **OTP / 2FA codes** for autonomous signup
|
|
40
|
-
- **Magic links** for passwordless login
|
|
41
|
-
- **Password reset URLs** for account recovery
|
|
42
|
-
- **Verification emails** for account confirmation
|
|
38
|
+
Courier gives agents durable email identities — not disposable temp inboxes. Your agent's persistent inbox:
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
- Survives restarts and memory loss
|
|
41
|
+
- Uses scoped credentials (read/write/admin per inbox)
|
|
42
|
+
- Supports recovery through token rotation and CISO rebind
|
|
43
|
+
- Receives real SMTP mail and auto-extracts codes and links
|
|
44
|
+
- Provides governed outbound in controlled activation
|
|
45
|
+
|
|
46
|
+
## Credential Storage
|
|
47
|
+
|
|
48
|
+
After creating an inbox, store credentials immediately in a secure file:
|
|
49
|
+
~/.hermes/secrets/courier/<agent_id>.json with chmod 600 permissions.
|
|
50
|
+
|
|
51
|
+
Store only the file path in memory — never the full token.
|
|
45
52
|
|
|
46
53
|
## Related packages
|
|
47
54
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- **autonomous-email** — Semantic discovery alias
|
|
51
|
-
- **courier-protocol** — Core protocol
|
|
52
|
-
- **courier-agent-email** — Python client (pip)
|
|
55
|
+
- courier-protocol — Durable email identity protocol
|
|
56
|
+
- courier-agent-email — Python client (pip)
|
|
53
57
|
|
|
54
58
|
## Links
|
|
55
59
|
|
package/package.json
CHANGED
|
@@ -1,48 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "courier-mcp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "MCP server for
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"courier-mcp": "./server.mjs"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"server.mjs"
|
|
11
|
-
],
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "MCP server for durable AI agent email identity infrastructure. Persistent inboxes, OTP/magic link extraction, scoped credentials, and governed outbound without Gmail OAuth.",
|
|
12
5
|
"keywords": [
|
|
13
6
|
"mcp",
|
|
14
|
-
"
|
|
15
|
-
"ai agent
|
|
7
|
+
"durable email identity",
|
|
8
|
+
"ai agent email",
|
|
9
|
+
"persistent inbox",
|
|
16
10
|
"otp extraction",
|
|
17
|
-
"verification code",
|
|
18
11
|
"magic link",
|
|
19
|
-
"
|
|
12
|
+
"agent infrastructure",
|
|
20
13
|
"autonomous email",
|
|
21
|
-
"temp inbox",
|
|
22
|
-
"email verification",
|
|
23
14
|
"agent email",
|
|
24
15
|
"hermes agent",
|
|
25
16
|
"claude code",
|
|
26
17
|
"cursor",
|
|
27
18
|
"openai agents",
|
|
28
|
-
"
|
|
29
|
-
"ai authentication",
|
|
30
|
-
"email api",
|
|
31
|
-
"smtp",
|
|
19
|
+
"email verification",
|
|
32
20
|
"courier",
|
|
33
|
-
"ai-agents",
|
|
34
|
-
"verification",
|
|
35
|
-
"otp",
|
|
36
|
-
"magic-links",
|
|
37
21
|
"autonomous-agents",
|
|
38
|
-
"
|
|
22
|
+
"modelcontextprotocol"
|
|
39
23
|
],
|
|
40
24
|
"license": "MIT",
|
|
41
25
|
"repository": {
|
|
42
26
|
"type": "git",
|
|
43
|
-
"url": "https://github.com/antonioac1/courier"
|
|
27
|
+
"url": "git+https://github.com/antonioac1/courier.git"
|
|
44
28
|
},
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
"homepage": "https://getcourier.dev",
|
|
30
|
+
"type": "module",
|
|
31
|
+
"main": "server.mjs",
|
|
32
|
+
"bin": {
|
|
33
|
+
"courier-mcp": "server.mjs"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"README.md",
|
|
37
|
+
"server.mjs",
|
|
38
|
+
"package.json"
|
|
39
|
+
]
|
|
40
|
+
}
|
package/server.mjs
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* courier-mcp — MCP server for Courier
|
|
5
5
|
*
|
|
6
|
-
* Give your AI agent
|
|
7
|
-
*
|
|
6
|
+
* Give your AI agent a durable email identity in under 5 seconds.
|
|
7
|
+
* Persistent inbox, OTP/magic link extraction, scoped credentials.
|
|
8
8
|
*
|
|
9
9
|
* MCP Tools:
|
|
10
|
-
* create_inbox — Create a
|
|
10
|
+
* create_inbox — Create a durable agent email inbox (no signup)
|
|
11
11
|
* get_inbox — Check an inbox for received emails
|
|
12
12
|
* wait_for_email — Poll until an email arrives (auto-retry)
|
|
13
13
|
* extract_otp — Extract verification codes from inbox
|
|
@@ -36,7 +36,7 @@ async function handleRequest(req) {
|
|
|
36
36
|
tools: [
|
|
37
37
|
{
|
|
38
38
|
name: 'create_inbox',
|
|
39
|
-
description: 'Create a
|
|
39
|
+
description: 'Create a durable agent email identity. Persistent inbox with scoped credentials.. No signup, no auth.',
|
|
40
40
|
inputSchema: {
|
|
41
41
|
type: 'object',
|
|
42
42
|
properties: {
|
|
@@ -239,4 +239,4 @@ for await (const line of rl) {
|
|
|
239
239
|
} catch (e) {
|
|
240
240
|
send({ jsonrpc: '2.0', error: { code: -32700, message: e.message }, id: null });
|
|
241
241
|
}
|
|
242
|
-
}
|
|
242
|
+
}
|