面向 Agent 与开发者

面向 AI Agent 的 ROZO Checkout

ROZO Checkout 让 AI agent 能够支付 OpenRouter 的账单——也就是一条 Coinbase 支付链接——并且可以用闪电网络上的 BTC,或者 Solana、BNB Chain、以太坊、Polygon、Base、Stellar 上的 USDT/USDC 来付,而不必使用该链接原本要求的 Base USDC。下面所有接口都是公开 HTTP:不需要 API key,不需要账号,不需要浏览器,也不需要钱包连接弹窗,因此整个支付流程可以完整放进一个脚本或一次工具调用里。

完整演示视频:AI agent 通过 ROZO Checkout,用 Stellar 上的 USDC 支付 OpenRouter 账单。

一条命令

如果你的 agent 能执行 shell 命令,这就是全部的接入工作。它会完成报价、创建订单、展示即将发送的内容,,同时告诉你这笔订单还能有效多久,并一直等到账单结清为止。

Shell现已可用
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx

这个 URL 就是你的 OpenRouter 支付链接,从 OpenRouter 的 Buy Credits → Crypto 流程里复制。结尾的 xxx 只是用来表明这是示例——你自己的链接结尾是真实字符。

在终端里,它会先问你想用哪种币付款。你可以在提示处粘贴自己的钱包地址,它会标出哪些币你确实付得起——这只是展示层面的提示,绝不会改变最终签名的内容——并且会记住这个地址和你选的币,供下次使用。随后它会打印一个充值地址,你用任何钱包付款即可:不需要私钥,不需要环境变量,不需要任何配置

已经知道要用哪种币,或者你在写脚本?直接指定,跳过这个提问。agent 和脚本必须始终传 --with——选择器只在终端下出现,而且刻意不设默认币种。

Shell
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana

--with 接受 usdt-solanausdc-solanausdt-bnbusdc-bnbusdt-ethereumusdc-ethereumusdt-polygonusdc-polygonusdc-baseusdc-stellarbtc-lightning——参见支持的链。当 stdin 不是 TTY 时请加 --yes,需要 stdout 只输出一个 JSON 对象时加 --json。下面的内容都是同一笔支付,只是换成你已经在用的工具来表达。

选择你的工具

展开你正在用的那一项。对大多数工具来说负载完全相同——要么是上面那条 npx 命令,要么是让 agent 去读 /llms.txt。在所有这些方式里,你都是用自己的钱包付款,完全不涉及私钥;只有可选的 --send 参数才会在本地签名。

Claude Code安装 skill,或直接粘贴单行命令

这个仓库本身就是一个 Claude Code skill:它包含 SKILL.md 以及 scripts/dist/ 下的可执行文件。把它克隆到你的 skills 目录,Claude Code 就会自动识别。

Shell
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 CLI写进 AGENTS.md,或直接运行

Codex 会读取项目根目录下的 AGENTS.md。加一条常驻指令,它就不必每次都被告知该怎么付款:

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

或者你自己在会话里直接运行这条命令——它不需要任何配置。

OpenCode写进 AGENTS.md,或直接运行

OpenCode 同样会读取项目根目录下的 AGENTS.md,所以上面 Codex 那段可以原样使用。最短的路径依然是命令本身:

Shell
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Cline写进 .clinerules,或直接运行

Cline 从项目根目录的 .clinerules 读取常驻指令。把同样的规则放进去:

.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/ 下加一条项目规则,让 agent 知道这条命令:

.cursor/rules/rozo-checkout.mdc
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 出品)拥有 shell 权限和自己的 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 的无头入口用于执行一次性任务,很适合从脚本或聊天频道触发的付款:

Shell
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 终端 agent,其内置工具包含 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
终端——完全不用 agent逐步运行脚本

如果你想自己掌控每一步,就克隆仓库并直接运行脚本。它们都是自包含的打包产物——除了 Node 18+ 之外无需安装任何东西。

Shell
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 对象;退出码 0 表示成功,1 表示被拒绝或失败(请读取 error.code),2 表示用法错误,3 表示已提交但未确认。

