AI エージェント向け ROZO Checkout
ROZO Checkout を使うと、AI エージェントが OpenRouter の請求 — つまり Coinbase の決済リンク — を、リンクが本来要求する Base USDC ではなく、Lightning 経由の BTC や、Solana・BNB Chain・Ethereum・Polygon・Base・Stellar 上の USDT/USDC で支払えます。以下のエンドポイントはすべて公開 HTTP です。API キーもアカウントもブラウザもウォレット接続のポップアップも不要なので、決済処理全体をスクリプトや 1 回のツール呼び出しに収められます。
たった 1 つのコマンド
エージェントがシェルコマンドを実行できるなら、これだけで組み込みは完了です。リンクの見積り、注文の作成、送金内容の表示を行い、請求が決済されるまで待ちます。注文があとどれくらい有効かも表示されます。
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx
この URL があなたの OpenRouter 決済リンクで、OpenRouter の Buy Credits → Crypto の流れからコピーします。末尾の xxx は例であることを示すためのもので、実際のリンクは本物の文字で終わります。
ターミナル上では、どの通貨で支払うかを尋ねます。プロンプトで自分のウォレットアドレスを貼り付けると、実際に支払える通貨に印を付けてくれます — これは表示上のヒントにすぎず、署名される内容を変えることは一切ありません — そのアドレスと選んだ通貨は次回のために記憶されます。そのあと、どのウォレットからでも支払える入金アドレスを表示します。秘密鍵も環境変数も設定も不要です。
使う通貨がもう決まっている場合や、スクリプトを書いている場合は、通貨を指定して質問を飛ばせます。エージェントとスクリプトは必ず --with を渡してください — ピッカーはターミナルでしか表示されず、既定の通貨は意図的に用意されていません。
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
--with は usdt-solana、usdc-solana、usdt-bnb、usdc-bnb、usdt-ethereum、usdc-ethereum、usdt-polygon、usdc-polygon、usdc-base、usdc-stellar、btc-lightning を受け付けます — 対応チェーン一覧をご覧ください。stdin が TTY でない場合は --yes を、stdout に JSON オブジェクトをちょうど 1 つだけ出力したい場合は --json を付けてください。以下はすべて同じ決済を、あなたがすでに使っているツールで表現したものです。
ツールを選ぶ
お使いのものを開いてください。ほとんどのツールで中身は同じです — 上の npx コマンドを実行するか、エージェントに /llms.txt を読ませるかです。いずれの場合も自分のウォレットから支払うので、鍵は一切関係しません。ローカルで署名するのは任意の --send フラグだけです。
Claude Codeskill を入れる、またはワンライナーを貼る
このリポジトリ自体が Claude Code の skill です。SKILL.md と scripts/dist/ 配下の実行ファイルが同梱されています。skills ディレクトリにクローンすれば Claude Code が自動的に認識します。
git clone https://github.com/RozoAI/rozo-checkout-skill ~/.claude/skills/rozo-checkout
あるいは設定を一切せず、任意のセッションにこれを貼り付けてください:
Pay this OpenRouter link with USDT on Solana using: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Codex CLIAGENTS.md に書く、または直接実行
Codex はプロジェクトルートの AGENTS.md を読みます。常設の指示を追加しておけば、毎回説明しなくても支払い方がわかります:
## Paying OpenRouter invoices To pay a payments.coinbase.com link, run: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana Full reference: https://checkout.rozo.ai/llms.txt
あるいはセッション内で自分でコマンドを実行するだけでも構いません — 設定は不要です。
OpenCodeAGENTS.md に書く、または直接実行
OpenCode もプロジェクトルートの AGENTS.md を読むので、上の Codex 用のスニペットをそのまま使えます。最短の方法はやはりコマンド自体です:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Cline.clinerules に書く、または直接実行
Cline はプロジェクトルートの .clinerules から常設の指示を読み込みます。同じルールを入れてください:
To pay an OpenRouter / Coinbase payment link, run: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana Full reference: https://checkout.rozo.ai/llms.txt
Cline はコマンドを実行する前に確認を求めます。決済においてはまさに望ましい挙動です。
Cursor.cursor/rules に書く、または直接実行
.cursor/rules/ にプロジェクトルールを追加して、エージェントにコマンドを教えます:
To pay an OpenRouter / Coinbase payment link, run: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana Full reference: https://checkout.rozo.ai/llms.txt
あるいは Cursor のターミナルでコマンドを実行するだけでも構いません — ルールは不要です。
Hermes Agentセッション内でワンライナーを実行
Hermes Agent(Nous Research)はシェルへのアクセスと独自の skill 機構を持っています。hermes で起動して、コマンドの実行を依頼してください:
Fetch https://checkout.rozo.ai/llms.txt, then pay this OpenRouter link: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
OpenClawopenclaw agent exec
OpenClaw のヘッドレス実行は単発のタスク向けで、スクリプトやチャットチャンネルから起動する決済に向いています:
openclaw agent exec "Pay this OpenRouter link with USDT on Solana by running: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana"
Piセッション内でワンライナーを実行
Pi は BYOK のターミナルエージェントで、組み込みツールに bash を含むため、コマンドを直接実行できます。pi で起動して、こう依頼してください:
Pay this OpenRouter link with USDT on Solana by running: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
ターミナル — エージェントなしスクリプトを順に実行
各ステップを自分で進めたい場合は、リポジトリをクローンしてスクリプトを実行してください。自己完結型のバンドルなので、Node 18+ 以外にインストールするものはありません。
git clone https://github.com/RozoAI/rozo-checkout-skill cd rozo-checkout-skill LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID" # 1. Quote — read-only, costs nothing node scripts/dist/quote.js --url "$LINK" # 2. Create the order. No money moves; the full deposit address is # WITHHELD and you get a masked summary to review first. node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT # 3. Only once you have decided to pay, re-run with --confirm to # release the full deposit block. node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confirm # 4. Pay the deposit block from any wallet — no key, no configuration. # Send exactly the amount, token, chain and every other field it gives # you, copied from the JSON and never retyped. # 5. Watch it settle node scripts/dist/status.js --rozo-payment-id <rozoPaymentId> --watch --timeout 600
各スクリプトは stdout に JSON オブジェクトをちょうど 1 つだけ出力します。終了コードは 0 が成功、1 が拒否または失敗(error.code を読んでください)、2 が使い方の誤り、3 が送信済みだが未確認です。
自分のウォレットから支払うのが既定の方法で、鍵は必要ありません。この端末に署名させたい場合は — EVM チェーンと Solana のみ — send-evm.js または send-sol.js を使います。Solana では solana-keygen がすでに作成した ~/.config/solana/id.json を、EVM では暗号化された V3 keystore を使い、そのパスフレーズは実行時に入力を求められます(フラグで渡すことはありません)。無人実行では環境変数の生の鍵も引き続き使えます。この経路には制限が 1 つだけあります。1 回の支払いは 1,100 ドルを超えられません。上書きはできません。これより大きい請求は、上記の鍵不要の経路で支払ってください。
状態は awaiting_deposit → payin_detected → payin_confirmed → bridging → paying_coinbase → settled と遷移します。オンチェーンのトランザクションが確認されても、それで終わりではありません。settled になるまでポーリングを続けてください。
その他のエージェント/llms.txt を読ませる
URL を取得してコマンドを実行できるエージェントなら何でも可能です。1 行で済み、設定は不要です:
Fetch https://checkout.rozo.ai/llms.txt into your context, then use it to pay this OpenRouter link: https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx
シェルは無いが HTTP リクエストは送れるエージェントの場合は、下の4 つの生の呼び出しを直接叩いてください。
生の HTTP — あらゆるフレームワーク向け
4 回の呼び出しだけで、すべて公開・鍵不要です。CLI も skill もこの層の上に載っているので、どんなフレームワークからでも — LangChain、OpenAI のツール呼び出し、cron ジョブ — 直接叩けます。
MPP="https://apiserver.mpprouter.dev/v1/services/rozo-agent-api" INTENTS="https://intentapiv4.rozo.ai/functions/v1/payment-api" LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID" # 1. Quote: merchant, amount, expiry, and a ~60-second quoteReceipt. # callerPays always equals the invoice amount; discount is always "0". curl -s -X POST "$MPP/quote-invoice" \ -H 'content-type: application/json' \ -d "{\"url\":\"$LINK\"}" # 2. Create a bridge order for, say, USDT on Solana. # Creates an order but moves no money; an unfunded order simply expires. curl -s -X POST "$MPP/create-invoice" \ -H 'content-type: application/json' \ -d "{\"url\":\"$LINK\",\"source\":{\"chainId\":\"900\",\"tokenSymbol\":\"USDT\"}}" # 3. Authoritative deposit instructions, using the rozoPaymentId above. # Pay EXACTLY source.amount of the requested token on the requested chain # to source.receiverAddress, including source.receiverMemo when present. # For Lightning, pay the BOLT11 in source.lnInvoice. curl -s "$INTENTS/payments/<rozoPaymentId>" # 4. Fulfilment status, using the Coinbase linkId. curl -s "$MPP/invoice-status?payment_id=pl_01YOURLINKID"
create-invoice は IP 単位のレート制限があります(1 時間あたり約 30 回)。読み取り系エンドポイントに制限はありません。Coinbase のリンクが決済完了と見なされるのは、ルーターが paid / coinbase.settled を返したときだけです。intents の状態が payment_completed になっただけでは、それはブリッジのライフサイクルであって最終的な決済完了ではありません。
実装に組み込むべきエラー: 409 リンクは使用済み · 410 リンクは期限切れ · UNSUPPORTED_SOURCE(レスポンスの supported オブジェクトに有効なチェーンとトークンの組み合わせが列挙されます。Lightning はサポート対象ですが、このリストには含まれません)· RATE_LIMITED IP 単位の作成上限、時間をおいて再試行してください。
必要なもの
対応トークンを保有するウォレットと、そのトークンが乗っているチェーン。ネイティブのガス通貨は受け付けません。SOL、ETH、BNB、MATIC では決済されません。オンチェーンの BTC も同様です。
| チェーン | Chain id | トークン | 備考 |
|---|---|---|---|
| Ethereum | 1 | USDC, USDT | 小数点以下 6 桁 |
| BNB Chain | 56 | USDC, USDT | 小数点以下 18 桁 — 1012 桁ずれのバグが起きる典型的な原因 |
| Polygon | 137 | USDC, USDT | 小数点以下 6 桁 |
| Base | 8453 | USDC | 小数点以下 6 桁 |
| Solana | 900 | USDC, USDT | 小数点以下 6 桁。SPL トークン。ネイティブ SOL は非対応 |
| Stellar | 1500 | USDC | 小数点以下 7 桁。入金には memo が必須で、種別は MEMO_TEXT — memo がすべて数字の場合も同じです。ウォレットで MEMO_ID を選ぶと別の memo になり、支払いが照合されません |
| Bitcoin Lightning | lightning | BTC | 金額は整数の satoshi。BOLT11 インボイスで支払います |
- Node 18 以降が CLI と skill の方法に必要です(
node -v)。生の HTTP の方法は HTTP クライアントだけあれば足ります。 - Coinbase の決済リンク。例:
https://payments.coinbase.com/payment-links/pl_01YOURLINKID - アカウントも API キーも不要です。このページのエンドポイントはすべて公開されています。
- 既定の経路に鍵は不要です。自分のウォレットから入金先アドレスに支払う場合、秘密鍵も環境変数も設定も一切必要ありません。ローカルで署名するのは任意の
--sendフラグだけで、その鍵は Solana では~/.config/solana/id.json、EVM では暗号化された keystore(パスフレーズは実行時に入力)から取得します。無人実行では環境変数の生の鍵も使えますが、鍵をコマンドライン引数から受け取ることは決してありません。その署名経路では 1 回の支払いが 1,100 ドルまでに制限されます。これより大きい金額は鍵不要の経路で支払ってください。
どのウォレットが必要ですか?
ウォレットは 1 つ、チェーンも 1 つで足ります — チェーンごとに用意する必要はありません。上の表から、すでに持っている通貨を選び、それが今ある場所から支払ってください。
- どのウォレットでも構いませんし、取引所からの出金でも構いません。既定の経路は入金情報を表示するだけです。示された金額・トークン・チェーンのとおりに、その住所へ送るだけです。このサイトに接続することも、ブラウザで承認することもありません。実際には、EVM チェーンでは MetaMask や Rabby、Solana では Phantom や Solflare、BTC では Phoenix や Wallet of Satoshi といった Lightning ウォレットがよく使われています。
- 注意が必要なのは Stellar です。Stellar の入金は共有アドレスと memo の組み合わせで振り分けられるため、取引所であれウォレットであれ、送信元で memo を設定できる必要があります。memo を省くと、その支払いは失われます。memo の種別は常に
MEMO_TEXTで、memo がすべて数字の場合も変わりません。65371582は id ではなくテキストです。ウォレットでMEMO_IDを選ぶと別の memo になり、決して照合されません。入金情報には種別がreceiverMemoTypeとして示されます — そのとおりに送ってください。 - Lightning はアドレスではなくインボイスに支払います。入金情報にある BOLT11 の文字列をスキャンまたは貼り付けてください。送金先アドレスというものはありません。
- 鍵が必要なのは
--sendだけで、対象は EVM チェーンと Solana のみです — Stellar と Lightning に--sendはありません。署名はローカルで行われ、Solana ではsolana-keygenがすでに作成した~/.config/solana/id.jsonを、EVM では暗号化された keystore(パスフレーズは実行時に入力を求められます)を使います。無人実行では環境変数の生の鍵も引き続き利用できます。このページのそれ以外はすべて鍵不要です。
安全性について、正直に
金額、トークン、ネットワークを間違えること、そして二重に支払うことは、たいてい取り返しがつきません。特に重要なガードは以下のとおりです。自分でクライアントを書く場合も、これらは必ず実装してください。
- 入金アドレスは 1 回限りで、見積りに紐づいています。古い注文、キャッシュされたレスポンス、ドキュメントに載っているアドレスを再利用しないでください。送金の直前に、同じ実行の中で入金情報を取り直してください。
- 余裕をもって期限を守ってください。注文の期限と Coinbase リンクの期限のうち早いほうから、チェーンごとのマージンを引いた時刻を過ぎていれば送金しないでください。マージンは EVM と Stellar で 10 分、Solana で 5 分です。Lightning の BOLT11 は、さらに有効期限が 10 分以上残っている必要があります。入金情報、確認サマリー、
statusのいずれも、残り時間を変換の要らない素直な期間として表示します(expires in 47m)。入金しなかった注文は自動的に期限切れになり、費用は一切かかりません。期限切れにしてやり直すのは常に安全です。 - 入金済みの注文に二重で支払わないでください。あるリンクに未期限の注文がすでに存在する状態で注文を作成すると、その既存の注文がそのまま返されます。すでに入金済みであっても、また依頼したものと違うチェーンやトークンであっても同様です。返ってきた source が依頼内容と一致しているか検証し、送金前にその注文が未払いであることを必ず確認してください。ウォレットから資金がいったん出てしまったら、新しい注文を作り直して再試行してはいけません。
linkId、rozoPaymentId、すべてのトランザクションハッシュを保存し、ポーリングを続け、人間による照合に回してください。 - 割引はありません。支払うのは請求額そのものです。
callerPaysは常に請求額と等しく、discountは常に"0"です。代表的な例を挙げると、1,000 ドル分の OpenRouter クレジットは、OpenRouter 自身の 5% の暗号資産手数料が加わって 1,050.00 ドルの請求になり、支払うべき額はこの 1,050.00 ドルです。実際に送る入金額はそれよりさらに少し多くなります。ブリッジ手数料と送信元チェーンの手数料が上乗せされるためです。先に進む前に、表示された入金額を確認してください。 - ブロードキャストの直前に支払い可能かを再確認してください。Coinbase のリンクは、いつ別の支払者に使われてもおかしくありません。
完全な一覧 — 2 段階の確認、money-detected ルール、危殆化アドレスのブラックリスト、プロセスをまたぐ送金 1 回限りのロック、ホットウォレットの上限、アドレスのマスキング — は GitHub リポジトリの Safety design に記載しています。
最初の請求を支払う
コマンド 1 つ、アカウント不要、API キー不要。SKILL.md はエージェント向け、QUICKSTART.md は組み込む開発者向けに書かれています。
rozo-checkout-skill を開く /llms.txt を読む