Back to Browse

Rozo Checkout MCP Server

by RozoAI
Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

Pay OpenRouter top-ups with USDC/USDT on 6 chains or BTC Lightning. Never holds funds.

About

Pay OpenRouter top-ups with USDC/USDT on 6 chains or BTC Lightning. Never holds funds.

Remote endpoints: streamable-http: https://mcp.rozo.ai/mcp?src=registry

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (2 strong, 0 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

4 tools verified · Open access · No issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "io-github-rozoai-checkout": {
      "url": "https://mcp.rozo.ai/mcp?src=registry"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

rozo-checkout-mcp

A small remote MCP server that lets an AI agent help a user pay an OpenRouter top-up (a Coinbase payment link, payments.coinbase.com/payment-links/pl_* or payment-sessions/paymentSession_*) with the coin they already hold:

  • USDC or USDT on Solana, BNB Chain, Ethereum, Polygon
  • USDC on Base or Stellar
  • BTC over Lightning

It runs as a Cloudflare Worker and speaks MCP streamable HTTP at /mcp.

It never custodies funds

This server holds no private keys, signs nothing and sends nothing. It only:

  1. reads a quote for the Coinbase link,
  2. asks Rozo (through MPP Router) for a one-time deposit order, and
  3. reads order status.

The user pays from their own wallet. An order that is never funded expires and costs nothing. There are no secrets, no auth and no stored state; each request is handled statelessly.

Tools

ToolInputWhat it does
supported_coinsnoneStatic list of supported chains and tokens (mirrors the @rozoai/checkout CLI).
quote_invoice{ url }Merchant, invoice amount, what the payer pays, link expiry, and whether the link is still payable. Creates nothing.
create_deposit_order{ url, chainId, tokenSymbol }Creates a one-time deposit order; you pay from your own wallet. Returns the deposit address (or BOLT11 invoice for Lightning), the exact amount, any required memo, expiresAt and rozoPaymentId.
payment_status{ rozoPaymentId }Pay-in, bridging/payout progress, and whether the Coinbase invoice settled.

create_deposit_order applies the same guards as the CLI before it returns a deposit address: link payability (not used, not expired, v3 session still CREATED), an existing order must be payment_unpaid with no pay-in and the same coin, the address must not be on the compromised-address list, and at least 10 minutes must remain on both the order and the link.

Upstream endpoints (identical request shapes to the CLI, all keyless):

  • POST https://apiserver.mpprouter.dev/v1/services/rozo-agent-api/quote-invoice
  • POST https://apiserver.mpprouter.dev/v1/services/rozo-agent-api/create-invoice
  • GET https://apiserver.mpprouter.dev/v1/services/rozo-agent-api/invoice-status?rozo_payment_id=...
  • GET https://intentapiv4.rozo.ai/functions/v1/payment-api/payments/<uuid> (read-only)

Channel attribution: ?src=

Every create-invoice call carries

{ "client": "rozo-checkout-mcp/<version>",
  "attribution": { "client": "rozo-checkout-mcp/<version>", "utm_source": "<src>" } }

<src> comes from the src query parameter of the MCP URL the client connected to. It is lowercased, limited to [a-z0-9._-] and 100 characters, and defaults to mcp. Give each channel its own URL so orders can be split by channel:

ChannelURL
Official MCP registryhttps://mcp.rozo.ai/mcp?src=registry
Docs / READMEhttps://mcp.rozo.ai/mcp?src=docs
A directory or partnerhttps://mcp.rozo.ai/mcp?src=<name>

Connect

Claude Desktop / Claude.ai

Settings, Connectors, Add custom connector, URL https://mcp.rozo.ai/mcp?src=claude.

For a local claude_desktop_config.json through the mcp-remote bridge:

{
  "mcpServers": {
    "rozo-checkout": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.rozo.ai/mcp?src=claude-desktop"]
    }
  }
}

Claude Code

claude mcp add --transport http rozo-checkout "https://mcp.rozo.ai/mcp?src=claude-code"

Cursor

~/.cursor/mcp.json:

{ "mcpServers": { "rozo-checkout": { "url": "https://mcp.rozo.ai/mcp?src=cursor" } } }

MCP Inspector

npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: http://127.0.0.1:8787/mcp?src=inspector (local) or the prod URL

Develop

npm install
npm test            # vitest
npm run typecheck
npx wrangler dev    # http://127.0.0.1:8787/healthz and /mcp

Raw handshake with curl:

curl -s -X POST 'http://127.0.0.1:8787/mcp?src=dev' \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
curl -s -X POST 'http://127.0.0.1:8787/mcp?src=dev' \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-06-18' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

Deploy

Deployment and the mcp.rozo.ai custom domain need owner approval and are not automated here. wrangler.toml pins the Cloudflare account that owns the rozo.ai zone and keeps the custom domain route commented out until then.

MCP registry

server.json describes this server for the official MCP registry as io.github.RozoAI/checkout, with the remote https://mcp.rozo.ai/mcp?src=registry. Publishing under the ai.rozo namespace requires proving control of rozo.ai (DNS or HTTP verification with mcp-publisher).

Reviews

No reviews yet

Be the first to review this server!