Postfleet
Give an AI agent its own email address: send, reply, read, and wait for mail.
Open source Repository Open in the app JSON README (API)
About
Give an AI agent its own email address: send, reply, read, and wait for mail.
Details
- Kind
- MCP servers
- Topic
- Communication
- Publisher
- ai.postfleet
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.1.4
- Last push
- 2026-08-24T19:36:49Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:00:36
- Updated
- 2026-09-02 18:00:25
- Origin id
ai.postfleet/postfleet
README
# Postfleet MCP
Give an AI agent its own email address. [Postfleet](https://postfleet.ai) is email infrastructure for
agents — inbound is parsed, classified, extracted to your schema, and screened for prompt injection
before your agent reads a word.
This repo holds the server source and its plugin manifests. It is a **mirror** — the code is
developed in the Postfleet application repo and published to npm as
[`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp); open issues here, send patches
here, and they land upstream. The server ships two ways:
| | |
|---|---|
| **Hosted** (no install) | `https://api.postfleet.ai/api/mcp`, streamable HTTP, `Authorization: Bearer pf_...` |
| **Local** (stdio) | [`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp) via `npx` |
Get a `pf_` API key at [postfleet.ai](https://postfleet.ai).
## Tools
`list_mailboxes`, `create_mailbox`, `list_domains`, `create_domain`, `verify_domain`,
`send_email`, `reply_email`, `list_inbox`, `read_email`, `wait_for_email` — plus the draft
lifecycle (`create_draft`, `list_drafts`, `get_draft`, `update_draft`, `send_draft`,
`delete_draft`) for flows where a human approves before mail goes out. A send that lands in
that gate returns **202 pending_approval**, which is not a failure.
Every tool is thin-over-REST — it calls the same `/api/v1/` endpoints your key already reaches
([OpenAPI](https://postfleet.ai/openapi.json)), so auth, scoping, and quotas are enforced once.
## Install
### Cursor marketplace plugin
The manifests in this repo (`mcp.json`, `.cursor-plugin/plugin.json`) declare
`headers.Authorization = Bearer ${POSTFLEET_API_KEY}` for the hosted server and the same
variable for local `npx @postfleet/mcp`. Installing the plugin should prompt for that key and
attach it as a real Bearer header — a raw URL add without the header will 401 on
`initialize` until a key is supplied or the hosted connect card finishes OAuth.
### Cursor (manual)
```json
{
"mcpServers": {
"postfleet": {
"url": "https://api.postfleet.ai/api/mcp",
"headers": { "Authorization": "Bearer pf_your_key_here" }
}
}
}
```
### Local stdio (`npx -y @postfleet/mcp`)
```bash
npx -y @postfleet/mcp
```
Any MCP client that speaks stdio can run that command with `POSTFLEET_API_KEY` set:
```json
{
"mcpServers": {
"postfleet": {
"command": "npx",
"args": ["-y", "@postfleet/mcp"],
"env": { "POSTFLEET_API_KEY": "pf_your_key_here" }
}
}
}
```
### Claude Code
```bash
claude mcp add postfleet --env POSTFLEET_API_KEY=pf_your_key_here -- npx -y @postfleet/mcp
```
`POSTFLEET_API_URL` (default `https://api.postfleet.ai`) overrides the API origin for staging or
self-hosted deployments.
## Keys
Keys are scoped — `bootstrap` can only create mailboxes, `api` covers mail operations, `mcp` is the
one to hand a client. Use a separate key per workload so you can revoke one without breaking the
rest. Never commit a key; the manifests in this repo deliberately contain none.
## Links
- Registry listing: `ai.postfleet/postfleet` on the [MCP Registry](https://registry.modelcontextprotocol.io)
- npm: [`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp)
- Docs: [postfleet.ai/docs/mcp](https://postfleet.ai/docs/mcp)
## Build from source
```bash
npm install && npm run build # tsup → dist/
```
MIT licensed.