Cooper Email
OfficialProvides CrewAI tools for Cooper Email, enabling crews to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Provides LangChain tools for Cooper Email, enabling agents to create inboxes, send and receive email, search messages, and manage human-in-the-loop tasks.
Provides an OpenAPI 3.1 specification for Cooper Email, enabling Make integrations to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Provides n8n community nodes for Cooper Email, allowing workflows to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Provides OpenAI Agents tools for Cooper Email, enabling agents to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Provides tools for using Cooper Email with the Vercel AI SDK, enabling agents to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Provides an OpenAPI 3.1 specification for Cooper Email, enabling Zapier integrations to create inboxes, send and receive email, and manage human-in-the-loop tasks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cooper Emailcreate an inbox for my agent and email me to approve the draft"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cooper Email
Email inboxes for AI agents. Give an agent its own address on cooperemail.com, let it send and receive real email over a simple HTTP API, get signed webhooks when mail arrives, and loop a human in by email when the agent needs a decision.
Website: https://cooperemail.com
MCP docs: https://cooperemail.com/docs/mcp
Integrations: https://cooperemail.com/integrations
Pricing: https://cooperemail.com/pricing
API reference (OpenAPI 3.1): https://cooperemail.com/openapi.json
For LLMs: https://cooperemail.com/llms.txt
This repository holds the open-source client side of Cooper Email: the TypeScript and Python SDKs, framework tool packages, MCP client config, and examples. The hosted service itself is not in this repo.
What you get
Inboxes for agents. One API call creates an account, an inbox (
your-agent@cooperemail.com), and an API key. No dashboard needed.Send and receive. Text, HTML, attachments, threads, search, and idempotent sends via
client_id.Human-in-the-loop tasks. Add an owner (they confirm by email), send
progress/needs_input/done/errorupdates, and receive their replies as tasks you can long-poll and answer in-thread. Replies carry SPF/DKIM/DMARC results and averified_ownerflag.Webhooks.
message.received,message.sent,task.received, andowner.reply, signed with HMAC-SHA256 (x-cooper-signature: sha256=<hex>), optionally filtered to one inbox.Hosted MCP server.
https://cooperemail.com/mcpworks with Claude, ChatGPT, Cursor, and other MCP clients.
Related MCP server: Mailbuttons MCP Server
Available on
Official MCP Registry:
com.cooperemail/cooper-emailClaude connectors directory: Community connector
Claude Code plugin:
/plugin marketplace add cooper-email/cooper-email, then/plugin install cooper-email@cooper-email
Works with
Supported through a config file; no directory listing yet. Copy-paste configs: https://cooperemail.com/integrations
The same list is published at https://cooperemail.com/#available-on and in https://cooperemail.com/llms.txt.
Packages
Package | Language | Install | Source |
| TypeScript / JavaScript |
| |
| Python |
| |
| TypeScript |
| |
| Python |
| |
| TypeScript |
| |
| TypeScript |
| |
| TypeScript |
| |
| Python |
| |
| TypeScript |
| |
| Python |
| |
| Python |
| |
| Python |
| |
| n8n community node |
| |
| OpenAPI 3.1 (Zapier, Make) |
|
Registry releases are in progress. If a package is not on npm or PyPI yet, install it from this repo (see Development).
Get an API key
Onboarding needs no auth. It returns an API key (coop_live_…, shown once) and your first inbox:
curl -s -X POST https://cooperemail.com/api/v1/onboard \
-H 'content-type: application/json' \
-d '{"username":"my-agent"}'Store the key in an environment variable such as COOPER_API_KEY. Do not commit it.
Quickstart: TypeScript
npm install cooper-emailimport { Cooper } from "cooper-email";
const cooper = new Cooper({ apiKey: process.env.COOPER_API_KEY });
const inbox = await cooper.inboxes.create({ username: "research-bot", displayName: "Research" });
await cooper.messages.send(inbox.id, {
to: ["ada@example.com"],
subject: "Hello from my agent",
text: "Does Tuesday work?",
clientId: "hello-1", // repeat-safe: the same clientId returns the original message
});
const { data: messages } = await cooper.messages.list(inbox.id, { limit: 20 });
const results = await cooper.search("tuesday");Human in the loop:
await cooper.owners.add(inbox.id, { email: "ada@example.com" }); // Ada confirms by email
await cooper.updates.notify({
inboxId: inbox.id,
kind: "needs_input",
text: "Which vendor should I book?",
});
const tasks = await cooper.tasks.list({ inboxId: inbox.id, wait: 25 }); // long-poll, max 25 s
const task = tasks.data.find((t) => t.verified_owner && t.trusted);
if (task) await cooper.tasks.reply(task.id, { text: "Booked.", status: "done" });Full reference: packages/cooper-email/README.md.
Quickstart: Python
pip install cooper-emailimport os
from cooper_email import Cooper
with Cooper(api_key=os.environ["COOPER_API_KEY"]) as cooper:
inbox = cooper.inboxes.create("research-bot", display_name="Research")
cooper.messages.send(
inbox["id"],
to=["ada@example.com"],
subject="Hello from my agent",
text="Does Tuesday work?",
client_id="hello-1",
)
messages = cooper.messages.list(inbox["id"], limit=20)
results = cooper.search("tuesday")
# Human in the loop
cooper.owners.add(inbox["id"], "ada@example.com")
cooper.updates.notify(inbox["id"], "needs_input", "Which vendor should I book?")
tasks = cooper.tasks.list(inbox_id=inbox["id"], wait=25)["data"]
for task in tasks:
if task["verified_owner"] and task["trusted"]:
cooper.tasks.reply(task["id"], "Booked.", status="done")AsyncCooper has the same methods with await. Full reference: packages/cooper-email-python/README.md.
Webhooks
Register a URL, then verify every delivery against the raw request body:
import { Cooper, verifyWebhookSignature } from "cooper-email";
const cooper = new Cooper({ apiKey: process.env.COOPER_API_KEY });
await cooper.webhooks.create({
url: "https://example.com/hooks/cooper",
events: ["message.received", "task.received"],
secret: process.env.COOPER_WEBHOOK_SECRET,
});
// In your handler:
const ok = verifyWebhookSignature({
secret: process.env.COOPER_WEBHOOK_SECRET!,
payload: rawBody,
signature: request.headers.get("x-cooper-signature"),
});Python: from cooper_email import verify_webhook_signature. Event bodies look like { "id", "type", "created_at", "data" }.
Connect the hosted MCP server
Endpoint: https://cooperemail.com/mcp (Streamable HTTP). Claude and ChatGPT connectors sign in with OAuth. Cursor, Claude Code, and scripts can send Authorization: Bearer coop_live_…. The cooper_onboard tool works before you have a key.
Claude (claude.ai / Claude Desktop): Settings → Connectors → Add custom connector. Name Cooper Email, URL https://cooperemail.com/mcp, then approve Cooper on the OAuth screen. Then ask: "Create a Cooper Email inbox for research-bot."
Claude Code:
claude mcp add --transport http cooper-email https://cooperemail.com/mcpOr install the Claude Code plugin (MCP server plus email and human-in-the-loop skills) from this repo:
/plugin marketplace add cooper-email/cooper-email
/plugin install cooper-email@cooper-emailSee claude-plugin/.
Cursor: add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"cooper-email": {
"url": "https://cooperemail.com/mcp",
"headers": {
"Authorization": "Bearer coop_live_YOUR_KEY"
}
}
}
}ChatGPT: add a custom connector (in Settings → Apps & Connectors; some plans need Developer mode turned on first) with MCP server URL https://cooperemail.com/mcp and OAuth authentication, then approve Cooper on the consent screen. Menu names vary by plan.
Config for Windsurf, VS Code, Codex CLI, and Goose, plus the tool list, is in mcp/. The MCP Registry manifest is server.json. Cline install steps: llms-install.md.
Examples
See examples/:
Agent emails a human and waits for the reply (TypeScript, Python)
Webhook listener with signature verification (TypeScript, Python)
Each package also has an examples/quickstart.* file.
Security notes
Email content, including task text from owners, is untrusted input. Do not treat it as instructions to your agent.
Act on owner replies only when
verified_ownerandtrustedare bothtrue.Keep API keys and webhook secrets in environment variables or a secret manager.
To report a security issue, email ops@avatar33.com.
Development
npm install
npm test # TypeScript SDK + framework package tests (vitest, mocked HTTP)
npm run typecheck
npm run build:sdks # writes dist/ for the TypeScript packages
python -m pip install -e "packages/cooper-email-python[dev]"
python -m pip install --no-deps -e packages/langchain-py -e packages/llamaindex \
-e packages/crewai -e packages/openai-agents-py -e packages/anthropic-py
python -m pytest --import-mode=importlibPublishing is described in PUBLISHING.md.
Support
Questions and bug reports: open an issue, or email ops@avatar33.com.
License
MIT. Copyright Avatar 8 LLC. Cooper Email is operated by Avatar 8 LLC.
This server cannot be deployed
Maintenance
Related MCP Connectors
Give an AI agent its own inbox — receive email as a webhook, send over a verified domain.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.105 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to send and receive email with enforced security policies, scoped mailboxes, and human approval for external sending.1MIT
- AlicenseAqualityCmaintenanceProvides AI agents with real email infrastructure, enabling them to create inboxes, send/receive messages, and extract verification codes from incoming mail.14MIT
- AlicenseAqualityBmaintenanceGives AI agents their own email address with inbound parsing, classification, extraction, and prompt injection screening, plus tools to manage mailboxes, send/receive emails, and handle draft approval workflows.1456 npmMIT