エージェントがお金を払って私にメッセージを送れるかどうか試してみたかったのです。
人間が問い合わせフォームに入力するわけでも、CAPTCHAを解くわけでもありません。財布を持ち、任務を帯び、私に連絡を取りたいと願うエージェントのことです。
私は特別な存在ではありません。単に、コンピュータが何かを伝えたいと思うような、ありふれた人間に過ぎないのです。
連絡先ページに記載されている通り、人間ならLinkedInやXを通じていつでも私に連絡できます。
もしこのサイトに連絡先エンドポイントを設置すれば、監視すべき受信箱がまた一つ増えることになる。スパム、ボット、冷やかし。CAPTCHAは人間を遮断する。支払いはすべての人を遮断するが、クレジットカードもまた人間を遮断する。私には、エージェントの働き方に本来的な何かが必要だった。
x402こそがそのゲートです。これは、インターネット上で支払いのために予約されていたものの、定義されなかったステータスコード「HTTP 402 Payment Required」に基づいて構築されたプロトコルです。x402がそれを定義しています。 サーバーは、価格とstablecoinアドレスを伴う402を返します。エージェントは応答を読み取り、ウォレットで許可証に署名し、支払いヘッダーを付けて再試行すると、サーバーはチェーン上で決済を確定します。チェックアウトページも、フォームも、アカウントも不要です。必要なのはステータスコードと署名だけです。
人にとってはひどい体験だ。しかし、エージェントにとっては素晴らしい体験だ。
仕組み
エンドポイントは、このサイトの /contact/send にあります。エージェントは、OpenAPI仕様またはagents.mdを通じてこれを発見します。最初のPOSTリクエストには支払いヘッダーが含まれません。サーバーは、価格、受け入れ可能な資産、および含めるべきフィールドを記述したスキーマを伴う402を返します。エージェントには、レスポンス自体以外のドキュメントは必要ありません。
sequenceDiagram
participant Human as Human
participant Agent as Agent
participant Site as benmilne.com
participant Facilitator as x402 Facilitator
participant Chain as Blockchain
participant Admin as Admin Panel
Human-->>Agent: "Contact Ben Milne about X"
Agent-->>Site: POST /contact/send (no payment)
Site-->>Agent: 402 + price + assets + field schema
Agent-->>Agent: Sign stablecoin permit
Agent-->>Site: POST + PAYMENT-SIGNATURE + message body
Site-->>Facilitator: Verify signature
Facilitator-->>Site: Valid
Site-->>Facilitator: Settle
Facilitator->>Chain: On-chain transfer (SBC)
Chain-->>Facilitator: Tx hash
Facilitator-->>Site: Settlement confirmed
Site-->>Site: Store message in D1
Site-->>Agent: 200 + receipt with tx hash
Admin-->>Admin: Message appears with block explorer link
rect rgba(200, 120, 50, 0.08)
Note over Human,Admin: Future: callback URL enables two-way communication
end
The Stable Coin Companyは、エージェントの署名付き許可証を検証し、オンチェーン送金を実行するファシリテーターを運営しており、両当事者に代わってガス代を支払います。エージェントはETHやSOLを保有する必要はありません。エージェントが保有するのは、支払いに使用する1つの資産だけです。
始め方
このために、x402-payment-path という小さなライブラリを作成しました。このライブラリは、402チャレンジ、署名検証、決済、および領収書の生成を処理します。
基盤となるプロトコルはx402です。これは、Coinbaseがオープンソース化し、現在はx402 FoundationがLinux Foundationのプロジェクトとして維持管理している、stablecoinネイティブの決済標準です。The Stable Coin Companyはファシリテーターを運用しており、Base、Solana、Radius上でUSDCとSBCの両方をサポートしています。私はSBCを使用しました。これは、私が最も熟知している資産だからです。
メッセージではなく製品向けにこれを実装したい場合は、支払い後の処理を変更します。メッセージを保存する代わりに、ダウンロードURLを生成したり、Webhookをトリガーしたり、発送手続きを開始したりすることになります。ライブラリは、そのアクションが何であるかは問いません。単に、支払いによってそのアクションを有効にするだけです。
決定事項
このエンドポイントは、USDCとSBCの両方を受け付けます。私がSBCを選んだのは、これが私が最もよく知っている資産であり、両方のチェーンでエンドツーエンドの検証を行いたかったからです。
私は2つのウォレットを持っています。私のEVMウォレットはBase上でSBCを受信し、別のSolanaウォレットはSolana上でSBCを受信します。エンドポイントは同じ、価格も同じですが、決済経路が異なります。
メッセージはD1テーブルに格納されます。管理パネルでそれらを確認します。メール転送もなく、監視すべき受信箱もありません。メッセージは、単なるメッセージである以外、何もできないようにすべきです。
価格は1ドルです。スパムを行うには割に合わないほど高く、正当なエージェントにとっては些細な金額です。
機能しています
以下は2026年6月13日の実際の取引です。各メッセージの費用はSBCで0.10ドルでした。決済はオンチェーンで行われました。
| 送信者 | ネットワーク | 金額 | トランザクション |
|---|---|---|---|
cursor-agent/0.46.2 | ベース | 0.10 SBC | BaseScan |
claude-research-agent/1.2 | Base | 0.10 SBC | BaseScan |
e2e-test-agent | Base | 0.10 SBC | BaseScan |
e2e-test-agent | Solana | 0.10 SBC | Solscan |

これが私の管理画面です。メッセージが7件あります。BaseとSolanaです。それぞれ、画面に表示される前にチェーン上で決済済みでした。
メッセージの送信
エージェントを構築する場合は、エンドポイントは POST benmilne.com /contact/send です。これは OpenAPI 仕様書および agents.md に記載されています。
支払いヘッダーを指定せずにPOSTすると、サーバーは必要な情報をすべて含む402レスポンスを返します。x402クライアントライブラリが、そこから署名と再試行を処理します。料金はBaseおよびSolanaで1 SBCです。コールバックURLを指定していただければ、将来的にそのURLで返信できるようになります。
学んだこと
402レスポンスは機械可読な請求書です。エージェントにはUIは必要ありません。必要なのは価格、アセットアドレス、そしてネットワークだけです。署名し、支払いを行い、再試行します。
「キーレス」を謳うコミュニティのファシリテーターを通じて、USDCのサポートを追加しようと試みました。しかし、許可不要で動作するものは一つもありませんでした。あるものはアドレスの登録を必要とし、別のものはバージョンの非互換性がありました。The Stable Coin Company経由のSBCだけが、一切の設定なしで動作する唯一のファシリテーターでした。 鍵も、アカウントも、登録も不要です。エージェントが、人間による事前の設定なしに支払いを行えるようにしたい場合、これは重要なポイントです。
もう一つ驚いたのは、MetaMaskもPhantomも、私が何度も承認したにもかかわらず、ウォレット内のSBCを隠し続けていたことです。トークンを追加し、取引を確認し、残高をチェックしても、その資産はまた消えていました。テスト中、この現象が繰り返し発生しました。 両チームの取り組みには敬意を抱いていますが、規制対象の発行元から入手した自分の資産を使いたいと、自分のデバイス上のウォレットに何度も伝えなければならないのは、馬鹿げていると感じました。インターネットは広大です。ウォレットは、ユーザーがすでに下した選択を信頼すべきです。
私がこのために使用したコードはオープンソースであり、MetaMaskやPhantomがあなたの行動に影響を与えようとしなければ、自由に好きなように利用して構いません。