用自己的钱包付款是默认方式,完全不需要私钥。如果你更希望由这台机器代你签名——仅支持 EVM 链和 Solana——请使用 send-evm.jssend-sol.js。Solana 上它们用 solana-keygen 早已生成的 ~/.config/solana/id.json;EVM 上用加密的 V3 keystore,密码会在运行时提示输入,绝不作为命令行参数传入。无人值守的运行仍可使用环境变量里的裸私钥。这条路径只有一个限制:单笔付款不得超过 1,100 美元,且无法覆盖。金额更大的账单请走上面那条无需私钥的路径。

状态流转依次为 awaiting_depositpayin_detectedpayin_confirmedbridgingpaying_coinbasesettled。你的链上交易被确认并不代表流程结束——请持续轮询直到 settled

任何其他 agent让它去读 /llms.txt

任何能抓取 URL 并执行命令的 agent 都可以做到。一行搞定,无需配置:

提示词
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

如果 agent 没有 shell 但能发 HTTP 请求,就直接驱动下面那四个原始调用

原始 HTTP,适用于任意框架

四次调用,全部公开且无需密钥。CLI 和 skill 都构建在这一层之上,因此任何框架——LangChain、一次 OpenAI 工具调用、一个定时任务——都可以直接驱动它。

Shell现已可用
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 限流(约每小时 30 次);读取类接口不限流。只有当 router 报告 paid / coinbase.settled 时,这条 Coinbase 链接才算真正结清——仅仅出现 intents 状态 payment_completed 只代表跨链桥的生命周期,并不等于最终结算完成。

值得写进代码的错误:409 链接已被使用 · 410 链接已过期 · UNSUPPORTED_SOURCE(响应中的 supported 对象会列出有效的链与代币组合;闪电网络受支持,但不会出现在该列表中)· RATE_LIMITED 按 IP 的创建频率上限,请稍后重试。

机器可读版本。同样的流程、接口和安全规则以纯文本形式发布在 checkout.rozo.ai/llms.txt——请让你的 agent 读取那份文件,而不是本页面。

你需要准备什么

一个持有受支持代币的钱包,且代币位于下列某条链上。原生 gas 代币不被接受:SOL、ETH、BNB 和 MATIC 无法完成结算,链上 BTC 同样不行。

Chain id代币说明
Ethereum1USDC, USDT6 位小数
BNB Chain56USDC, USDT18 位小数——最常见的 1012 数量级错误来源
Polygon137USDC, USDT6 位小数
Base8453USDC6 位小数
Solana900USDC, USDT6 位小数;SPL 代币。原生 SOL 受支持
Stellar1500USDC7 位小数;充值必须带 memo,且类型必须是 MEMO_TEXT——即使 memo 全是数字也一样。在钱包里选成 MEMO_ID 会产生一个不同的 memo,这笔付款就匹配不上
Bitcoin LightninglightningBTC金额为整数聪(satoshi),通过 BOLT11 invoice 支付
  1. Node 18 或更高版本,用于 CLI 与 skill 两种方式(node -v)。原始 HTTP 方式只需要一个 HTTP 客户端。
  2. Coinbase 支付链接,例如 https://payments.coinbase.com/payment-links/pl_01YOURLINKID
  3. 无需账号,也无需 API key。本页面上的所有接口都是公开的。
  4. 默认路径不需要任何私钥。用你自己的钱包向充值地址付款,不需要私钥、不需要环境变量,也不需要任何配置。只有可选的 --send 参数会在本地签名,它的私钥来自 Solana 的 ~/.config/solana/id.json,或 EVM 上的加密 keystore(密码会在运行时提示输入);无人值守的自动化仍可用环境变量里的裸私钥,但私钥永远不会通过命令行参数传入。这条签名路径将单笔付款上限设为 1,100 美元;金额更大的走无需私钥的路径。

我需要什么钱包?

一个钱包、一条链就够了——不需要每条链各准备一个。从上面的表里挑一种你已经持有的币,然后从它现在所在的地方付款即可。

关于安全,说实话

付错金额、付错代币、付错网络,或者重复付款,通常都是不可挽回的。以下是最关键的几条安全约束;即使你要自己写客户端,也请把它们实现进去。

完整清单——两阶段确认、资金已检测规则(money-detected rule)、失陷地址黑名单、跨进程的一次性发送锁、热钱包限额与地址掩码——记录在 GitHub 仓库的 Safety design 一节。

支付你的第一笔账单

一条命令,无需账号,无需 API key。SKILL.md 是写给 agent 看的,QUICKSTART.md 是写给做接入的开发者看的。

打开 rozo-checkout-skill 阅读 /llms.txt