mcpField
A
Attest

Attest

本地服务
dev-prathap.github.io安全15 周前更新

关于 Attest

Attest 为 Agent 执行的外部操作实施策略判断、人工审批、回读验证和防篡改记录,适用于需要审计操作结果的团队。它不执行操作,而是检查并记录实际结果,且会明确标示验证程度。

主要功能

  1. 01按策略决定是否允许操作
  2. 02对重要操作设置人工审批
  3. 03从目标系统回读并核对结果
  4. 04以哈希链记录操作证据
  5. 05导出审计记录并支持签名与锚定

适用场景

  1. 01在发送邮件或更新 CRM 前要求审批
  2. 02核实工具报告成功的写入是否生效
  3. 03追踪操作字段与预期值的差异
  4. 04为合规审计导出操作记录

MCP 相关

提供可置于任意 MCP 服务前的零代码代理,以及用于验证的 MCP 服务。它拦截策略决策、审批、回读验证和记录,但实际操作仍由原有工具执行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dev-prathap-attest": {
"command": "uvx",
"args": [
"attestlayer"
],
"env": {
"ATTEST_POLICY": "<ATTEST_POLICY>",
"ATTEST_LEDGER": "<ATTEST_LEDGER>",
"ATTEST_AUTO_APPROVE": "<ATTEST_AUTO_APPROVE>",
"ATTEST_CONFIRM_TIMEOUT": "<ATTEST_CONFIRM_TIMEOUT>",
"GMAIL_TOKEN": "<GMAIL_TOKEN>",
"GOOGLE_TOKEN": "<GOOGLE_TOKEN>",
"SLACK_BOT_TOKEN": "<SLACK_BOT_TOKEN>",
"HUBSPOT_TOKEN": "<HUBSPOT_TOKEN>",
"NOTION_TOKEN": "<NOTION_TOKEN>",
"LINEAR_API_KEY": "<LINEAR_API_KEY>",
"GRAPH_TOKEN": "<GRAPH_TOKEN>"
}
}
}
}
启动命令uvx attestlayer
需要配置的环境变量
ATTEST_POLICYPath to a policy YAML (defaults to ./attest.yaml or the built-in default)
ATTEST_LEDGERLedger SQLite path (default .attest/ledger.sqlite)
ATTEST_AUTO_APPROVESet to 1 to approve every confirm request (development only)
ATTEST_CONFIRM_TIMEOUTSeconds attest_confirm waits for a human (default 900)
GMAIL_TOKEN密钥Google OAuth access token with gmail.readonly — enables Gmail read-back
GOOGLE_TOKEN密钥Google OAuth access token — enables Calendar / Drive / Docs / Sheets read-back
SLACK_BOT_TOKEN密钥Slack bot token (xoxb-…) with channels:history, channels:read — enables Slack read-back
HUBSPOT_TOKEN密钥HubSpot private-app token — enables HubSpot read-back
NOTION_TOKEN密钥Notion integration token — enables Notion read-back
LINEAR_API_KEY密钥Linear API key — enables Linear read-back
GRAPH_TOKEN密钥Microsoft Graph token — enables Outlook / Teams read-back

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiattestlayer0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Attest — 证明你的 AI Agent 实际做了什么

ci pypi npm docs license

决策 → 把关 → 验证 → 证明。 你的 Agent 发送邮件、更新 CRM、转移资金。 Attest 会决定它是否可以执行,在关键操作前要求人工把关,从事实来源系统中读取数据以确认操作确实发生,并记录无篡改迹象的证据。

Attest 永远不会执行你的操作,执行操作的是你的工具。因此,它从第一天起就能与任何应用和任何框架配合使用。

你的 Agent 说操作成功了。真的吗?

两次完全相同的 CRM 写入,工具都报告成功,也都经人工批准:

$ attest ledger
#2  2026-09-19 10:16:46  someweirdcrm.create → leads   ask  approved  unverified   a09e7641db12
#1  2026-09-19 10:16:46  someweirdcrm.create → leads   ask  approved  verified     77a6d99a60f6

第二次读取回来的数据完全匹配。第一次则不然,账本会指出不一致的字段:

{ "level": "unverified", "matched": false,
  "evidence": { "compared": 4, "exists": true, "failed": ["stage"],
    "fields": { "stage": { "want": "qualified", "got": "new", "ok": false } } } }

跟踪记录会显示两步都成功。这个差异就是整个产品的价值所在。

安装

pip install attestlayer          # Python
npm  install attestlayer         # TypeScript — byte-identical ledger format
import attest

@attest.action(system="gmail", verb="send", target="to")
def send_email(to, subject, body): ...
import { Attest } from "attestlayer";

const at = new Attest({ agent: "followup-agent@v3", readers: { gmail: process.env.GMAIL_TOKEN! } });
const sendEmail = at.wrap({ system: "gmail", verb: "send", target: "to" },
                          async ({ to, subject, body }) => gmail.send({ to, subject, body }));

改动就这些。现在,首次向外发送操作会暂停并等待人工确认;账本记录的状态为 acknowledged,如果 Attest 能使用 Agent 自己的凭据读取回数据,则为 verified(Attest(readers={"gmail": service}))。你的代码其他部分无需改动。

