
Qorami
- 2 repo stars
- Updated July 3, 2026
- loicfontaine-max/qorami-sdk
Qorami is a MCP server that reviews agent outbound email with send, human-review, or block outcomes and prompt-injection detection.
About
Qorami MCP gives developers a pre-send checkpoint when AI agents draft customer, support, or lifecycle email. Instead of letting the model fire SES or SMTP directly, you register qorami-mcp with a workspace API key so each message can be approved to send, escalated to a human, or blocked, with additional prompt-injection awareness called out in the server description. That fits shipping and operating agentic products where one hallucinated refund promise or injected instruction could harm users. Use it when you automate outreach during ship security hardening and keep it registered while you iterate support templates in operate. It is an email safety MCP, not a full CRM or inbox client; you still own provider credentials and recipient lists. French-hosted Qorami dashboard onboarding applies for API keys at qorami.fr.
- NPM package qorami-mcp v1.0.0 with stdio MCP transport
- Requires QORAMI_API_KEY from the Qorami dashboard
- Tri-state decisions: send, ask a human, or block outbound email
- Prompt injection detection on agent-composed mail content
- GitHub qorami-sdk repository backing the published MCP server
Qorami by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add --env QORAMI_API_KEY=YOUR_QORAMI_API_KEY qorami-mcp -- npx -y qorami-mcpAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 2 |
|---|---|
| Package | qorami-mcp |
| Transport | STDIO |
| Auth | Required |
| Last updated | July 3, 2026 |
| Repository | loicfontaine-max/qorami-sdk ↗ |
What it does
Gate outbound emails from AI agents with send, human-approval, or block decisions plus prompt-injection detection before recipients see mistakes.
Who is it for?
Best when you're running support or lifecycle email through agents and need injection-aware gating without building a custom approval UI.
Skip if: Skip if you never let agents send email, bulk cold outreach without review requirements, or pure in-app chat with no mail channel.
What you get
After you configure QORAMI_API_KEY, each agent email draft can be scored and routed to send, human review, or block before delivery.
- Pre-send email policy outcomes: send, ask human, or block
- Prompt-injection signal on agent-drafted mail content
- Safer automated customer and support email from MCP agents
By the numbers
- Version 1.0.0 npm identifier qorami-mcp with stdio transport
- Required secret QORAMI_API_KEY per MCP server schema
- Three decision paths and injection detection stated in server description
README.md
Qorami SDK
Official clients, tool schemas and an MCP server for Qorami — a control point between your AI agents and actually sending email. Before each send, the agent asks Qorami, which replies send, request_human_confirmation, or do_not_send.
Get an API key in the dashboard. Full API reference: https://qorami.fr/docs.
| Path | What |
|---|---|
js/ |
Zero-dependency JavaScript / TypeScript client (fetch, Node 18+ or browser). |
python/ |
Zero-dependency Python client (stdlib only) + LangChain, CrewAI, LlamaIndex & OpenAI-Agents tools. |
tools/ |
Drop-in OpenAI function-calling & Anthropic tool-use schemas for qorami_check_email. |
mcp/ |
Stdio MCP server (qorami_health, verify_email, check_action_status) for Claude Desktop, Cursor, any MCP client. |
n8n/ |
No-code recipe: guard a workflow's email with an HTTP Request node. |
examples/ |
Runnable Node & Python quickstarts. |
JavaScript / TypeScript
import { QoramiClient } from './js/qorami.mjs'
const qorami = new QoramiClient({ apiKey: process.env.QORAMI_API_KEY })
await qorami.guard(
{ recipient: 'client@example.com', subject: 'Our offer', body, policyProfile: 'sales' },
{
send: () => mailer.send(), // allowed
requestHumanConfirmation: (r) => queue(r.action.id), // a human was notified
doNotSend: (r) => log('blocked', r.decision), // do not send
},
)
Or step by step with qorami.verify(...) and, after a review, poll
qorami.status(actionId) until nextAction.type === 'send'.
Python
from qorami import QoramiClient
qorami = QoramiClient(api_key=os.environ["QORAMI_API_KEY"])
result = qorami.verify(recipient="client@example.com", subject="Our offer",
body=email_body, policy_profile="sales")
if result.next_action_type == "send":
send_email()
elif result.next_action_type == "request_human_confirmation":
queue_for_review(result.action_id) # a human was notified by email
# else: do_not_send
Agent framework tools
pip install qorami[<framework>] ships a drop-in qorami_check_email wrapper —
each returns ALLOWED / NEEDS HUMAN APPROVAL / BLOCKED and reuses the client:
| Framework | Install | Import |
|---|---|---|
| LangChain | pip install qorami[langchain] |
from qorami_langchain import build_qorami_tool |
| CrewAI | pip install qorami[crewai] |
from qorami_crewai import QoramiEmailGuard |
| LlamaIndex | pip install qorami[llamaindex] |
from qorami_llamaindex import build_qorami_tool |
| OpenAI Agents SDK | pip install qorami[openai-agents] |
from qorami_openai_agents import qorami_check_email |
from qorami_langchain import build_qorami_tool
tool = build_qorami_tool() # reads QORAMI_API_KEY
No-code workflows (n8n) use a plain HTTP Request node — see n8n/.
MCP server
Register Qorami as a native tool in Claude Desktop / Cursor / any MCP client —
see mcp/. It exposes qorami_health, verify_email and check_action_status over stdio.
The contract
Every client returns the same decision the agent must obey via nextAction.type:
send, request_human_confirmation (a human approves first — poll the action),
or do_not_send. See https://qorami.fr/docs.
Cleaned version (auto-remediation)
When an email is risky only because of mechanically-removable content (a leaked
secret, a suspicious link, an IBAN/card/SSN), the verify result carries a cleaned,
sendable copy — send remediation.safeBody instead of blocking outright:
const r = await qorami.verify({ recipient, subject, body, policyProfile: 'general' })
if (r.nextAction.type === 'do_not_send' && r.remediation?.safeToSend) {
mailer.send({ ...email, body: r.remediation.safeBody }) // safe, redacted copy
}
r = qorami.verify(recipient=..., subject=..., body=email_body)
if r.next_action_type == "do_not_send" and (r.remediation or {}).get("safeToSend"):
send_email(body=r.remediation["safeBody"]) # safe, redacted copy
remediation.removed lists what was stripped (e.g. ["secret", "link"]). The MCP
server surfaces the same field.
License
MIT — see LICENSE.
Recommended MCP Servers
How it compares
Email safety and injection MCP, not a marketing automation skill or generic SMTP library.
FAQ
Who is Qorami for?
It is for developers and small teams using AI agents to compose outbound email who need send, human, or block decisions and injection checks via MCP.
When should I use Qorami?
Use it in ship security when enabling agent-sent mail, and keep it during operate iterate when you refine automated support or notification content.
How do I add Qorami to my agent?
Obtain a QORAMI_API_KEY from https://qorami.fr/dashboard/, install qorami-mcp from npm, add stdio MCP settings, and route agent email tools through Qorami checks first.