{
  "markdown": "# Postfleet MCP\n\nGive an AI agent its own email address. [Postfleet](https://postfleet.ai) is email infrastructure for\nagents — inbound is parsed, classified, extracted to your schema, and screened for prompt injection\nbefore your agent reads a word.\n\nThis repo holds the server source and its plugin manifests. It is a **mirror** — the code is\ndeveloped in the Postfleet application repo and published to npm as\n[`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp); open issues here, send patches\nhere, and they land upstream. The server ships two ways:\n\n| | |\n|---|---|\n| **Hosted** (no install) | `https://api.postfleet.ai/api/mcp`, streamable HTTP, `Authorization: Bearer pf_...` |\n| **Local** (stdio) | [`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp) via `npx` |\n\nGet a `pf_` API key at [postfleet.ai](https://postfleet.ai).\n\n## Tools\n\n`list_mailboxes`, `create_mailbox`, `list_domains`, `create_domain`, `verify_domain`,\n`send_email`, `reply_email`, `list_inbox`, `read_email`, `wait_for_email` — plus the draft\nlifecycle (`create_draft`, `list_drafts`, `get_draft`, `update_draft`, `send_draft`,\n`delete_draft`) for flows where a human approves before mail goes out. A send that lands in\nthat gate returns **202 pending_approval**, which is not a failure.\n\nEvery tool is thin-over-REST — it calls the same `/api/v1/` endpoints your key already reaches\n([OpenAPI](https://postfleet.ai/openapi.json)), so auth, scoping, and quotas are enforced once.\n\n## Install\n\n### Cursor marketplace plugin\n\nThe manifests in this repo (`mcp.json`, `.cursor-plugin/plugin.json`) declare\n`headers.Authorization = Bearer ${POSTFLEET_API_KEY}` for the hosted server and the same\nvariable for local `npx @postfleet/mcp`. Installing the plugin should prompt for that key and\nattach it as a real Bearer header — a raw URL add without the header will 401 on\n`initialize` until a key is supplied or the hosted connect card finishes OAuth.\n\n### Cursor (manual)\n\n```json\n{\n  \"mcpServers\": {\n    \"postfleet\": {\n      \"url\": \"https://api.postfleet.ai/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer pf_your_key_here\" }\n    }\n  }\n}\n```\n\n### Local stdio (`npx -y @postfleet/mcp`)\n\n```bash\nnpx -y @postfleet/mcp\n```\n\nAny MCP client that speaks stdio can run that command with `POSTFLEET_API_KEY` set:\n\n```json\n{\n  \"mcpServers\": {\n    \"postfleet\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@postfleet/mcp\"],\n      \"env\": { \"POSTFLEET_API_KEY\": \"pf_your_key_here\" }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add postfleet --env POSTFLEET_API_KEY=pf_your_key_here -- npx -y @postfleet/mcp\n```\n\n`POSTFLEET_API_URL` (default `https://api.postfleet.ai`) overrides the API origin for staging or\nself-hosted deployments.\n\n## Keys\n\nKeys are scoped — `bootstrap` can only create mailboxes, `api` covers mail operations, `mcp` is the\none to hand a client. Use a separate key per workload so you can revoke one without breaking the\nrest. Never commit a key; the manifests in this repo deliberately contain none.\n\n## Links\n\n- Registry listing: `ai.postfleet/postfleet` on the [MCP Registry](https://registry.modelcontextprotocol.io)\n- npm: [`@postfleet/mcp`](https://www.npmjs.com/package/@postfleet/mcp)\n- Docs: [postfleet.ai/docs/mcp](https://postfleet.ai/docs/mcp)\n\n## Build from source\n\n```bash\nnpm install && npm run build   # tsup → dist/\n```\n\nMIT licensed.\n",
  "bytes": 3378,
  "sha": "d4b09c0da6c908bb9aee9fda8a6eb57710069e6fc3dbd708103cff9683fdcfc3",
  "repo_slug": "thestral12/postfleet-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_postfleet_postfleet_fe3c6e74/readme"
}