The client asks
It requests some combination of read, draft and send. The request is bound to the browser that opened it and expires after 10 minutes.
Integrations
One URL, an OAuth consent screen you control, and six tools scoped to the inboxes you pick.
Email for Agents supplies the inbox and the email tools. Your agent keeps running wherever it runs today — we do not host it, and there is nothing to install on our side. If your client supports remote MCP and OAuth, this is one paste and one consent screen.
https://mcp.emailforagents.ai/mcp Nothing is granted by pasting a URL. The client starts an authorization, and you make three decisions in the browser before any tool exists.
It requests some combination of read, draft and send. The request is bound to the browser that opened it and expires after 10 minutes.
The consent screen names the client, the scopes it asked for, and the highest permission it could receive. You pick the project, the specific inboxes, and the permission level — never more than you hold yourself.
It covers those inboxes and nothing else, expires after 30 days, and can be revoked sooner from Connections. Replaying a refresh token revokes the whole grant.
A tool the grant does not cover is not merely refused — it is not listed, so the agent never sees a capability it cannot use.
list_inboxes Read List the inboxes this grant covers.
list_threads Read List conversations in one of them.
list_messages Read List message ids, recipients, attachment metadata and previews, with a cursor.
get_message Read Read one message body, bounded in size.
create_draft Draft Compose a new message or a threaded reply for a human to release. It cannot transmit mail.
send_message Send Transmit a message, still subject to the inbox's approval policy.
Drafting and sending are genuinely different privileges: the draft path runs with the send scope stripped from the credential, so an agent with draft access cannot reach the send tool by a side door. Tool results are capped at 131,072 characters; past that the server tells the agent to use the scoped REST API for the full body rather than truncating silently.
The MCP endpoint accepts connection grant tokens and nothing else.
A project API key, a human sign-in session and a test session are all rejected at
/mcp with an explicit error. This is a deliberate boundary, not a gap: an MCP
tool call is made by software acting for a person, and the authority for it has to be
traceable to a human who approved a specific set of inboxes. A shared API key cannot carry
that. The endpoint also answers 405 to a GET, because every MCP exchange is a
POST, and it negotiates protocol versions 2025-11-25, 2025-06-18 and 2025-03-26.
If your client cannot do OAuth, that is what the REST API is for. It is the same permissions and the same send pipeline.
No named client is certified, supported or one-click. Every OAuth connection is recorded with a trust class of unverified, whatever opened it — so this table is what we have tried, not a compatibility promise.
Claude Desktop
Testing generic MCP connection — not certified yet
Remote MCP connectors depend on the application and plan.
Claude Code
Testing generic MCP connection — not certified yet
Remote MCP connectors depend on the application and plan.
Cursor
Testing generic MCP connection — not certified yet
Remote MCP connectors depend on the application and plan.
Any other MCP client
Not yet tested
If it speaks remote MCP over HTTP and can complete an OAuth authorization, it should work. We have not verified it.
Anything without remote MCP
Tested API recipe
Use a project-scoped REST key instead. Every MCP tool has a REST equivalent.
Connector availability can also depend on the application and the plan you are on with that vendor, which is outside our control. If a client you use works, we would rather hear about it than guess — who to tell.
Why the n8n AI agent Gmail node throws an invalid email address error: it only checks for an @. The model outputs that trip it, and the ones that slip past.
An email MCP server comparison on one property: does a narrower credential shrink tools/list? 18 servers audited, 182 registry endpoints probed.
A langchain email tool that receives as well as sends: the current ToolRuntime interface, idempotency keys that survive a resume, and which events fire.
Dify's email plugin sends as one workspace SMTP account. Give each AI agent workflow its own inbox, a scoped key, and sends that survive node retries.
Give a Letta agent email address durable context: keep thread IDs in a memory block, rehydrate from the threads endpoint, and see what body_available hides.
One remote URL, three config shapes, no mcp-remote bridge. The current Windsurf, Cline and Zed entries, and four reasons a client cannot connect.
Wire the AI SDK tool helper to a real inbox, then survive the inbound webhook: which status codes get retried, and which one silently discards the event.
Give Cursor an email inbox over MCP: the mcp.json entry, the scope ceiling you set in the client, and the refresh-token replay that revokes the whole grant.
Make an AutoGen agent send email without SMTP: a REST send tool, an Idempotency-Key bound to the turn, and the inbound half the examples all skip.
Give a Mastra agent its own inbox: connect over remote MCP or a createTool, then suspend a workflow step and resume it when message.received fires.
A CrewAI email integration where the inbox is shared and the credential is not: read-only scopes for the researcher, messages:send for one sender agent.
Wire the OpenAI Agents SDK to an agent-owned inbox: one hosted MCP config or hand-written function tools, a six-tool surface, and a send tool that is absent.
A Replit agent email address for the build loop and a separate live inbox for the deployed app, and why the key prefix keeps them apart.
Give an OpenClaw agent an email inbox it can read and draft in, with outbound mail held at a gate the agent itself is not permitted to release.
Make a Make.com AI agent send email from its own address: the HTTP call, an Idempotency-Key that survives Make's retry, and inbound events.
Give a Pydantic AI email tool a discriminated union return type, so a model can never read accepted as delivered or a queued draft as a sent message.
Zapier's email actions send as the account you connected. Give a Zapier agent an email address of its own: the send call, the key, and inbound.
Email for Claude Code over remote MCP: one endpoint URL, an OAuth grant instead of an API key, and the exact tool list a read plus draft grant shows.
Build a LangGraph agent email inbox: resume a run from an inbound event, keep the approval gate outside the graph, and survive two emails at once.
Wire an n8n AI agent email inbox to the HTTP Request node: the send call, an Idempotency-Key that survives every n8n retry, and signed inbound webhooks.
Create a dedicated inbox, choose read, draft or send permission, connect over MCP or a scoped key, and prove a real round trip before granting send access.
How a remote MCP email server works, what the consent screen must show, how to scope a grant to one inbox, and how to verify it before allowing sends.
Remote MCP over OAuth or a project-scoped REST key: what each can and cannot do, who authorises it, how revocation differs, and why teams use both.
Connect a test inbox first — it cannot reach a real person.
Create an inbox Follow the connection guide