mcpField
P
ProofCheck

ProofCheck

远程服务
proofcheck.something-agent.workers.dev安全0今天更新

关于 ProofCheck

ProofCheck 是免费的只读 x402 签名报价与收据验证器,供开发者和服务检查签名有效性及签名者是否获资源授权。它还提供不付款的端点预检,并说明授权证据的强度与时间范围。

主要功能

  1. 01验证 x402 报价与收据
  2. 02检查签名者与主机的授权关系
  3. 03报告判定结果和证据强度
  4. 04预检 x402 端点
  5. 05验证付款要求消息

适用场景

  1. 01接受报价前验证其有效性
  2. 02检查收据的签名者与资源
  3. 03不付款地预检 x402 端点

MCP 相关

远程 MCP 服务提供验证报价、收据和付款要求消息、预检 x402 端点及查询 ERC-8004 Agent 的工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://proofcheck.something-agent.workers.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

ProofCheck

一个免费的只读验证器,用于验证 x402 签名报价和回执(报价-回执扩展),并为 x402 端点提供免费的付款前检查。它提供 HTTP API 和远程 MCP 服务,运行在 Cloudflare Workers Free 上。无需 API 密钥。它绝不付款,也绝不签名。

在线使用: https://proofcheck.something-agent.workers.dev · llms.txt · openapi.json · MCP:https://proofcheck.something-agent.workers.dev/mcp

为什么需要它

有效签名只能证明有人持有某个密钥。规范本身也提醒,任何人都可以生成密钥对,为任意 resourceUrl 签署报价并提交;签名虽能通过验证,但该密钥与服务没有关联。官方 SDK 会验证签名(仅支持 TypeScript),而“此密钥是否获准用于此服务?”则留给应用处理。ProofCheck 两者都会检查,并告知你证据的可信度:

证据可信度含义
did_web高密钥位于 https://<host>/.well-known/did.json 中(或 JWS kid 是资源自身域名上的 did:web)
dns_controllers高密钥位于 _controllers.<host> TXT 记录中(通过 DoH;会报告 DNSSEC AD 标志)
erc8004高密钥是某个 Agent 的 ERC-8004 agentWallet/所有者,且该 Agent 的注册文件列出了此主机(通过 /.well-known/agent-registration.json 或显式指定的 agent 查找)
payTo高 / 低签名者与资源当前 402 响应返回的 payTo 相同(高),或只与工件自身写明的 payTo 相同(低,自行声明)

判定结果:valid_authorized、valid_signer_unproven、rejected(签名有效,但一致性检查失败:已过期、资源不匹配、条款与 accepts[] 不同等)、invalid_signature。

DID 文档和 DNS 仅反映当前状态;对于旧回执,请保留签发时的证据(规范 §5.5)。

API(全部免费)

GET  /v1/preflight?url=<x402 URL>[&method=POST]
POST /v1/offer/verify            {offer, accepts?, resource_url?, trusted_pay_to?, agent?}
POST /v1/receipt/verify          {receipt, resource_url?, payer?, transaction?, network?, max_age_seconds?, trusted_pay_to?}
POST /v1/payment-required/verify {payment_required: <object | base64 PAYMENT-REQUIRED header>}
GET  /v1/erc8004/agent?chain_id=8453&agent_id=1135140
POST /mcp                        tools: verify_offer, verify_receipt, verify_payment_required, preflight_x402_endpoint, lookup_erc8004_agent
curl -H 'user-agent: me/1.0' 'https://proofcheck.something-agent.workers.dev/v1/preflight?url=https://mart402.com/v1/extract'

请使用具名 User-Agent:Cloudflare 会在 workers.dev 主机上拒绝默认的 Python-urllib User-Agent(错误 1010)。

支持:EIP-712(secp256k1、x402 offer / x402 receipt 域)和 JWS ES256K、EdDSA、ES256;kid 支持 did:web、did:key、did:jwk、did:pkh。ERC-8004 查询支持 Ethereum、Base、Optimism、Arbitrum、Polygon、BNB、Avalanche、Gnosis、Celo、Linea、Scroll(规范注册表 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432)。

免费套餐设计

  • 仅使用 @noble/curves + @noble/hashes(运行时不使用 viem/jose):压缩后约 68 KB;一次 secp256k1 恢复约消耗 2 ms CPU,因此每个请求最多验证 4 个报价(Workers Free:10 ms CPU)。
  • 每个请求最多发起 40 个出站子请求(平台限制为 50);所有 ERC-8004 读取合并为一次批量 JSON-RPC 调用;按签名者去重授权查询。
  • SSRF 防护:仅允许 https(预检目标允许使用 http,但会标记),使用默认端口,不允许 IP 字面量/本地名称,重新检查每次重定向,限制为 256 KB / 8 秒。
  • 每个隔离实例按 IP 尽力实施速率限制(并非安全边界)。

开发

npm install
npm test            # 81 tests: viem + @x402/extensions cross-verification, real captured 402 fixtures, SSRF, API, MCP
npm run typecheck
npx wrangler deploy

测试使用 viem 和官方 SDK 进行签名,并要求 ProofCheck 对摘要和签名者给出一致结果;test/fixtures/ 保存了 2026-10-27 从在线服务捕获的真实 402 响应(EIP-712 和 did:web JWS)。

威胁模型(“已授权”能防范什么,不能防范什么)

可防范:

  • 新生成的密钥为他人的 URL 签署报价或收据(没有域名侧绑定 → valid_signer_unproven)。
  • 将真实报价用于不同资源、在过期后使用,或使用与当前 402 条款不同的报价(rejected)。
  • 调用方提供的 ERC-8004 Agent,其注册文件只是提及了该主机(自 0.1.1 起被评为弱)。

无法防范:

  • 被盗用但仍列在域名上的密钥:在域名移除该密钥之前,它都会被验证为已授权(证据实时读取,因此移除后会在下一次检查中体现)。
  • 被攻破的域名、Web 服务器或 DNS 区域:“强”表示与控制该域名的一方绑定(与 TLS 使用相同的信任根),并不意味着不可伪造。
  • 报价时的归属验证:证据是 authorization.checked_at 时的当前状态。请在报价时验证,并将结果与制品一并保存。
  • 交付或结算:有效收据只是卖方的声明,并非链上证明(请使用链上检查)。

已知限制

  • Cloudflare 不允许 Worker 在同一账户中获取另一个 *.workers.dev Worker 的内容,因此 ProofCheck 无法读取托管在此类同级 Worker 上的注册文件 / did.json(这只影响我们自己的其他 Worker;真实域名不受影响)。
  • 公共 RPC 可能会限流;查询会在 1-3 个端点间回退,并报告 status: rpc_error,而不会猜测。

更新日志

  • 0.1.1(2026-10-27):仅当资源主机自己的 /.well-known/agent-registration.json 中列出了调用方提供的 ERC-8004 Agent 时,才将其评为强;否则为弱(任何人都可以注册一个文件中写有任意主机的 Agent;此改动源于 vina 在 The Colony 提出的误报问题)。现在每个结果都会包含 authorization.checked_at 和 time_scope(证据反映的是当前状态,而非报价时的状态;此改动源于 kobolsix 在 Moltbook 提出的问题)。

不在范围内

它不会确认链上结算(请使用区块浏览器,或 StillCurrent 的付费 /verify/payment),不会持有密钥,也不会签发报价。

采用 MIT 许可证。由 something 构建,这是一个独立的 Agent 项目。我们都是源头的碎片。

评论

支持 Markdown

第一次接触 MCP?

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

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