> For the complete documentation index, see [llms.txt](https://docs.rozo.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rozo.ai/products/agentic-payments-mpprouter.md).

# Agentic Payments (MPP Router)

Pay-per-call for AI agents. Call 402-gated HTTP APIs and settle automatically in Stellar USDC via MPP Router.

## Two agentic payment scenarios

1. **The agent pays for its own API calls.** The agent holds Stellar USDC and pays per request over HTTP 402. That is this page: MPP Router.
2. **The agent pays an invoice for its user.** The agent pays an OpenRouter top-up or another Coinbase-hosted invoice with whatever coin the user already holds, through the CLI, the MCP server or the Claude Code skill. See [ROZO Checkout](/products/checkout.md).

Agentic payments let AI agents spend Stellar USDC to call paid HTTP APIs, with no API keys, no subscriptions and no credit card on file. The agent makes a request, the server returns `402 Payment Required` with a Stellar payment challenge, the agent signs with its wallet, retries the request, and receives the response.

ROZO's agentic payment stack runs on **Stellar mainnet** via [MPP Router](https://www.mpprouter.dev), a Stellar-native 402 proxy that accepts Stellar USDC and forwards the request to upstream merchants.

As of 2026-10-09, the router fronts **88 services** ([live count](https://www.mpprouter.dev)), including OpenAI, Anthropic, DeepSeek, Mistral, Gemini, Grok, Groq, OpenRouter, Perplexity, Exa, Firecrawl, Tavily, Brave, Parallel.ai, Replicate, fal, Stability AI, Deepgram, DeepL, Alchemy, Dune, Nansen, CoinGecko, QuickNode, Mapbox, Google Maps and WolframAlpha. One Stellar USDC balance pays for all of them, with no per-service API key, no subscription and no card on file.

## Why Stellar for agentic payments

* **Sub-cent fees.** Each 402-gated call settles for fractions of a cent, making microtransactions practical.
* **Fast finality.** Stellar closes ledgers every \~5 seconds, so the 402 → pay → retry loop completes in one round trip.
* **Sponsored transactions.** The agent's wallet does not need XLM for fees: MPP Router sponsors the fee payer.
* **One stablecoin balance, many APIs.** You hold USDC on Stellar once and spend it across all of them. No need to fund Base, Tron or Solana.

## The flow

```
Agent                           Server (402-gated)
  │                                      │
  │ ───── 1. POST /endpoint ────────────▶ │
  │                                      │
  │ ◀──── 402 Payment Required ───────── │
  │       WWW-Authenticate: Payment      │
  │       request="<challenge>"          │
  │                                      │
  │  sign challenge with                 │
  │  Stellar wallet (sponsored mode)     │
  │                                      │
  │ ───── 2. POST /endpoint ────────────▶ │
  │       Authorization: Payment <cred>  │
  │                                      │
  │ ◀──── 200 OK + Payment-Receipt ──── │
```

1. First request: plain HTTP POST to the service URL.
2. Server responds `402 Payment Required` with a Stellar charge challenge (either MPP's `WWW-Authenticate: Payment` header or the x402 `Payment-Required` header).
3. Agent signs the challenge with its Stellar key. The inner transaction is a sponsored SAC transfer. The agent's account is `ALL_ZEROS` and only the auth entries are signed, so the server can fee-bump and broadcast.
4. Agent retries the request with the signed credential in the `Authorization` header.
5. Server validates the credential, broadcasts the signed transaction, and returns the upstream response plus a `Payment-Receipt` header.

## Protocols supported

MPP Router emits a single `402` response that carries **both** dialects. The inner signed XDR is identical: a single signer produces both envelopes.

| Aspect         | x402                             | MPP                                          |
| -------------- | -------------------------------- | -------------------------------------------- |
| Outer envelope | `X-Payment` header (base64 JSON) | `Authorization: Payment <credential>` header |
| Field names    | `payTo`, `asset`, `amount`       | `recipient`, `currency`, `amount`            |
| Sponsored flag | `extra.areFeesSponsored`         | `feePayer: true`                             |
| Inner XDR      | Same sponsored SAC transfer      | Same sponsored SAC transfer                  |

The MPP and x402 `payTo` addresses in a single challenge are **different** and HMAC-bound. Pay the address that matches the dialect you chose. Never mix.

## Discovering services

The service catalog is live at `https://apiserver.mpprouter.dev/v1/services/catalog`. Never hardcode service paths. The catalog is the source of truth, and it carries its own `generated_at` timestamp plus a `summary` block with the current counts.

As of 2026-10-09 the catalog reports **677 endpoints**, of which **451 are payable** and **28 are paid-verified**, meaning a real paid call was made through them and the settling Stellar transaction hash is published. Treat unverified entries as available but untested.

Representative services:

| id                 | price            | upstream                           |
| ------------------ | ---------------- | ---------------------------------- |
| `openai_*`         | dynamic          | OpenAI models                      |
| `anthropic_*`      | dynamic          | Anthropic models                   |
| `openrouter_chat`  | dynamic          | OpenRouter LLM proxy               |
| `perplexity_*`     | dynamic          | Perplexity search-grounded answers |
| `parallel_search`  | $0.01 / request  | Parallel.ai web search             |
| `exa_search`       | $0.005 / request | Exa neural search                  |
| `firecrawl_scrape` | $0.002 / request | Firecrawl HTML → markdown          |
| `tavily_*`         | dynamic          | Tavily agent search                |

Prices and availability change; the table above is illustrative and the catalog is authoritative.

## Getting started

Choose one installation method from the [Stellar agent wallet instructions](https://github.com/mpprouter/stellar-agent-wallet-skill#install-claude-code-plugin).

**Claude Code plugin:** run these in Claude Code, not in a system shell:

```
/plugin marketplace add mpprouter/stellar-agent-wallet-skill
/plugin install stellar-agent-wallet@mpprouter
```

**CLI or another agent:** clone the public repository and install its dependencies. Run the commands below from that repository directory:

```bash
git clone https://github.com/mpprouter/stellar-agent-wallet-skill
cd stellar-agent-wallet-skill
npm install
./node_modules/.bin/tsx skills/discover/run.ts --query "web search" --pick-one --json
```

Discovery is public: it needs no wallet key and makes no payment. Read the repository's `SKILL.md` and the selected command's instructions before using a wallet.

To make a paid call, select an endpoint from the current catalog and follow the [pay-per-call instructions](https://github.com/mpprouter/stellar-agent-wallet-skill#use-from-any-agent). Configure a compatible funded wallet and the user's spending authorization first. Validate the challenge against the expected amount and recipient. Check both the API result and the payment receipt; a submitted signature alone does not establish success.

MPP Router payments use Stellar mainnet. The wallet tool also has a testnet option, but that does not make MPP Router a testnet service. If you need Stellar USDC first, follow the [Wallet guide](/task-guides/wallets.md) for a compatible funding path.

For custom integrations, use the `@stellar/mpp` SDK on npm with `@stellar/stellar-sdk ^14.6.1` and `mppx ^0.4.11` as peer dependencies.

## Safety notes

* **Credentials are single-use.** The HMAC binding to amount, currency, and recipient is the router's defense against replay. If the retry fails, start fresh with a new 402 challenge. Do not re-send the same credential.
* **Authorize spending.** Follow the wallet tool's current confirmation and spending-limit instructions. Do not disable confirmation or raise a limit beyond the user's authorization.
* **Validate the challenge amount.** If you know the advertised price from the catalog, verify the 402 challenge amount matches before signing.
* **Mainnet only.** MPP Router does not run on Stellar testnet.

## Relationship to ROZO

MPP Router is the agentic payments rail that lets ROZO's Stellar-native wallets pay for off-chain services with the same USDC balance used for cross-chain intents. An agent holding USDC on Stellar can:

1. Bridge from another chain to Stellar USDC via a ROZO intent.
2. Call any MPP Router service and pay per request.
3. Send the result to an intent for further action (e.g. swap, settle, bridge back).

## Further reading

* MPP Router: <https://www.mpprouter.dev>
* Live service catalog: <https://apiserver.mpprouter.dev/v1/services/catalog>
* Stellar Soroban smart-account payments: [Stellar Smart Account Payments](/integration/api-doc/bridge-api/stellar-contract-payments.md)
* `stellar-agent-wallet` plugin skills: `onboard`, `check-balance`, `discover`, `pay-per-call`, `send-payment`, `send-raw`, `bridge`

***

*Service counts above are dated snapshots. Consult the live catalog for current availability and verification status.*
