ただし一つ問題があります。支払い方法を決めるのはエンドポイント側で、エージェントが出会う x402 エンドポイントは通常、Base や Solana など特定のネットワーク上の USDC を求めます。一方でエージェントが持っているのは別のものかもしれません。Solana の USDT、Stellar の USDC、あるいは BNB Chain の USDT です。呼び出しのたびにブリッジするのも現実的ではありません。x402 の支払い要件は数分しか有効でなく、チェーン間の送金はたいていそれより時間がかかるからです。
ROZO は独立したサービスで、どの x402 販売者とも提携していません。
一度チャージして、何度でも支払う
ROZO の x402 ペイヤーは、この問題を二つに分けます。まず、すでに持っているコインで、いつも使っているチェーンから ROZO 残高に一度だけチャージします。その後は、Base の USDC を受け付けるエンドポイントへの x402 呼び出しごとに、その残高から数秒で、支払い期限内に支払いが行われます。
エージェントがシェルコマンドを実行できるなら、連携はこれだけです。
- 残高に一度チャージします。使い切りの入金アドレスが表示されるので、自分のウォレットから支払います:npx @rozoai/checkout x402 topup 20 --with usdt-solana
- 有料エンドポイントを呼び出します。CLI が 402 を読み、ROZO が署名し、支払い付きでリクエストが再送されます:npx @rozoai/checkout x402 pay https://api.example.com/v1/search --method POST --body '{"q":"..."}'
- 残高を確認します:npx @rozoai/checkout x402 balance
x402 pay の中で起きていること
リクエストはあなたのマシンからエンドポイントへ直接送られます。402 が返ってくると、CLI は支払い要件を読み取り、Base の USDC の選択肢だけを残して、その一件の支払いへの署名を ROZO に依頼します。その後、PAYMENT-SIGNATURE ヘッダーを付けて元のリクエストを再送し、レスポンスを表示します。
各支払いには idempotencyKey が付き、同じ支払いの再試行では同じキーを使うため、タイムアウトしても二重に請求されることはありません。
シェルがない場合は、同じ支払いを二つの主要な HTTP エンドポイント /v1/x402/topup と /v1/x402/sign で行えます。エージェントキーを bearer token として送り、エージェントが署名付きで自分のリクエストを再送します。x402 のページに両方の呼び出し例があります。
お金を守る仕組み
エージェントにウォレットを持たせるのは現実的なリスクです。そのためペイヤーは最小限の権限を前提に作られています。
- キーが使えるのは残高だけです。最初のチャージで ak_ から始まるエージェントキーが作られます。このキーは ROZO 残高からの支払いだけができ、それ以外は何もできません。あなた自身のウォレットには一切触れず、ROZO があなたのウォレットの鍵を預かることもありません。ROZO が保存するのはエージェントキーのハッシュだけです。
- すべての支払いに上限があります。デフォルトでは 1 回の支払いは最大 $5、1 つのキーが使えるのは 1 日最大 $100 です。どちらもデフォルト値で、キーごとに調整できます。キーを payTo アドレスのリストに限定することもでき、CLI は --max-usd で設定した上限を超える支払いを拒否します。
- 毎回一度きりの支払いで、サブスクリプションではありません。呼び出しのたびに販売者からの新しい 402 と ROZO の新しい署名が必要です。販売者が後から追加で引き落とす継続的な権限を得ることはありません。
- リクエストの中身はあなただけのものです。有料リクエストはあなたのマシンからエンドポイントへ送られます。ROZO はリクエスト本文、ヘッダー、そのサービスで使う API キーを見ることはありません。ROZO が見るのは署名を依頼された支払い要件、つまり誰に、いくら、どのネットワークで支払うかだけです。
チャージに使えるもの、支払われるもの
経路は二つあり、あえて分けて示しています。
チャージ側(あなたから ROZO へ):
- Solana、BNB Chain、Ethereum、Polygon の USDT
- Solana、BNB Chain、Ethereum、Polygon、Base、Stellar の USDC
ネイティブコインや sats をお持ちですか?それらは checkout.rozo.ai の ROZO Checkout で OpenRouter のチャージに使えます。
支払い側(ROZO から x402 販売者へ):
- Base(eip155:8453):USDC、x402 スキーム exact
- Solana:今後対応予定
販売者が受け取るのは常に USDC です。x402 の exact 支払いはトークン送金だからです。USDT は残高へのチャージにだけ使われ、販売者には USDC が支払われます。Solana の USDC しか受け付けないエンドポイントの場合、CLI は請求が発生する前に X402_UNSUPPORTED で停止します。
最低チャージ額は $5 で、チャージには 1% の手数料がかかります。残高からの x402 支払いは、販売者が求める金額だけです。残高の払い戻しはまだセルフサービスではありません。マスクしたキーと金額を hi@rozo.ai にメールすると、指定したチェーンで残高が返送されます。
今すぐ使えます
ペイヤーはすでに利用できます。checkout.rozo.ai/x402 のページに、三つのコマンド、HTTP 呼び出し、上限、FAQ がまとまっています。すべてのエラーコードを含む完全なリファレンスは docs.rozo.ai にあります。エージェントは同じ手順を、安全ルールと再試行の指針とあわせて、checkout.rozo.ai/llms.txt と GitHub の RozoAI/rozo-checkout-skill リポジトリで読めます。
手持ちのコインで一度チャージして、エージェントが呼び出す API の支払いはエージェント自身に任せましょう。