Rozo Checkout
Server Details
Pay OpenRouter and Coinbase payment links with USDC, USDT, ETH, BNB, POL, SOL or BTC Lightning.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- RozoAI/rozo-checkout-mcp
- GitHub Stars
- 0
TDQS
Scored across 10 tools
The generic create_deposit_order and stellar_wallet_create_order both create payable orders, and payment_status/stellar_wallet_order_status both check status, but the stellar_wallet_ prefix and detailed descriptions make the intended flow mostly clear. Informational tools (supported_coins, funding_capabilities, quote_invoice, stellar_wallet_quote) overlap somewhat, though each answers a distinct static/specific/capability question.
Naming mixes verb_noun commands (create_deposit_order, quote_invoice, get_signing_request, submit_signed) with noun-phrase read-only tools (funding_capabilities, payment_status, supported_coins), and the stellar_wallet_ prefix is applied only to one flow. The pattern is still readable, but there is no single predictable convention across the whole set.
Ten tools fit the checkout/funding lifecycle well: capabilities, supported coins, invoice quoting, order creation, status polling, and Stellar signing/submission. There is no obvious bloat, and the count is neither too thin nor unwieldy.
The surface covers the core lifecycle for both invoice checkout and Stellar wallet funding: quoting, capability discovery, order creation, payment/status checks, signing request retrieval, and signed transaction submission. Unfunded orders expire, so the lack of an explicit cancellation tool is not a meaningful gap.
Available Tools
10 toolscreate_deposit_orderCreate a deposit orderAInspect
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 $3500 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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Coinbase link: https://payments.coinbase.com/payment-links/pl_... or https://payments.coinbase.com/payment-sessions/paymentSession_... | |
| No | Optional contact email so ROZO can reach the payer if the payment needs attention. Ask the user once if they are present; never required, omit it if they decline. | ||
| chainId | Yes | Source chain id from supported_coins: "1" Ethereum, "56" BNB Chain, "137" Polygon, "42161" Arbitrum, "900" Solana, "8453" Base, "1500" Stellar, "lightning". | |
| tokenSymbol | Yes | Token you will pay with: USDC, USDT, BTC (Lightning), or the chain native coin ETH (1, 8453, 42161), BNB (56), POL (137), SOL (900). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, open-world, non-destructive, but the description adds substantial behavioral detail beyond them: no keys held, nothing sent by the server, orders expire at no cost if unfunded, exact amount/chain/token must be matched before expiresAt, and price locks are bounded by quoteExpiresAt. It also documents hard limits ($3500 per native invoice, $1 minimum for native ETH) and fee/spread composition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return contents, and most sentences carry actionable constraints (expiry, exact amount, caps, ZEC exclusion). It is dense and somewhat overpacked — the FX spread and price-lock recital in the native-coin paragraph is longer than an agent needs to invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description fully compensates by enumerating the return payload: deposit address or Lightning invoice, exact amount in token units and base units, required memo, expiry, rozoPaymentId, and quoteExpiresAt for native coins. An agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 applies, but the description adds real meaning about how chainId and tokenSymbol interact — native coin vs stablecoin behavior, exact-out semantics, and chain-specific native symbols. It does not add anything about the url or email parameters beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Creates a one-time deposit order; you pay from your own wallet') and adds the key scope distinction that the server holds no keys and sends nothing. It does not explicitly differentiate itself from sibling order-creating tools such as stellar_wallet_create_order or from its prerequisite quote_invoice, so differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context and several exclusions: native coins are only offered when quote_invoice lists them, ZEC on Zcash is unavailable here and must go to the external checkout, and unfunded orders simply expire at no cost. What's missing is an explicit statement of the typical call sequence (e.g., quote_invoice first, then this tool) and when to prefer a sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
funding_capabilitiesStellar wallet funding capabilitiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint/openWorldHint annotations, the description adds substantive traits: fees never assumed and always taken from the quote, the receiving address signing exactly one transaction only when new or lacking a trustline, the shared deposit address across four chains, and the 1:1 USDC/USDT rule. These are genuine behavioral disclosures not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the definition then runs long and mixes in flow mechanics that belong to sibling tools (signing, deposit.amountPolicy handling, payBefore timing). For a zero-parameter capability query, several sentences drift beyond this tool's own scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does important work by enumerating what the response contains — onboarding flag, source chains/assets, Stellar USDC output, usdGas XLM amounts, per-order limits. That covers the return shape well enough for an agent to consume it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so the baseline is 4. The description's references to deposit.amountPolicy and usdGas options describe returned content rather than inputs, so no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns current ROZO Funding API capabilities (onboarding status, source chains, USDC assets, gas options, limits) — a specific resource with an implied discovery verb. It does not, however, explicitly differentiate itself from the sibling supported_coins, whose remit overlaps with the chain/asset listing here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Read-only, creates nothing' suggests this is the discovery step before create_deposit_order or stellar_wallet_quote, but no when-to-use/when-not or explicit alternative is named. An agent must infer that this precedes the ordering tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment_statusPayment statusARead-onlyIdempotentInspect
Check a Rozo order by rozoPaymentId: whether the deposit arrived, bridging/payout progress, and whether the Coinbase invoice settled. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| rozoPaymentId | Yes | Order UUID returned by create_deposit_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the trailing 'Read-only' is largely redundant. However, the description adds genuine behavioral value by disclosing what the check reports (deposit arrival, bridging/payout progress, Coinbase invoice settlement), which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence carrying the verb, key and return scope, followed by a two-word safety note. Efficient overall, though 'Read-only' repeats what the annotations already say and could be dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description usefully enumerates the status facets an agent will receive. It does not cover failure modes (unknown/invalid ID, pending vs. failed states) or whether repeated polling is expected, which leaves minor gaps for a status-check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage on the single parameter, the schema already documents rozoPaymentId fully, including its origin from create_deposit_order. The description names the parameter but adds no format, length, or lookup semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Check) plus resource (Rozo order) and the exact lookup key (rozoPaymentId). It also enumerates the three things it reports on, so the agent knows precisely what the tool answers, which is distinguishable from create_deposit_order and quote_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the follow-up check after an order exists, but it never states when to call it versus siblings or whether it should be polled. The link to create_deposit_order appears only in the schema's parameter description, not in the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_invoiceQuote a Coinbase invoiceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Coinbase link: https://payments.coinbase.com/payment-links/pl_... or https://payments.coinbase.com/payment-sessions/paymentSession_... |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is largely provided. The description still adds value by disclosing returned fields (merchant, callerPays, expiry, payability, supportedSources) and the constraint that native coins are only valid when listed in supportedSources, plus an explicit 'creates nothing and moves no funds' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return values are front-loaded, and the routing rule plus the create_deposit_order distinction each earn their place. The middle enumeration of returned fields is slightly dense, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so explicitly. Combined with the annotations and full schema coverage, an agent has everything needed to call this tool correctly and interpret its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the url parameter is fully documented there with examples and maxLength, so the schema does the heavy lifting. The description adds only 'takes the link URL', which restates the schema without new format or edge-case detail — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (quoting a Coinbase invoice / payment link) and enumerates precisely what it answers: charges, payability, and payable coins. It also names the sibling create_deposit_order as the source of exact per-coin amounts, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use (inspect a payment link before paying) and an explicit hand-off to create_deposit_order for the exact amount to send. It also encodes a routing rule — offer a native coin only when it appears in supportedSources. No explicit 'when not to use' exclusion is stated, so it falls just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stellar_wallet_create_orderCreate a Stellar wallet funding orderAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Your own order reference, 8 to 128 chars of A-Z a-z 0-9 _ . : -, unique among your orders (for example agent-order-0001). Reuse it with the same quoteId to retry safely. | |
| quoteId | Yes | quoteId from stellar_wallet_quote. | |
| planDigest | Yes | planDigest from the same quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotent, non-destructive), it discloses the retry/idempotency model (server derives upstream order id and Idempotency-Key from quoteId+orderId), that no funds move, that unpaid orders expire at no cost, that fees come only from the quote, and that the receiving Stellar address signs one transaction only when new or lacking a USDC trustline. This is unusually rich operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and almost every clause carries operational weight (idempotency, expiry, fees, amountPolicy, signing). It is nonetheless a dense wall of text where a short bulleted structure would aid scanning, so it is efficient but not optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema it covers the full lifecycle: returned handles (fundingId, deposit address, suggested amount, amountPolicy min/max, payBefore, accepted chains/tokens), idempotent retry, expiry, fee sourcing, and the exact-amount vs any_amount policy. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: orderId only needs to be unique among the caller's own orders because the server derives the upstream id and Idempotency-Key from quoteId+orderId, and planDigest must come from the same quote. That is genuine semantics the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource plus scope: 'Turn an approved quote into a payable order,' and later clarifies 'Creates an order but moves no funds.' It names the upstream sibling (stellar_wallet_quote) by tying quoteId/planDigest to it, but never explicitly contrasts itself with the closely related create_deposit_order sibling, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes clear preconditions (an approved quote, planDigest from the same quote) and operating rules: pay once before payBefore, and retry with the same quoteId+orderId to get the same order. It stops short of explicit when-not-to-use guidance versus alternatives like create_deposit_order or the quote tool itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stellar_wallet_get_signing_requestGet the Stellar transaction to signAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fundingId | Yes | fundingId of the order. | |
| walletAddress | Yes | The order's receiving Stellar PUBLIC address (G...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse in the ways that matter (readOnlyHint=false, idempotentHint=false, destructiveHint=false), and the description carries the rest: side effects on upstream state (creates the account, adds the trustline, claims USDC, delivers XLM), retry/supersede semantics across calls, the 5-minute expiry, and the security posture ('This server never sees your key', 'do not echo fundingId into logs'). It never contradicts the declared hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but the remainder is a single dense paragraph of roughly 300 words mixing operation allowlists, fee arithmetic, cryptographic verification steps, and logging policy. Nearly all of it is relevant, yet the absence of structure makes the critical 'allowed operations / refuse otherwise' rule hard to extract on a fast read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates fully by enumerating the returned fields (signingRequestId, unsigned XDR, networkPassphrase, operations list, expiresAt) and pointing to Horizon for claimable-balance amounts. Failure modes and the follow-up call are covered, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters (fundingId, walletAddress), so the schema already documents them. The description only lightly touches fundingId in a logging instruction and never expands on the walletAddress format beyond the schema's 'G...' note. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('build the one transaction the receiving address must sign') plus the exact trigger condition ('When an order shows sign_stellar_onboarding') and the full operation set the transaction contains. It names its downstream sibling (stellar_wallet_submit_signed) and the data source (funding_capabilities rozoAccounts), so an agent can distinguish it from stellar_wallet_create_order or stellar_wallet_order_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when an order shows sign_stellar_onboarding'), explicit sequence (check operations, decode XDR, then call stellar_wallet_submit_signed), explicit refusal criteria ('Any other operation type or source: refuse'), and explicit recovery behavior ('Expired, or submit failed: just call this tool again'). No alternatives or exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stellar_wallet_order_statusStellar wallet funding order statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fundingId | Yes | fundingId from stellar_wallet_create_order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, but the description adds real behavioral context beyond them: the ~15s polling cadence, the meaning of pendingActions values, and the fact that completion requires every leg to be confirmed. That is substantive disclosure no structured field carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and payload, then adds polling guidance in the same breath. Dense and mostly waste-free, though the enumerated field list makes it slightly long for a one-parameter read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the return shape (status, pendingActions, deposit, per-leg status/amount/tx hash) and the completion criterion. Complete enough to act on; the only gap is that leg status values themselves aren't enumerated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single fundingId is already documented as coming from stellar_wallet_create_order, which the description essentially repeats. No extra syntax, format, or edge-case guidance is added, so the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Read a funding order by fundingId') immediately followed by the returned payload. An agent can distinguish this read-only status check from stellar_wallet_create_order without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational guidance ('Poll about every 15 seconds') and a completion condition ('completed only when every leg is confirmed'), plus an interpretation hint for 'sign_stellar_onboarding'. It stops short of naming an alternative tool or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stellar_wallet_quoteQuote: fund a Stellar walletARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| usdGas | No | USD of XLM for fees. Omit to use the server default. | |
| amountUsd | Yes | Amount you will send, as a decimal string in USD, e.g. "10" or "10.50". Limits come from funding_capabilities (1 to 1000 today). | |
| sourceChain | Yes | Chain you will pay from. | |
| receiverAddress | Yes | Stellar PUBLIC address (G...) that receives the USDC. Never a secret key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, destructiveHint false), but the description adds rich behavioral context: ~10-minute validity, no deposit address or reservation, signing requirement triggers, server never holds keys, fee handling, and deposit amountPolicy. This is well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, starting with purpose and returns. Some repetition (the signing condition and chain list appear twice), which keeps it from 5; still, every sentence carries operational detail needed without an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given cross-chain quote complexity and no output schema, the description must convey return values and next steps; it does (quoteId, planDigest, amounts, fees, totals, signature need) plus validity, payment policy, and key custody. Complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema for usdGas ('0', '0.5', '1' behaviors), amountUsd limits, shared deposit address across chains, and the receiving address's signing role, meriting a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Price sending') and resource (USDC/USDT from Base, Ethereum, Arbitrum or Polygon to USDC on Stellar). It routes to sibling stellar_wallet_create_order by noting quoteId and planDigest are needed there, distinguishing its role as the quote step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: the quote is needed by stellar_wallet_create_order and limits come from funding_capabilities. It does not explicitly say when not to use it or compare with quote_invoice, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stellar_wallet_submit_signedSubmit the signed Stellar transactionAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signedXdr | Yes | Signed transaction envelope, base64, as returned by your wallet. NOT a secret key. | |
| signingRequestId | Yes | signingRequestId from stellar_wallet_get_signing_request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, so the restatement of idempotency is partly redundant. However the description adds genuinely new behavior: 'submitted' is not delivery and requires polling, plus the two named failure strings and the recovery path for each. That is real context not present in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then constraints, then the follow-up flow — good ordering with no filler. Slightly dense as a single run-on block, and the 'This is the claim' sentence is the weakest, most expendable line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter submission tool with no output schema, the description covers the essential async contract (submission != delivery), the polling follow-up, the error-string recovery path, and idempotency on retry. Nothing an agent needs to invoke it correctly and react to results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (signedXdr, signingRequestId) are already documented, including 'NOT a secret key'. The description reinforces the signedXdr constraint but adds no syntax, format, or size guidance beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submit) and resource (the signed XDR for a signing request), and contrasts with the sibling tools it hands off to (stellar_wallet_order_status, stellar_wallet_get_signing_request). An agent can tell this is the final on-chain broadcast step without opening the schema. The one weak sentence ('This is the claim: the account, trustline, USDC and XLM land in that one transaction') is vague but does not obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: poll stellar_wallet_order_status until completed, and on template_expired or failed re-call stellar_wallet_get_signing_request and sign the new XDR. It also states the input boundary (signed envelope only, never a secret key). Nothing about when-to-use or what to do next is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supported_coinsSupported coinsARead-onlyIdempotentInspect
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 $3500 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld=false, but the description adds substantive behavior beyond them: no network call, no payment link required, native coins are exact-out with a price that only holds until quoteExpiresAt, a $3500 per-invoice cap and $1 minimum for native ETH on Ethereum. It also discloses the ZEC non-support and redirect, which prevents a whole class of wrong calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core answer is front-loaded in the first clause, which is good. However, a large middle block on native exact-out pricing, FX spread, quoteExpiresAt and per-invoice caps describes ordering behavior that belongs to create_deposit_order/quote_invoice rather than a static coin list, which bloats an otherwise simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description correctly supplies the coverage and acceptance rules an agent needs before calling. The return value is only summarized in one line ('chain id, token symbol and token decimals'), leaving the actual response shape underspecified, but the usage and limitation coverage are otherwise strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; nothing in the schema can be contradicted or clarified. The description goes slightly beyond by naming what comes back (chain id, token symbol, token decimals), though it does not describe the response's shape or ordering since no output schema exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — answering which cryptocurrencies and chains can pay an OpenRouter credit top-up or Coinbase payment link through Rozo Checkout — and enumerates the concrete chains/tokens covered. It is immediately distinguishable from siblings like quote_invoice (invoice-specific acceptance) and create_deposit_order (order creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says this is a static list that 'needs no payment link and makes no network call,' and names the alternative: 'quote_invoice reports which of these a specific invoice accepts.' It also gives a when-not: ZEC is not available here and callers should be sent to an external URL. That is explicit routing plus an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Removed
x402_sign - Removed
x402_topup
7 tool updates
- Changed
create_deposit_order3 fields changed- changed
Input schema / properties / chainId / descriptionPrevious value: -"Source chain id from supported_coins, e.g. \"900\" (Solana), \"8453\" (Base), \"lightning\"."New value: +"Source chain id from supported_coins: \"1\" Ethereum, \"56\" BNB Chain, \"137\" Polygon, \"42161\" Arbitrum, \"900\" Solana, \"8453\" Base, \"1500\" Stellar, \"lightning\"." - changed
Input schema / properties / chainId / enumPrevious value: -[ - "1", - "56", - "137", - "900", - "1500", - "8453", - "lightning" -]New value: +[ + "1", + "56", + "137", + "900", + "1500", + "8453", + "42161", + "lightning" +] - changed
Input schema / properties / tokenSymbol / descriptionPrevious value: -"Token you will pay with, e.g. USDC, USDT, BTC."New value: +"Token you will pay with: USDC, USDT, BTC (Lightning), or the chain native coin ETH (1, 8453, 42161), BNB (56), POL (137), SOL (900)."
- Added
funding_capabilities - Added
stellar_wallet_create_order - Added
stellar_wallet_get_signing_request - Added
stellar_wallet_order_status - Added
stellar_wallet_quote - Added
stellar_wallet_submit_signed
2 tool updates
- Added
x402_sign - Added
x402_topup
1 tool update
- Changed
create_deposit_order1 field changed- added
Input schema / properties / emailAdded value: +{ + "description": "Optional contact email so ROZO can reach the payer if the payment needs attention. Ask the user once if they are present; never required, omit it if they decline.", + "maxLength": 320, + "type": "string" +}
4 tool updates
- First observed
create_deposit_order - First observed
payment_status - First observed
quote_invoice - First observed
supported_coins
Related MCP Connectors
Crypto pay links and API for people and AI agents. BTC, Lightning, USDC, USDT, EURC, SOL, ETH.
Non-custodial crypto payments for AI assistants: balances, payments, and create payment links.
Keyless non-custodial crypto payments for AI agents: payment links and tip jars, no API key.
Payment rails for AI agents. Pay merchants in USDC on Base. Dual-protocol: x402 + OKX APP.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAI payment router for routing across 300+ LLM models with per-request USDC settlement on Base and Tempo, session budgets, and x402 payments via the MCP protocol.MIT
- AlicenseNot gradedqualityCmaintenanceNon-custodial multi-chain crypto payment gateway via CoinVoyage. 15 tools for creating PayOrders, managing webhooks, and cross-chain swaps. Supports BTC, SOL, ETH, Base, Arbitrum, Polygon, BSC, Sui, USDC/USDT.MIT
- AlicenseAqualityCmaintenanceConnects Claude Desktop, Cursor, or any MCP-compatible client to 36+ frontier LLMs with automatic per-token payments in USDC on Solana.56 npmMIT
- AlicenseAqualityFmaintenanceEnables AI agents to access paid tools like crypto prices, weather, translation, and web intelligence via per-request USDC payments on Base, with no API keys or subscriptions.1521 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.