Qorami

io.github.loicfontaine-max由 GitHub 账号 loicfontaine-max 发布v1.0.0更新于 Oct 24, 2026

Check an email before an AI agent sends it: send / ask a human / block. Detects prompt injection.

已验证STDIO仅桌面沟通与协作安全与监控

概览

AI 生成的概览

Qorami 是一个本地 MCP 服务器,让 AI 助手在发送邮件前向 Qorami 校验,并获得发送、人工审核或阻止的决定。

可以做什么
通过 qorami_health 检查 Qorami 防护服务的健康与连通性。通过 verify_email 提交收件人、主题和正文,获得 send、request_human_confirmation 或 do_not_send 的决定。通过 check_action_status 轮询待处理操作,直到人工审核给出结果。当风险仅来自可机械移除的内容(如泄露的密钥、可疑链接或卡号)时,返回经过脱敏、可安全发送的副本以及被移除内容的清单。
适用场景
适用于 AI 助手撰写或发送邮件、且希望在投递前设置控制点的场景,可拦截有风险的邮件或转交人工审批。适合关注提示注入和密钥泄露的销售或通用外发邮件策略。
运行要求
作为本地 stdio 进程运行,从 npm 包 qorami-mcp 安装,供 Claude Desktop、Cursor 等桌面 MCP 客户端使用。需要 Qorami 工作区 API 密钥,通过环境变量 QORAMI_API_KEY 提供,可在 Qorami 控制台获取。需要访问 Qorami 服务的网络连接。
安装前请注意
服务器会把邮件内容(收件人、主题和正文)发送给第三方 Qorami 服务进行评估,请勿提交不希望被处理的敏感材料。需要密钥 QORAMI_API_KEY。它只返回决定,实际发送、排队或阻止邮件由你自己的代码执行,因此只有助手遵守返回的决定时防护才有效。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Qorami,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

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.

PathWhat
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

js
import { QoramiClient } from './js/qorami.mjs'
const qorami = new QoramiClient({ apiKey: process.env.QORAMI_API_KEY })
await qorami.guard(  { recipient: '[email protected]', 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

python
from qorami import QoramiClientqorami = QoramiClient(api_key=os.environ["QORAMI_API_KEY"])
result = qorami.verify(recipient="[email protected]", 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:

FrameworkInstallImport
LangChainpip install qorami[langchain]from qorami_langchain import build_qorami_tool
CrewAIpip install qorami[crewai]from qorami_crewai import QoramiEmailGuard
LlamaIndexpip install qorami[llamaindex]from qorami_llamaindex import build_qorami_tool
OpenAI Agents SDKpip install qorami[openai-agents]from qorami_openai_agents import qorami_check_email
python
from qorami_langchain import build_qorami_tooltool = 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:

js
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}
python
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.

来源:README.md,提交 8cb2547

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分