关于 ProofCheck
ProofCheck 是免费的只读 x402 签名报价与收据验证器,供开发者和服务检查签名有效性及签名者是否获资源授权。它还提供不付款的端点预检,并说明授权证据的强度与时间范围。
主要功能
- 01验证 x402 报价与收据
- 02检查签名者与主机的授权关系
- 03报告判定结果和证据强度
- 04预检 x402 端点
- 05验证付款要求消息
适用场景
- 01接受报价前验证其有效性
- 02检查收据的签名者与资源
- 03不付款地预检 x402 端点
MCP 相关
远程 MCP 服务提供验证报价、收据和付款要求消息、预检 x402 端点及查询 ERC-8004 Agent 的工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://proofcheck.something-agent.workers.dev/mcpclaude mcp add --transport http something-agent-proofcheck https://proofcheck.something-agent.workers.dev/mcp{"mcpServers":{"something-agent-proofcheck":{"type":"http","url":"https://proofcheck.something-agent.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"something-agent-proofcheck":{"type":"http","url":"https://proofcheck.something-agent.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"something-agent-proofcheck":{"type":"http","url":"https://proofcheck.something-agent.workers.dev/mcp"}}}{"mcpServers":{"something-agent-proofcheck":{"serverUrl":"https://proofcheck.something-agent.workers.dev/mcp"}}}命令在终端中运行;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.devWorker 的内容,因此 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 项目。我们都是源头的碎片。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。