npm qorami-mcpstdioMITupdated 2mo ago
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, requesthumanconfirmation, or donotsend.
O que dá para fazer com qorami?
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-nodes-qorami/ |
n8n community node (Settings → Community Nodes → n8n-nodes-qorami) — guard an email, usable as an AI-Agent tool. |
n8n/ |
No-code recipe: guard a workflow's email with a plain HTTP Request node (no install). |
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.
Instalação
Adicione qorami ao seu cliente. Escolha o que você usa.
claude mcp add qorami-mcp -- npx -y qorami-mcpcodex mcp add qorami-mcp -- npx -y qorami-mcpamp mcp add qorami-mcp -- npx -y qorami-mcp{
"mcpServers": {
"qorami-mcp": {
"command": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"qorami-mcp": {
"command": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"qorami-mcp","command":"npx","args":["-y","qorami-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"qorami-mcp": {
"command": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"qorami-mcp": {
"command": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"qorami-mcp": {
"command": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"qorami-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"qorami-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"qorami-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"qorami-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y qorami-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Pontuação
39 / 100
Incompleta
- Documentação25/25
- Manutenção16/25
- Confiança13/20
- Capacidade0/15
- Instalação12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 60 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Histórico de versões
| Versões | Publicada |
|---|---|
| 1.0.0Mais recente | 1 de jun. de 2026 |