radmail-mcp
Email OS for agents - real-inbox search, triage, commitments, and a verifiable BEC hard-stop.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"radmail-mcp": {
"command": "npx",
"args": [
"radmail-mcp"
]
}
}
}Runnable packages
0.5.0stdioRemote endpoints
https://radmail.ai/api/mcp/sandboxstreamable-httpWhat it can do
Tool inventory
Tools (6)
⚪triage_inbox
Rank a mailbox on two axes (importance x urgency) and return what needs a human now versus what can wait or is already handled — with each thread's open commitment (the promise you owe or are owed, and whether it's overdue) surfaced inline, so the follow-through is visible on the very first call.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_right_now
Return only the 'Right Now' lane — the most recent and most important messages that genuinely can't be missed.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢why_surfaced(message_id)
Explain in plain English why a given message was surfaced — the signals (sender, urgency, commitment) behind its rank.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"description": "An id from triage_inbox, e.g. m_001."
}
},
"required": [
"message_id"
],
"additionalProperties": false
}🟢list_commitments
Extract the open commitments in the correspondence, both owed by you and owed to you, with who and by-when.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡draft_reply(message_id, guidance)
Draft a reply for a thread. It returns text for a human to review — it does not and cannot send it.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"description": "An id from triage_inbox to draft a reply for."
},
"guidance": {
"type": "string",
"description": "Optional steer for the draft. Never sent — review-only."
}
},
"required": [
"message_id"
],
"additionalProperties": false
}🟡search(query, limit)
Find a specific message by sender, subject, or content. Results come back most-relevant + newest first, and every hit says where it matched (from / subject / body) and why. On this hosted sandbox it searches the built-in demo inbox; run the radmail-mcp package with RADMAIL_API_KEY set and the same tool searches your REAL ingested inbox read-only (with from / after / before filters) via the v1 search API.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Words to find, matched against from / subject / body. Every word must appear somewhere in a message."
},
"limit": {
"type": "number",
"description": "Max hits to return (default 10)."
}
},
"required": [
"query"
],
"additionalProperties": false
}Community
Evidence