Email infrastructure for AI agents

Give your agent
its own inbox

Send, receive, and respond to email from your agent. One MCP connection. Your domain. Built-in approval queue.

{
  "mcpServers": {
    "mcpmail": {
      "url": "https://mcpmail.app/mcp",
      "headers": { "Authorization": "Bearer mcpm_live_..." }
    }
  }
}
The problem

Agents can think. They can code. They can analyze.
But they can't email.

The moment your agent needs to talk to a customer, a vendor, or another company, it hits a wall. SMTP configuration, DNS records, MIME parsing, thread reconstruction, bounce handling — infrastructure that takes weeks to build and months to get right.

MCPMail gives your agent an email address in minutes.

How it works

Three steps to a working inbox

Connect your domain

Add three DNS records. Your agent sends and receives as your domain. Existing email stays untouched.

domain.add({ domain: "acme.com" })
// Returns DKIM CNAMEs, SPF include, MX record
// Add them to your DNS, then:
domain.verify({ domain: "acme.com" })
// → { status: "verified", dkim: "pass", spf: "pass" }

Create a mailbox

Each mailbox is an independent agent inbox. Provision as many as you need.

mailbox.create({
  address: "support",
  domain: "acme.com",
  display_name: "Acme Support",
  send_mode: "queue"
})
// → support@agent.acme.com is live

Send, receive, respond

Your agent reads inbound mail, gets parsed content and contact context, drafts a reply, and pushes it to the approval queue.

const msgs = await mail.list({ unread: true })
const msg = await mail.get({ message_id: msgs[0].id })
// msg.from.context → { company, title, tags, history }
// msg.body → cleaned reply, signatures stripped
// msg.attachments[0].parsed_text → PDF extracted
await mail.reply({
  message_id: msg.id,
  body: response
})
// → queued for approval
Approval queue

Your agents draft.
You decide what sends.

Every outbound email can be held for review before it leaves. A human approves, a critic agent reviews, or auto-approve rules pass it through when conditions are met.

Start supervised. Loosen the controls as trust builds. The queue is the default — direct sending is opted into, not out of.

queue Every message held for review
auto Rules approve trusted patterns
direct Agent sends immediately
mailbox.set_send_mode({
  mailbox_id: "mbx_ops",
  mode: "auto_approve",
  rules: {
    reply_to_existing_thread: true,
    max_body_length: 500,
    recipient_allowlist: [
      "*@vendor.com"
    ]
  }
})

// Critic agent reviews the queue
const pending = await queue.list({
  status: "pending"
})
await queue.approve({
  queue_id: pending[0].id
})
// → message sent via SES
mail.get({ message_id: "msg_9xK2..." })

// → response includes sender context
{
  from: {
    email: "jane@acme.com",
    name: "Jane Smith",
    context: {
      company: "Acme Corp",
      title: "VP Operations",
      relationship: "Customer since 2024",
      notes: "Prefers concise replies",
      previous_threads: 12,
      tags: ["high-value"],
      custom: {
        plan: "pro",
        mrr: 790
      }
    }
  },
  body: "The parsed reply..."
}
Contact context

Every message arrives
with context.

MCPMail maintains a contact record for every email address your agent interacts with. Company, role, relationship history, custom fields, notes, tags.

The context is on the message when it arrives — your agent doesn't need a separate CRM lookup to know who it's talking to.

Pre-load contacts from your CRM, let MCPMail accumulate them automatically from email headers and signatures, or let the agent update them as it works.

What you don't have to build

Everything between SMTP and your agent

SES under the hood. You never touch it.

Send as your domain

Full SPF, DKIM, DMARC alignment. Recipients see your domain, not ours.

Inbound parsing

Signatures stripped. Quoted text separated. Your agent gets just the new content.

Approval queue

Outbound held for review. Auto-approve rules. Critic agent support. Trust ramps up.

📎

Attachment parsing

PDFs become text, CSVs become JSON. Agents read attachments as structured data.

🔗

Thread tracking

Automatic threading via Message-ID, In-Reply-To, References. No header management.

Webhooks

Real-time POST on message received. HMAC-signed. Retry with backoff. Or just poll.

👤

Contact context

Every sender gets a record. Pre-load, accumulate, or let the agent build it.

🔍

Full-text search

Search messages by content, sender, date range, attachment presence.

Bounce handling

Hard bounces, soft bounces, complaints — tracked and surfaced automatically.

The tool surface

21 MCP tools. That's the whole product.

Small surface, maximum utility. Each tool does one thing.

Domain

domain.add Register a domain domain.verify Check DNS records domain.list All verified domains domain.remove Deregister a domain

Mailbox

mailbox.create Provision an inbox mailbox.list All active mailboxes mailbox.delete Remove a mailbox mailbox.set_send_mode Configure approval rules

Mail

mail.send Send an email mail.reply Reply in a thread mail.list Poll for messages mail.get Full message + context mail.search Full-text search mail.draft Save without sending mail.send_draft Send a saved draft mail.mark_read Mark as processed

Queue

queue.list Pending outbound queue.get Full context for review queue.approve Release to send queue.reject Block with reason

Contacts

contact.set Add or update context contact.get Look up a sender contact.list Search contacts

Threads

thread.list All conversations thread.get Full thread history

Webhooks

webhook.create Register a URL webhook.list Active webhooks webhook.delete Remove a webhook
Use cases

SMTP is the universal protocol

Every company, system, and person already speaks email.

Support intake

Triage inbound, draft responses with context, escalate what the agent can't handle. L1 automated, L2 human.

Lead qualification

Score inbound inquiries, ask qualifying questions, route hot leads to sales, create CRM records.

Invoicing & AP

Send invoices, parse incoming ones from PDF attachments, match POs, follow up on overdue.

Vendor procurement

Send RFQs, compare quotes when replies arrive, manage PO back-and-forth.

Recruiting

Acknowledge applications, schedule screens via calendar, send prep materials, coordinate feedback.

Agent-to-agent

Your agent emails their agent. Negotiations, confirmations, and POs — all over SMTP.

Integrations

Works with every MCP client

Standard MCP server. One config snippet. Any agent framework.

Claude Code
Claude Desktop
Cursor
OpenClaw
Windsurf
Any MCP client
Pricing

Infrastructure pricing

Per mailbox. Per message. No seats. No bundled AI credits.
AI inference is your cost, not ours. We charge for the pipes.

Free

$0
Forever
  • 1 domain
  • 2 mailboxes
  • 100 sends / day
  • 7-day message retention
  • Queue mode only
Get started

Scale

Usage
Above Pro thresholds
  • Unlimited domains
  • Unlimited mailboxes
  • $0.40 / 1,000 sends
  • 90-day retention
  • Priority support
  • Dedicated IPs
  • Custom retention
Contact us

Your agent needs an email address.

Provision a mailbox, verify your domain, send your first email. Under fifteen minutes.