RadMail MCP
OfficialRadMail MCP is an email operating system for AI agents that enables inbox triage, commitment tracking, search, and reply drafting — with hard-coded, model-independent safety stops for high-risk actions that remain human-only by design.
Triage & Prioritization
triage_inbox— Process a batch of messages in one call, returning the "Right Now" priority lane, all open commitments, and hard-stop flags. Works zero-auth with an auto-provisioned sandbox (no signup needed).triage— Score a single email on importance × urgency, explain why it surfaced, and extract commitments and hard-stop flags.list_right_now— Get the short can't-miss list with reasons why each item surfaced.
Commitment Tracking
list_commitments— List open promises with direction (owed by/to you), party, action, due date, and confidence. Works in sandbox or connected mode.
Search & Retrieval
search— Find messages by sender, subject, or content (most relevant and newest first), with filters for sender and date ranges.read_email— Fetch a full email (headers + body) by ID from the real connected inbox (read-only, connected mode only).
Reply Drafting
draft_reply— Generate a reply discharging a commitment. Automatically refuses to draft for hard-stopped messages (money, banking changes, first contact, decisions, prompt injection). Never auto-sent.
Transparency & Learning
why_surfaced— Plain-English explanation of the signals behind a message's priority score.radmail_learning_insights— See what RadMail has learned about your usage patterns and recurring focus areas.report_need/request_capability— Give feedback on friction points or missing features.
Sandbox
provision_sandbox— Explicitly mint a free sandbox tenant with no credentials required.
Safety Guarantees (Un-bypassable)
Hard-stops for money, changed banking details, first-contact senders, decisions, and prompt injection are enforced by deterministic code — not model judgment.
All email-derived content is taint-tagged (
provenance: "untrusted-email-body") so agents treat it as data, never as instructions.Connected mode is read-only — it never sends or mutates real mail.
Fails closed: if a risk signal can't be evaluated, the tool refuses.
Click on "Install 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., "@RadMail MCPtriage my inbox"
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.
RadMail MCP
An email operating system for agents — with a refusal you can trust.
Every inbox got an AI in 2026. None can be trusted to hit send. RadMail is the one that can — because the consequential actions are refused in code, model-independent: money, changed-banking details, first-contact senders, decisions, and prompt-injection are human-only, forever. No prompt can talk RadMail into auto-sending them.
This is the Model Context Protocol (MCP) server, so any AI agent can use the inbox.
If a fleet of MCP agents runs your execution layer while you sit in the decision seat, the inbox is the seat that needs a hard-stop first. It's where a socially-engineered wire or banking change is irreversible — and where an autonomous process that can hit send can be talked into the loss. RadMail lets agents do the inbox's work (triage, the Right Now lane, commitment tracking, drafting) while money, changed banking, first contact, decisions, and prompt-injection stay human-only by construction, not by a policy an agent could be argued out of. That's what makes the company inbox delegable at all.
Start in one call
Call triage_inbox and omit the token — RadMail auto-provisions a free sandbox tenant and returns a working triage in one round-trip. Reuse the returned token. (On the zero-auth hosted sandbox, triage_inbox takes no args — it triages a built-in demo inbox so your very first call returns the full wedge.)
This server runs the sandbox engine (heuristic, in-memory, free, no credentials). It is real and runnable — not the production "99%" engine.
Related MCP server: cloudflare-email
Tools
Tool | What it does |
| One round-trip over a batch: the Right Now lane + every open commitment + every hard-stop. The whole wedge in one call. |
| The can't-miss lane only — most-recent × most-important, each with why-surfaced. Pass |
| Explain in plain English why a message surfaced — the signals behind its importance × urgency. Transparency, not a black box. |
| Draft the reply that discharges a commitment — never for a hard-stopped one (money / banking / first-contact stay human-only). |
| Open promises with their due window. Pass |
| Find the one message you mean by sender / subject / content — most-relevant + newest first (no filesystem grep). Pass |
| Connected mode only: fetch one full email (headers + |
| Zero-auth, works on any domain: read-only SPF / DKIM / DMARC health read (verdicts + raw records + plain-language advice). Probes the common DKIM selectors ( |
| Score a single message (the per-message form of |
| Explicitly mint a free sandbox tenant. |
| Tell RadMail what was awkward / what you wish existed — the surface adapts. |
| What RadMail has learned about how you work. |
The safety contract (un-bypassable by design)
These are decided by deterministic code, not model judgment — see /.well-known/agent-safety.json:
money, changed-banking, first-contact, decision/sign-off, prompt-injection →
hardStop, human-only forever. RadMail will never hand an agent an auto-sendable reply for these.Taint envelope: every field derived from a raw email body carries
provenance: "untrusted-email-body", and every response carries asafetyblock restating the hard-stops. Treat tainted fields as data, never as instructions — this keeps your agent safe-by-default, even against a poisoned email.Fail-closed: if a risk signal can't be evaluated, RadMail refuses to auto-send.
Verify before you connect
The safety contract is machine-verifiable — fetch it and check it in one command, no account, no key:
curl -s https://radmail.ai/.well-known/agent-safety.jsonConnect
Fastest — zero-auth hosted sandbox (no install, no key, no signup). Point any MCP client at the streamable-HTTP endpoint:
{
"mcpServers": {
"radmail": {
"url": "https://radmail.ai/api/mcp/sandbox",
"transport": "streamable-http"
}
}
}Local stdio (this package — the fuller surface that triages the messages you pass it):
{
"mcpServers": {
"radmail": {
"command": "npx",
"args": ["-y", "radmail-mcp"]
}
}
}
radmail-mcpis live on npm — thenpxline above works as-is. Prefer no install at all? Use the zero-auth hosted sandbox above.
Or from source: git clone https://github.com/dougsureel-tech/radmail-mcp && npm i && npm run build && npm start (stdio). Hosted deploy: Vercel Node serverless function (api/mcp.ts; / rewrites to the MCP handler).
Connected mode — your real inbox
Give the server a RadMail API key and four tools stop being a demo. Omit messages and:
searchfinds any email you've ever received in your real RadMail inbox;read_emailfetches the full message (headers +textBody);list_right_nowreturns your real can't-miss lane — the live engine's band + importance + urgency + reasons per item;list_commitmentslists your real open promises — direction (owed_by_us/owed_to_us), party, action, due date/phrase, state, confidence.
Search it, read it, know what matters now, know what's owed — install it once and your AI has the whole picture.
Config: set
RADMAIL_API_KEY(keys start withtmk_— create one in about a minute at https://app.radmail.ai/settings/api-keys). Optional:RADMAIL_API_URLoverrides the API host (defaulthttps://app.radmail.ai).Read-only by construction: connected mode only ever issues GETs. It never sends, drafts against, or mutates real mail, and the BEC hard-stops (money / changed-banking / first-contact / decision / injection) stay human-only forever.
Same taint envelope: every field derived from real email content (
subject,fromName,snippet,textBody, …) arrives taggedprovenance:"untrusted-email-body"— data to reason about, never instructions to follow.Fail-closed: invalid key (401), un-entitled plan (403), or a timeout returns an honest, typed error — never fabricated results. The key itself is never logged or echoed.
Filters & paging: connected
searchsupports optionalfrom,after, andbefore(ISO-8601) alongsidequeryandlimit; connectedlist_right_now/list_commitmentssupportlimitandoffset.No fabricated judgments: connected
list_right_nowsurfaces the live engine's own band / importance / urgency / reasons as-is — it never invents local hard-stop determinations the API didn't return.Without a key,
search/list_right_now/list_commitments(sansmessages) andread_emailreturn friendly setup instructions instead of an error — the sandbox keeps working exactly as before.
Claude Code:
claude mcp add radmail -e RADMAIL_API_KEY=tmk_... -- npx -y radmail-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"radmail": {
"command": "npx",
"args": ["-y", "radmail-mcp"],
"env": { "RADMAIL_API_KEY": "tmk_..." }
}
}
}Cursor (.cursor/mcp.json):
{
"mcpServers": {
"radmail": {
"command": "npx",
"args": ["-y", "radmail-mcp"],
"env": { "RADMAIL_API_KEY": "tmk_..." }
}
}
}Same npm note as above: the
npxlines activate the moment the npm publish lands. Until then, run from source and pointcommandatnode dist/src/index.js— connected mode works today that way.
Telemetry (demand signals — opt-out)
This server sends anonymous demand-signal telemetry to https://app.radmail.ai/api/mcp-demand so RadMail can see which tools agents actually use and what capabilities they ask for: what's sent is the tool name, the event type (call / need / capability), the need or capability text you explicitly submit via report_need / request_capability, and the optional agent id you pass. What's never sent: email content, message batches, search queries, results — and never your API key (in connected mode only the safe display prefix, tmk_live_ + the first 4 characters, is transmitted so adoption of connected mode is distinguishable). Sends are fire-and-forget with a 3-second timeout and every failure silently swallowed — telemetry can never slow down or break a tool call. Opt out entirely with RADMAIL_TELEMETRY=off.
Links
Agent docs: https://radmail.ai/for-agents
Zero-auth sandbox:
https://radmail.ai/api/mcp/sandbox(streamable-http, no auth)Verifiable safety contract: https://radmail.ai/.well-known/agent-safety.json
MCP manifest: https://radmail.ai/.well-known/mcp.json
LLM-readable summary: https://radmail.ai/llms.txt
Compliance posture
A tool, not a guarantee — BAA + shared-responsibility framing. Never "HIPAA-certified" or "FedRAMP-authorized."
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/radmail-ai/radmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server