LLM Wallet Router
Proof of concept · Wallet-paid AI

Bring a wallet. Get an answer.

A paid LLM router with no signup. Your funds stay in your own wallet; each request is authorized by your wallet and billed for the tokens actually used.

Docs & pricing

No account, no email, no router API key, no prepaid balance, no subscription. An x402-aware client or a wallet-side bridge pays as it calls.

How it works

Four steps, no registration anywhere in them. Discovery is free; only a completed answer is billed, once.

1 · Discover

GET /v1/models returns the priced models, the tariffs, and the request limits. Free, no payment header.

2 · Ask

The router prepares your answer privately and measures its actual input and output tokens. Your agent receives an exact x402 invoice, not an estimated token bill.

3 · Pay the invoice

Your wallet checks the exact invoice against its budget, signs that amount, and repeats the same HTTP request or MCP call with the payment.

4 · Get the answer

Your wallet pays that exact invoice within its spending limit. The prepared answer and payment receipt are then released, with one settlement per answer.

Endpoints

Served from this origin. Free endpoints never need a wallet; the paid endpoint uses the same settlement core as the MCP tool, so it is one charge, never two.

POST /v1/chat/completions

/v1/chat/completions

OpenAI-style request body, text only: model, messages (roles system, user, assistant), optional max_tokens; buffered JSON, not live streaming. No tools, no images, no n, no other OpenAI options. An unsigned call prepares the answer privately and returns its actual-token x402 invoice (HTTP 402). Your wallet is not charged until payment; the provider bears the unpaid generation work.

POST /mcp

/mcp

Native paid MCP (streamable HTTP, stateless, JSON responses, POST only). Tools: list_models (free), quote (free), chat (paid). Payment travels inside the tool call as params._meta["x402/payment"]; registering this server costs nothing and pays nothing.

Free

GET /v1/models

/v1/models

The available models with their payment requirements, tariffs and limits. GET /healthz returns the service status and network. Both are free.

Base URL

This service origin

/

Use the same origin for the paid and free paths. The public host is reachable over HTTPS only.

Models & pricing

Loaded live from GET /v1/models on this origin. Nothing on this page is a hard-coded model list or an invented number: if the endpoint is unreachable, the page says so.

Loading the model list…

The tariff, in plain English

Client budget vs. actual charge

The client budget is not the charge. The answer is prepared first, its actual token cost is calculated, and your wallet signs only that exact invoice amount. A bill above the budget is refused, not charged.

When you are not billed

If the upstream fails, the answer is empty or malformed, or the request is rejected before settlement, there is no settlement and no charge. A repeated request with the same private recovery key returns the already-paid answer with a charge of zero instead of a second settlement.

What your wallet needs

Payment comes from your wallet, not from a router balance. There is nothing to top up inside this service.

USDC on Base

A Base mainnet USDC balance in the wallet you call with (eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913). No Gateway deposit, no router credit, no prepaid balance.

One x402 authorization per request

Your client signs a single x402 v2 exact USDC authorization after receiving the invoice. This EIP-3009 path needs no token allowance, router deposit or Gateway top-up.

An x402-aware client

Use a client with x402 v2 exact EIP-3009 support on Base, or an MCP wallet bridge. The invoice amount is calculated from actual usage before signing; exact payment does not mean a flat per-call price.

Keep the recovery key private

Pass a private random UUIDv4 as request_id (MCP) or Idempotency-Key (HTTP) to retry for free and recover the same answer. On-chain payment signatures are public calldata, so that key — not the signature — proves the recovery. It is a per-request capability, not an account or a router API key, and it is never shown on this page.

Registering an MCP server does not pay anything. MCP initialization, tool discovery and the free tools are free. A charge can only happen inside the paid chat tool call, when your wallet signs for it.

Setup

Choose HTTP or MCP. Model and price discovery are free; chat uses x402 payment.

1 · Read the models and prices (free)

curl -sS https://x402-direct.46-225-27-102.sslip.io/v1/models

The response carries the priced models with their payment requirements and limits, plus the tariff when the catalog publishes one.

2 · Call the paid endpoint

curl -sS https://x402-direct.46-225-27-102.sslip.io/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: <private-random-uuidv4>' \
  -H 'PAYMENT-SIGNATURE: <x402-payment-payload>' \
  -d '{"model":"<model-id-from-/v1/models>","messages":[{"role":"user","content":"Say hello."}],"max_tokens":64}'

Run it once with no PAYMENT-SIGNATURE header: the 402 response is free and contains the exact x402 requirement to sign. Your client then fills the header and repeats the call. The answer arrives with the model's usage counts and a payment receipt.

3 · Point an MCP client at the paid tools

{
  "mcpServers": {
    "llm-wallet-router": {
      "type": "http",
      "url": "https://x402-direct.46-225-27-102.sslip.io/mcp"
    }
  }
}

A plain MCP client can discover and quote for free, but paying needs payment handling on the wallet side. The sample is a real endpoint; the paid chat tool is the only thing that can be charged.

Request flow in one line

model request → answer prepared privately → actual-token invoice → exact wallet payment → answer + receipt

Live payment proof

Actual model answers, token counts and Base payment receipts from /proof.json.

Checking /proof.json