Home › Use Qorami with MCP
Use Qorami with MCP
The fastest way to put a guardrail on an AI agent that sends email. Add Qorami to Claude Desktop, Cursor or Windsurf as an MCP server, and your agent asks before it sends — Qorami answers send, ask a human, or block. One command, about five minutes.
Why MCP is the fastest path
The Model Context Protocol is how Claude Desktop, Cursor, Windsurf and most agent frameworks load tools. Register Qorami once as an MCP server and the agent gets a native verify_email tool — no SDK to wire in, no glue code. If your agent already speaks MCP, this is the shortest distance between "my agent can send email" and "my agent can't send the wrong email."
The tools
qorami_health— check the server is configured: API reachable, key valid, credits left. Never spends a credit. Run it first.verify_email— the agent calls this before sending. Returns a decision it must obey, plusreasonCodes,suggestions, and a cleanedremediation.safeBodywhen the email can be auto-fixed.check_action_status— when a decision isrequest_human_confirmation, the agent polls this with theactionIduntil a human approves (send) or blocks (do_not_send) in the dashboard.
Install in 5 minutes
1 Get an API key
Create a free workspace — 100 verifications included, no card required — and copy your key (it looks like qrm_ws_…). It is shown once at signup; you can regenerate it from the dashboard.
2 Add Qorami to your MCP client
Claude Desktop — Settings → Developer → Edit Config, then add the qorami block to claude_desktop_config.json:
{
"mcpServers": {
"qorami": {
"command": "npx",
"args": ["-y", "qorami-mcp"],
"env": { "QORAMI_API_KEY": "qrm_ws_..." }
}
}
}
Cursor (~/.cursor/mcp.json) and Windsurf use the same mcpServers object — paste the exact same qorami block. The published qorami-mcp package runs over stdio, so any MCP-compatible client registers it the same way. No clone, no install: npx fetches it for you.
3 Confirm it works — without spending a credit
Restart the client and ask it to run qorami_health. You should get back something like:
{
"ok": true,
"apiKeyConfigured": true,
"apiHealth": { "ok": true, "status": 200 },
"usage": { "ok": true, "creditsRemaining": 100 },
"nextStep": "Call verify_email before any agent sends email."
}
If apiKeyConfigured is false, the QORAMI_API_KEY in your config is missing or misspelled.
4 Make the agent ask before it sends
Add one line to your agent's instructions:
Before sending ANY email, call Qorami's verify_email tool and obey
nextAction.type: send -> send it; request_human_confirmation -> poll
check_action_status until it resolves; do_not_send -> do not send.
That is the whole integration. The first risky email — a leaked key, an unapproved discount, a prompt-injection attempt — now stops at the guardrail instead of leaving your outbox.
The contract the agent obeys
send— allowed. The agent sends. Runs unattended.do_not_send— blocked. The agent does not send (optionally appliessuggestionsand re-verifies). Runs unattended. A block costs no credit.request_human_confirmation— pause. The agent pollscheck_action_statusuntil a person approves or blocks it in the dashboard. This human-in-the-loop on risky email is the whole point — and averify-scoped key cannot approve its own held email.
Each verification costs 1 credit (a block is free) and returns creditsRemaining. To keep an agent running unattended, enable auto-recharge in the dashboard.
More: API docs · qorami-sdk/mcp on GitHub · measured accuracy · why guardrails.