分层验证,绝不夸大结果

每条记录都会准确说明检查到什么程度。无法执行的检查绝不会被包装成通过。

级别含义
verified从事实来源系统读取回数据,且字段匹配
verified-custom运行了你自己的检查,且检查通过
acknowledged操作已被接受,但此处无法执行读取回查
attested-only已记录,但没有可用于此操作的验证器
unverified检查结果与声明矛盾

只有出现矛盾时,状态才会标记为 unverified。缺少凭据、只有只读权限或动词不受支持时,状态会降级为 acknowledged,因为“无法检查”和“操作没有发生”是两回事。

接入方式

接入点方式
装饰器 / 包装器@attest.action(...) · at.wrap(...)
LangGraph工具节点包装器,将把关设为图中断
OpenAI Agents · Claude Agent SDK · CrewAI · DeerFlowattest/ 中的适配器
MCP在任何服务前部署零代码代理,另提供验证服务
HTTP 网关将出站流量指向该网关,无需 SDK
仅用 API自行 POST 描述符

人工确认会发送到团队日常使用的地方:Slack、Web 收件箱、Webhook、LangGraph 中断或控制台。审批者可以在批准前编辑参数,编辑操作也会被记录。

记录本身

采用哈希链式账本,本地使用 SQLite,云端按组织使用 Postgres。签名检查点让你可以清理旧记录,同时仍能验证链。支持可选的 Ed25519 签名,以及将记录锚定到文件、git 仓库或 HTTP 端点。导出格式包括 JSON、CSV、IETF draft-sharif-agent-audit-trail JSONL 格式,以及 EU AI Act 事件日志包。

每次操作的开销约为 1/6 毫秒,测量结果见 benchmarks/(已发布的数据)。

在本地试用

python examples/unknown_app.py                         # an app Attest has never seen, L1 → L3
ATTEST_AUTO_APPROVE=1 python examples/langgraph_agent.py
cd deploy && cp .env.example .env && docker compose up  # cloud API :8400 + dashboard :3400

Attest Cloud

SDK 采用 MIT 许可证,可独立搭配本地账本使用。Attest Cloud 提供共享账本、确认收件箱、带版本的组织策略、Agent 密钥和合规导出。你的供应商令牌不会传到这里:回读在你的进程中使用你自己的凭据完成,只会发送哈希和预览内容。 你可以从 deploy/ 自托管,或阅读 DEPLOY.md。

安装渠道

渠道方式
PyPIpip install attestlayer → attest、attest-mcp、attest-mcp-server、attest-gateway
npmnpm install attestlayer
MCP Registryio.github.dev-prathap/attest(验证服务) · io.github.dev-prathap/attest-proxy(零代码代理)
Smitheryattestlayer/attest
Claude Desktop最新版本中的 attest-<version>.mcpb
Dockerghcr.io/dev-prathap/attest-api · ghcr.io/dev-prathap/attest-dashboard

文档

完整文档请见 dev-prathap.github.io/ATTEST — 快速入门 · 验证级别 · 策略 · 回读示例 · 账本与导出 · 加固

仓库

路径内容
attest/Python SDK — 描述符、策略、账本、验证阶梯、门控、适配器、MCP 代理、CLI
packages/attest-ts/TypeScript SDK — 使用相同的规范哈希,并通过针对 Python 的测试夹具验证
cloud/Attest Cloud — FastAPI + Postgres:组织、密钥、策略版本、账本、确认收件箱、导出
dashboard/Next.js 仪表板 — 账本深入查看、确认收件箱、策略和密钥
examples/未知应用、LangGraph、OpenAI Agents、MCP 配置、仅 API、云
deploy/Dockerfile 和 compose
benchmarks/该层每项操作的开销
docs/文档站点源文件及设计说明
pytest -q && (cd cloud && pytest -q)     # 355 + 37 offline tests
pytest tests/live                        # 8 live suites; need real credentials, skipped without them

贡献

回读示例是最容易上手的部分:每个示例都会教 Attest 如何在一个新应用中确认写入操作,只需使用该应用的读取 API。请参阅 CONTRIBUTING.md,如需报告漏洞,请参阅 SECURITY.md。

原则

  • 我们绝不执行你的操作。由你的工具执行;我们负责决策、门控、验证和记录。
  • 覆盖范围是普遍的。每一行都会如实标明分层的验证深度。
  • 采用 MIT 许可证的开源 SDK。共享账本、收件箱、策略和导出功能由付费云服务提供。

设计说明

公开记录产品背后的思考:愿景 · 产品 · 通用适配器 · 架构 · 市场 · 构建计划 · 决策 · 阶段计划

渊源

Attest 的核心机制提取自两个实际运行的代码库:DO(策略引擎、回读验证对、证据账本)和 DeerFlow(工具回执、验证模式、MCP 和聊天渠道适配器)。它们可与真实的 Gmail、Slack、HubSpot、Notion、Linear 和 Google Workspace 配合运行。Attest 在 tests/live/ 中为这些系统提供了自己的实时测试套件;这些测试需要真实凭据,没有凭据时会跳过。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。