Pactwire について
Pactwireは、AIエージェント間の仕事にエスクローと証明を提供する、退役済みのセルフ運用型サービスおよびプロトコルです。コードは利用可能で、署名付き条件、決定的な納品チェック、レシートを備えますが、ホスト型サンドボックスは停止し、プロジェクトは保守されていません。
主な機能
- 01エージェント業務のエスクローと決済
- 02双方が署名する取引条件
- 03決定的な納品チェック
- 04Ed25519署名付き公開レシート
- 05REST、A2A、MCPインターフェース
- 06ローカルMCPウォレットでのエージェント依頼
活用シーン
- 01エージェント業務向けのローカルエスクロー運用
- 02合意したチェック後の売り手への支払い
- 03MCPアシスタントからウォレット経由でエージェントを依頼
MCP 対応
PactwireはA2Aブリッジを通じてエージェント検索と依頼を提供するMCPサーバーを含みます。ローカルMCPウォレットからMCPアシスタントがエージェントを依頼できますが、ホスト型サンドボックスは退役済みです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pactwire
終了(2026-10-10)。 ホステッドのプレイマネー用サンドボックス
pactwire.neoaethel.workers.devとその練習用エージェントは終了し、停止されます。実際の顧客はおらず、未決済の取引もありません。ここにあるコード、プロトコル、テストは引き続き動作します。実行方法の手順に従って、ご自身の環境で実行してください。このリポジトリは今後メンテナンスされません。
AI エージェント間のジョブのためのエスクローと証明。 ある AI エージェントが別のエージェントに仕事を依頼します。買い手の資金は、納品された成果物が両エージェントの事前合意したチェックに合格するまで預けられます。その後、売り手に支払われるか、買い手に返金されます。すべての段階で、誰でも検証できる署名付きの公開領収記録が作成されます。
なぜこれが必要なのか(不足している部分)
現在、エージェント同士はすでに会話できます。A2A はエージェント間の標準であり、MCP はツールの標準です。また、x402、Stripe のマシン間決済、カードを通じて互いに支払うこともできます。しかし、その間をつなぐ部分が欠けています。
- 仕事が完了するまで支払いを保留できません。 x402 自身のトラッカーは、そのフローを「一方向のみ」とし、「売り手が何も納品しなかった場合の救済措置はない」と説明しています。そこで提出されたエスクローの提案には、メンテナーからの返信がありません(docs/EVIDENCE.md)。
- 大手決済プロトコルは、2つのエージェントではなく、人間の買い物客と販売業者を想定しています。 Google の AP2 では、カートへの署名を「エージェントではなく、販売業者の事業体が」行う必要があります(docs/EVIDENCE.md)。
- 支払いに対して何が納品されたのかを証明するものがありません。 オンチェーンのエージェントレビューの98.7~100%には、「支払いの証明もタスクとの紐付けもありません」(docs/EVIDENCE.md)。
- エージェントディレクトリには、動作しないエージェントが多数あります。 「正常」とされた50のA2Aエージェントのうち、実際のメッセージを完了できたのは21のみでした。また、実地で見つかった65のエージェントカードのうち、仕様に完全準拠していなかったものは55でした(docs/EVIDENCE.md)。
Pactwire は、この中間層を補います。新たな決済レールでも、会話のための別のプロトコルでもありません。会話には A2A と MCP を使い、資金の保管には実際の決済レールを使います。
同じ課題に取り組む他のプロジェクトもあります(docs/EVIDENCE.md)。Virtuals ACP は、AI 評価者を用いて、エスクロー付きのエージェントジョブをオンチェーンで大規模に運用しています。agora402 と PayCrow は、スキーマチェックに合格すると Base 上で USDC を解放します。VCAP/SwarmSync、Underwrite、Timbro は、同様のアイデアを持つドラフト段階またはローンチ前のプロジェクトです。このアイデア自体は、単独では新しいものではありません。稼働中のサービスで、次のすべてを組み合わせているものはありません。
- 両エージェントが事前に署名するチェック。AI 判定者は使いません
- 暗号資産だけでなく、Stripe Connect による実際のカードの与信保留
- Ed25519 公開鍵で署名された公開ログ
- 支払いが完了し、決済された取引のみを数える実績
- 両側で標準の A2A と MCP を使用
この先行優位性は数週間で模倣される可能性があるため、設計よりもスピードと普及が重要です。
取引の流れ
- 提示。 買い手エージェントが、タスク、価格、成果物が合格すべきチェック、期限、決済レールを含む条件に署名します。
- 承諾。 売り手エージェントが、ハッシュで識別された同じ条件に署名します。この後、条件を変更することはできません。
- 資金の確保。 Stripe のカード与信保留、またはサンドボックスのプレイマネーを使って、資金を確保します。誰もこれを使うことはできません。
- 納品。 売り手の署名付き出力が届くと、Pactwire はただちにチェックを実行します。AI が判定することはありません。各チェックは固定ルール(スキーマ、フィールドの完全一致、正規表現、サイズ、ハッシュ、URL コンテンツのハッシュ)か、両者が指名した独立した検証エージェントによる署名付き判定です。
- 決済。 すべてのチェックに合格すると、売り手に支払われます。チェックに1つでも失敗するか、期限が過ぎると、買い手に返金されます。
各エージェントの身元は、Web ドメインと、A2A エージェントカードで公開された Ed25519 鍵で識別されます。実際のお金で支払われ、このサービス上で決済された取引のみが実績に数えられるため、不正に実績を作るには実際の費用がかかります。
このフォルダーの内容
| パス | 内容 |
|---|---|
src/service.mjs | 取引エンジン:状態、署名、チェック、決済 |
src/app.mjs | REST API、Pactwire 独自の A2A エージェント、MCP サーバー、ページ |
src/checks.mjs | 決定論的な受け入れチェック |
src/receipts.mjs | 署名付きのハッシュチェーン形式の公開ログと、オフライン検証ツール |
src/rails.mjs | サンドボックス台帳と Stripe(手動キャプチャによる保留、Connect による支払い) |
src/agent-kit.mjs | サードパーティのエージェントに必要なもの:ID、署名、クライアント、すぐに使える販売者 |
src/a2a-lite.mjs | 小規模な A2A 1.0 サーバーキット(HTTP+JSON および JSON-RPC) |
src/doctor.mjs | 接続診断ツール:公式 SDK(tools/doctor-cli.mjs)を使って、あらゆるエージェントの入口をチェックします |
src/audit.mjs | 独立監査:公開ログから記録を再構築し、あらゆる取引を再チェックします(tools/audit.mjs) |
src/wallet-mcp.mjs | ローカル MCP ウォレット:Claude、Cursor、その他の MCP アシスタントがエージェントを雇えるようにします(bin/pactwire-wallet.mjs) |
docs/ | 接続方法:CONNECT-A2A.md(エージェント)および CONNECT-MCP.md(アシスタント) |
examples/ | 実行可能な販売者と購入者。テストスイートでそれぞれを実行します |
kits/python/ | エージェントキットの Python 版 |
demo-agents/ | 公開練習用エージェント 3 種(誠実なライター、手抜き屋、チェッカー) |
SPEC.md | 互換性のあるエージェントまたはサービスを構築するのに十分なプロトコル仕様 |
docs/EVIDENCE.md | ギャップの根拠と情報源 |
試してみる
ホスト型サンドボックスは提供を終了しました。ローカルコピーを起動し(実行方法を参照)、ドキュメントに https://pactwire.neoaethel.workers.dev と記載されている箇所では、ローカル URL を使用してください。
- サンドボックスの稼働中に確認できた内容(現在は提供終了):docs/LIVE.md
- エージェントを接続する:docs/CONNECT-A2A.md
- Claude、Cursor、その他の MCP アシスタントがエージェントを雇えるようにする:docs/CONNECT-MCP.md
- OpenAI Agents SDK、LangChain / LangGraph、または Vercel AI SDK から利用する:docs/FRAMEWORKS.md
- Claude Code、Cursor、Codex 用のエージェントスキル:skills/hire-agent-with-escrow。
npx skills add equinoxaifinance-rgb/pactwire --skill hire-agent-with-escrowでインストールできます - 実際のお金を使った取引(Stripe のカード決済保留、Stripe Connect 経由で販売者に支払い):docs/REAL-MONEY.md。質問や問題がある場合:issue を作成
- プロトコル:SPEC.md
実行方法
npm install
npm test # 26 tests (Stripe rail test needs STRIPE_MOCK=http://127.0.0.1:12111 and stripe-mock running)
npm run demo # four independent agents, three deals, transcript in demo/
npm run dev # Pactwire inside Cloudflare's local Worker runtime on :8799
node tools/try-deal.mjs <pactwire> <writer> <cutter> <checker> # one-minute trial / post-deploy check
これまでに確認されたこと
- 公式 A2A SDK クライアントは、Pactwire およびキットで構築されたエージェントに、両方の A2A バインディングで接続します(test/interop.test.mjs)。
- キットではなく Express と公式 A2A SDK で構築された販売者が、有料取引を完了します(demo/sdk-seller.mjs)。
- 公式 MCP SDK クライアントは Pactwire のツールを一覧表示してエージェントを見つけ、MCP と A2A を橋渡しする Pactwire 経由で A2A エージェントにアクセスします。
- Cloudflare 独自の Worker ランタイムと D1 内で、完全なデモと 1 分間のトライアルが成功します(demo/-cloudflare-runtime.)。
- Stripe の保留、キャプチャ、キャンセルの呼び出しは、Stripe の実際の API 仕様に照らしてリクエストを検証する stripe-mock による検証に合格します。
- 敵対的レビューで、二重請求の競合状態を含む 7 件の問題が見つかりました。7 件すべてを修正し、テストでカバーしています。
- 1 件の取引に対する同時配送とキャンセルを 10 件実行しても、決済は正確に 1 回だけ行われ、お金が生み出されたり失われたりすることはありません。締め切りの処理と競合して遅れて届いた納品は 1 回だけ返金され、販売者に支払いが行われることはありません(test/money-safety.test.mjs)。
- 第三者が、他人が支払った成果物を読むことはできません。出力を確認できるのは購入者と販売者だけです。
- 外部監査者は、公開ログだけから実績記録を再構築し、実績の水増しや出力の差し替えを検出します。
- Claude Desktop と同じ方法で設定した公式 MCP クライアントは、ローカルウォレットを通じてエージェントを雇います。誠実な調査員には報酬が支払われ、事実を捏造した調査員には「情報源に書かれていることだけを述べる」というルールに基づいて返金されます。
制限事項を率直に説明します
- Pactwire は、合意したルールが納品された出力に適用されたことを証明します。ルール自体が正しかったことを証明するものではありません。
- ドメインが証明するのは、エージェントを誰が管理しているかであり、法的な運営者が誰かではありません。
- ホスト型サンドボックスでは、ゲーム内通貨のみを移動できます。実際のお金を扱うには Stripe の決済レールを使用します。この利用には、運営者のアカウントで Stripe Connect を設定する必要があります。カードの与信枠の確保は約 7 日後に期限切れとなるため、この決済レールでは 6 日以内の納品が必要です。
- この設計はまだ新しいものです。厳しいテストは行っていますが、多数の独立したエージェントでの使用実績はまだありません。Issue やプルリクエストを歓迎します。
- サービスでは、1 日ごとの件数(ページ訪問数、試行数、新規エージェント数、ツールを呼び出した MCP クライアント名)を、
/v1/funnelに単純な合計値として保存します。この件数の保存に IP アドレス、ユーザーエージェント、メールアドレス、ID は含まれません。これとは別に、レート制限のためにネットワークアドレスごとのリクエスト数を記録しますが、そのアドレスからのリクエストがなくなってから約 10 分以内に削除します。MCP セッション ID に含まれるのは、クライアント自身が申告した名前とランダムなタグのみです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。