Rozo Checkout
by RozoAI · remote · no sign-in to list tools · v0.2.1 · published by GitHub user RozoAI
Pay OpenRouter and Coinbase payment links with USDC, USDT, ETH, BNB, POL, SOL or BTC Lightning.
10 tools: 8 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things8Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http checkout https://mcp.rozo.ai/mcp?src=registryFindings
Matches of fixed checks, with the text they matched.
The server marks "stellar_wallet_get_signing_request" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "stellar_wallet_get_signing_request" says "get": a word for reading.
The description is 2,154 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...itting). This server never sees your key. Then call stellar_wallet_submit_signed."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 8Claude Code: ask
create_deposit_orderCreates a one-time deposit order; you pay from your own wallet.No findings
Why it is in this group
- The name "create_deposit_order" says "create": a word for a change.
Description, as the server wrote it Creates a one-time deposit order; you pay from your own wallet. Returns the deposit address (or Lightning invoice), the exact amount to send (also in base units with the token decimals), any required memo, the expiry and the rozoPaymentId. This server holds no keys and sends nothing. Send exactly the amount, on exactly that chain and token, before expiresAt. An unfunded order simply expires at no cost. For a native coin the result also carries quoteExpiresAt (the end of the price lock, which expiresAt equals): send the exact coin amount before it. Native coins (ETH on Ethereum, Base, Arbitrum; BNB on BNB Chain; POL on Polygon; SOL on Solana) are exact-out like Lightning: the order states the exact coin amount, priced at the current rate plus an FX spread on top of the service fee, and that price holds only until quoteExpiresAt. Native orders are capped at $2000 per invoice (native ETH on Ethereum needs at least $1), and a native coin is offered only when quote_invoice lists it for that invoice. ZEC on Zcash (Beta) is not available through this server: send a payer holding ZEC to https://checkout.rozo.ai/zec.
Annotations the server declares
- title: Create a deposit order
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
funding_capabilitiesWhat the keyless ROZO Funding API supports right now: whether stellar_onboarding is on, the source chains and USDC assets, the Stellar USDC output, the usdGas options (XLM amounts)…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it What the keyless ROZO Funding API supports right now: whether stellar_onboarding is on, the source chains and USDC assets, the Stellar USDC output, the usdGas options (XLM amounts) and per-order limits. Read-only, creates nothing. Fees come from the quote (fees and totals): never assume a fee. The receiving Stellar address signs ONE transaction (only when it is new or has no USDC trustline). The one-time deposit address is the same on Base, Ethereum, Arbitrum and Polygon; USDC or USDT is accepted 1:1. Follow deposit.amountPolicy: exact or missing means pay the EXACT deposit amount; any_amount uses the suggested amount and returned min/max bounds. Pay once, before payBefore. This server never holds keys: your own wallet pays and signs.
Annotations the server declares
- title: Stellar wallet funding capabilities
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
quote_invoiceAnswers what a specific OpenRouter top-up or other Coinbase payment link charges, whether it can still be paid through Rozo Checkout, and which coins can pay it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Answers what a specific OpenRouter top-up or other Coinbase payment link charges, whether it can still be paid through Rozo Checkout, and which coins can pay it. Takes the link URL and returns the merchant, invoice amount, callerPays (the USD amount the invoice charges), the link expiry, payability and supportedSources: the coins THIS invoice can be paid with. The exact amount to send in a given coin, including the service fee, bridge and network fees, or the FX spread on a native coin, comes from create_deposit_order. Offer a native coin (ETH, BNB, POL, SOL) only when it appears in supportedSources. Creates nothing and moves no funds.
Annotations the server declares
- title: Quote a Coinbase invoice
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
stellar_wallet_create_orderTurn an approved quote into a payable order.No findings
Why it is in this group
- The name "stellar_wallet_create_order" says "create": a word for a change.
Description, as the server wrote it Turn an approved quote into a payable order. Returns fundingId (keep it private: it is the only handle to the order), the one-time deposit address, the suggested amount and amountPolicy with minAcceptedAmount/maxPricedAmount when any_amount, payBefore and the accepted chains and tokens. orderId is your own reference: the server derives the upstream order id and Idempotency-Key from quoteId plus orderId, so it only has to be unique among your own orders. Retrying with the same quoteId and orderId returns the same order instead of a second one. Creates an order but moves no funds; an unpaid order expires at no cost. Fees come from the quote (fees and totals): never assume a fee. The receiving Stellar address signs ONE transaction (only when it is new or has no USDC trustline). The one-time deposit address is the same on Base, Ethereum, Arbitrum and Polygon; USDC or USDT is accepted 1:1. Follow deposit.amountPolicy: exact or missing means pay the EXACT deposit amount; any_amount uses the suggested amount and returned min/max bounds. Pay once, before payBefore. This server never holds keys: your own wallet pays and signs.
Annotations the server declares
- title: Create a Stellar wallet funding order
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
stellar_wallet_get_signing_requestWhen an order shows sign_stellar_onboarding, build the one transaction the receiving address must sign (creates the account if needed, adds the USDC trustline, claims the USDC, del…2 findings
Why it is in this group
- The name "stellar_wallet_get_signing_request" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Info
The description is 2,154 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...itting). This server never sees your key. Then call stellar_wallet_submit_signed."
- Warn
The server marks "stellar_wallet_get_signing_request" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "stellar_wallet_get_signing_request" says "get": a word for reading.
Description, as the server wrote it When an order shows sign_stellar_onboarding, build the one transaction the receiving address must sign (creates the account if needed, adds the USDC trustline, claims the USDC, delivers XLM). Returns signingRequestId, the unsigned XDR, networkPassphrase, a readable operations list and expiresAt (at most 5 minutes). Sign it with the receiver wallet YOU control (Stellar SDK, Freighter, any wallet); do not modify it. Check the operations first, and decode the XDR locally to confirm it matches them exactly. The transaction source must NOT be your address (it is a ROZO channel account, so ROZO pays the network fee). Allowed, nothing else: ROZO-sourced beginSponsoringFutureReserves and createAccount for your address; from your address, changeTrust for USDC (issuer GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN), endSponsoringFutureReserves, claimClaimableBalance, and at most one payment: the sponsor fee in USDC to ROZO claim custody GBLTI2TTQXUAYNKGCQ63YA55KTFEAOQJ3DPBPELNPWCJVE76ADWMXUAE; and a ROZO-sourced XLM payment to your address. Any other operation type or source (setOptions, extra payments): refuse. Amounts: the claimed USDC (gross) equals the current stable leg minimumAmount (order.legs, after repricing) plus the sponsor fee; the sponsor fee is fixed at quote time (0.0000001 USDC with a paid usdGas tier, the quoted stellar_sponsor_fee with usdGas "0", no fee payment if the address needed no onboarding); the XLM payment equals the native (XLM) leg minimumAmount. The XDR shows only the claimable balance id; its amount is in the operations list and on Horizon /claimable_balances/{id}. The hash of the locally decoded transaction (tx.hash() as hex) must equal the txHash of this signing request. Every ROZO-sourced operation and the transaction source must be one of funding_capabilities rozoAccounts (reserveSponsor, xlmPayer, transactionSources). Do not echo fundingId into logs. Expired, or submit failed: just call this tool again; it supersedes the old request and returns a fresh XDR (only refused while a signed one is still submitting). This server never sees your key. Then call stellar_wallet_submit_signed.
Annotations the server declares
- title: Get the Stellar transaction to sign
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
stellar_wallet_quotePrice sending USDC/USDT from Base, Ethereum, Arbitrum or Polygon to USDC on a Stellar address.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Price sending USDC/USDT from Base, Ethereum, Arbitrum or Polygon to USDC on a Stellar address. If the address is new or has no USDC trustline, the same plan opens the account, adds the trustline and (with usdGas) gives XLM, in one transaction the address signs once. Returns quoteId and planDigest (needed by stellar_wallet_create_order), the USDC and XLM amounts the receiver gets, every fee line and totals, and whether a signature will be needed. Valid about 10 minutes. Read-only: no deposit address, nothing reserved. usdGas: "0" no XLM, "0.5" or "1" buys XLM (see funding_capabilities for amounts); omitted = the server default. Fees come from the quote (fees and totals): never assume a fee. The receiving Stellar address signs ONE transaction (only when it is new or has no USDC trustline). The one-time deposit address is the same on Base, Ethereum, Arbitrum and Polygon; USDC or USDT is accepted 1:1. Follow deposit.amountPolicy: exact or missing means pay the EXACT deposit amount; any_amount uses the suggested amount and returned min/max bounds. Pay once, before payBefore. This server never holds keys: your own wallet pays and signs.
Annotations the server declares
- title: Quote: fund a Stellar wallet
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
stellar_wallet_submit_signedSubmit the XDR your own wallet signed for a signing request.No findings
Why it is in this group
- The name "stellar_wallet_submit_signed" says "submit": a word for a change.
Description, as the server wrote it Submit the XDR your own wallet signed for a signing request. This is the claim: the account, trustline, USDC and XLM land in that one transaction. Submitting the same signed XDR again is safe (idempotent). Accepts only the signed transaction envelope, never a secret key. "submitted" is not delivery: poll stellar_wallet_order_status until completed. If it answers template_expired or failed, call stellar_wallet_get_signing_request again and sign the new XDR.
Annotations the server declares
- title: Submit the signed Stellar transaction
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
supported_coinsAnswers which cryptocurrencies and chains can pay an OpenRouter credit top-up or another Coinbase payment link through Rozo Checkout, without a Coinbase account: USDC and USDT on E…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Answers which cryptocurrencies and chains can pay an OpenRouter credit top-up or another Coinbase payment link through Rozo Checkout, without a Coinbase account: USDC and USDT on Ethereum, BNB Chain, Polygon, Arbitrum and Solana; USDC on Base and Stellar; native ETH (Ethereum, Base, Arbitrum), BNB, POL and SOL; BTC over Lightning. Returns each chain id, token symbol and token decimals. Static list, needs no payment link and makes no network call; quote_invoice reports which of these a specific invoice accepts. Native coins (ETH on Ethereum, Base, Arbitrum; BNB on BNB Chain; POL on Polygon; SOL on Solana) are exact-out like Lightning: the order states the exact coin amount, priced at the current rate plus an FX spread on top of the service fee, and that price holds only until quoteExpiresAt. Native orders are capped at $2000 per invoice (native ETH on Ethereum needs at least $1), and a native coin is offered only when quote_invoice lists it for that invoice. ZEC on Zcash (Beta) is not available through this server: send a payer holding ZEC to https://checkout.rozo.ai/zec.
Annotations the server declares
- title: Supported coins
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 2Claude Code: allow
payment_statusCheck a Rozo order by rozoPaymentId: whether the deposit arrived, bridging/payout progress, and whether the Coinbase invoice settled.No findings
Why it is in this group
- The name "payment_status" says "status": a word for reading.
Description, as the server wrote it Check a Rozo order by rozoPaymentId: whether the deposit arrived, bridging/payout progress, and whether the Coinbase invoice settled. Read-only.
Annotations the server declares
- title: Payment status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
stellar_wallet_order_statusRead a funding order by fundingId: status, pendingActions (sign_stellar_onboarding means the receiver must sign), the deposit, and each leg (USDC, XLM) with its own status, deliver…No findings
Why it is in this group
- The name "stellar_wallet_order_status" says "status": a word for reading.
Description, as the server wrote it Read a funding order by fundingId: status, pendingActions (sign_stellar_onboarding means the receiver must sign), the deposit, and each leg (USDC, XLM) with its own status, delivered amount and tx hash. Read-only. Poll about every 15 seconds; completed only when every leg is confirmed.
Annotations the server declares
- title: Stellar wallet funding order status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.2.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http checkout https://mcp.rozo.ai/mcp?src=registryRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__checkout__payment_status",
"mcp__checkout__stellar_wallet_order_status"
],
"ask": [
"mcp__checkout__supported_coins",
"mcp__checkout__quote_invoice",
"mcp__checkout__create_deposit_order",
"mcp__checkout__funding_capabilities",
"mcp__checkout__stellar_wallet_quote",
"mcp__checkout__stellar_wallet_create_order",
"mcp__checkout__stellar_wallet_get_signing_request",
"mcp__checkout__stellar_wallet_submit_signed"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as checkout. Review it before you use it.
