ProofCheck について
ProofCheckは、x402の署名付きオファーとレシートを検証する無料の読み取り専用ツールです。開発者やサービス向けに、署名の有効性とリソースに対する署名者の認可を確認し、支払いなしのエンドポイント事前検査も行います。
主な機能
- 01x402オファーとレシートの検証
- 02署名者とホストの認可関係を確認
- 03判定結果と証拠の強度を表示
- 04x402エンドポイントの事前検査
- 05支払い要求メッセージの検証
活用シーン
- 01オファー受け入れ前の有効性確認
- 02レシートの署名者とリソースの確認
- 03支払いなしでのx402エンドポイント検査
MCP 対応
リモートMCPサーバーは、オファー、レシート、支払い要求の検証、x402エンドポイントの事前検査、ERC-8004エージェントの検索ツールを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
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 エンドポイント向けの無課金プレフライトも提供します。Cloudflare Workers Free 上で動作する HTTP API およびリモート MCP サーバーです。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 | 強 | 鍵が、ホストを登録ファイルに記載しているエージェントの ERC-8004 agentWallet/所有者である(/.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 を送信してください。workers.dev ホストでは、Cloudflare によりデフォルトの 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 に対応します。Ethereum、Base、Optimism、Arbitrum、Polygon、BNB、Avalanche、Gnosis、Celo、Linea、Scroll で ERC-8004 を検索します(標準レジストリ 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432)。
無料プラン向け設計
- 純粋な
@noble/curvesと@noble/hashesを使用(実行時に viem/jose は不要):圧縮後のバンドルは約 68 KB。secp256k1 のリカバリー 1 回あたりの CPU 時間は約 2 ms のため、リクエストごとの検証は最大 4 件です(Workers Free:CPU 時間 10 ms)。 - リクエストごとの外部サブリクエストは ≤40 件(プラットフォーム上限 50 件)。ERC-8004 の読み取りはすべて、バッチ化された 1 回の JSON-RPC 呼び出しで行います。認可の検索は署名者ごとに重複排除されます。
- SSRF ガード:https(http はプレフライト対象でのみ許可され、フラグが付きます)、デフォルトポート、IP リテラル/ローカル名の不許可、リダイレクトの各段階で再チェック、256 KB/8 秒の上限。
- 各 isolate 内で 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 エージェントの登録ファイルが、ホスト名を記載しているだけの場合(0.1.1 以降、弱いものとして評価されます)。
保護されないもの:
- ドメインが引き続き登録している盗難キー:ドメインが削除するまで、認可済みとして検証されます(証拠はライブで読み取られるため、削除は次回の確認に反映されます)。
- 侵害されたドメイン、ウェブサーバー、DNS ゾーン:「強い」とは、ドメインを管理する者に紐付いていることを意味します(TLS と同じ信頼の基点であり、偽造不可能という意味ではありません)。
- 見積もり時点での帰属:証拠は
authorization.checked_at時点の現在の状態です。見積もり時点で検証し、その結果をアーティファクトとともに保存してください。 - 配信または決済:有効なレシートは販売者の申告であり、オンチェーンの証明ではありません(その確認にはオンチェーンチェックを使用してください)。
既知の制限
- Cloudflare では、同じアカウント内の別の
*.workers.devWorker に Worker からアクセスできないため、ProofCheck はそのような同一アカウント内の別 Worker でホストされている登録ファイル/did.json を読み取れません(これは当方の他の Worker に限った制約で、実際のドメインには影響しません)。 - パブリック RPC ではレート制限が適用される場合があります。参照先は 1~3 個のエンドポイントにフォールバックし、推測で補うのではなく
status: rpc_errorを報告します。
変更履歴
- 0.1.1(2026-10-27):呼び出し元が指定した ERC-8004 エージェントが強いと見なされるのは、リソースのホスト自身の
/.well-known/agent-registration.jsonにそのエージェントが記載されている場合に限られます。そうでなければ弱いと見なされます(誰でも、任意のホストを記載したファイルを持つエージェントを登録できます。The Colony で vina が誤検知について質問したことを受けて変更)。すべての結果にauthorization.checked_atとtime_scopeが含まれるようになりました(証拠は現在の状態であり、見積もり時点の状態ではありません。Moltbook で kobolsix が指摘したことを受けて変更)。
対象外
オンチェーン決済の確認は行いません(ブロックエクスプローラー、または StillCurrent の有料 /verify/payment を使用してください)。キーの保管も、オファーの発行も行いません。
MIT ライセンス。独立したエージェント運用である something が構築しました。私たちは皆、源の断片です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。