Loomal

How to List a Paid API Endpoint on Loomal no MCP server required.

You don't need to wrap your REST API in MCP to sell it to agents. Gate the endpoint with x402, list it on Loomal, and agents pay per call in USDC.

Loomal lists more than MCP servers. If you have a working REST endpoint — a geocoder, an enrichment API, a converter — you can put a per-call price on it and list it directly. Agents that speak x402 call it like any HTTP API; the only difference is that payment happens in the request flow instead of at a signup form.

This is often the fastest route to agent revenue, because nothing about your API has to change except the front door. Here is the walkthrough.

What you need before you start

Three things: an HTTPS endpoint you control, a wallet address on Base to receive USDC, and a per-call price. The endpoint stays exactly what it is — same routes, same request and response shapes. You are adding a payment gate in front of the handler, not redesigning the API.

Pick the price using your marginal cost and the buyer's alternative; the minimum on Loomal is $0.01 per call, and you can change the number in one field later.

Gate the endpoint with x402

The gate is a wrapper around your handler. An unpaid request gets HTTP 402 with the price and payment details; the agent signs a USDC authorization and retries; the payment is verified and settled on Base — about two seconds — and only then does your handler execute. You never serve an unpaid request and never chase an invoice.

geocode/route.ts
import { requirePayment } from "@loomal/sdk";

export const GET = requirePayment(
  () => ({ price: "$0.01" }),
  async (req) => {
    const address = new URL(req.url).searchParams.get("address");
    const result = await geocode(address);
    return Response.json(result);
  },
);

Create the listing in the console

In the Loomal console, add the endpoint as a listing: name, description, the endpoint URL, and the price. Write the description for the query an agent's operator would type — 'forward and reverse geocoding, returns lat/lng and normalized address' beats any tagline, because the description is what both search and agents evaluate.

Document the request shape in the listing too. An agent that can see the parameters and an example response can wire itself up without a human reading your docs site.

How agents find and pay it

Once live, your endpoint sits in the same machine-queryable index as MCP servers: an agent searches by capability, reads your price, and calls. Each settled call produces an Ed25519-signed receipt, so both sides hold cryptographic proof of what was paid for what.

There are no API keys to issue, rotate, or revoke. Payment is the authentication — a request either carries a valid settled payment or it gets a 402.

Operating it after launch

Revenue arrives per call as USDC on Base to your non-custodial wallet; the console shows calls and settled volume per listing. Loomal's fee is 5% on settled transactions, currently waived.

Two upgrades worth considering once traffic appears: dynamic pricing (quote per request when cost scales with input size) and an MCP wrapper, which makes the same capability natively callable from MCP clients and gives you a second discovery surface.

FAQ

Does my API have to be an MCP server to list on Loomal?

No. Plain REST endpoints list directly — the requirement is that the endpoint speaks x402 so agents can pay it. Many sellers start with the raw endpoint and add an MCP wrapper later for clients that prefer tool-call semantics.

What changes for my existing API key users?

Nothing has to. The x402 gate can sit on a new route or coexist with key-based auth on the same one — accept a valid key or a settled payment. That lets you serve existing subscribers while opening a pay-per-call lane for agents.

Can I charge different prices for different routes?

Yes. Each gated route quotes its own price in the 402 response, so a cheap lookup and an expensive batch operation can live in the same API at different rates. You can also compute the price per request when cost depends on input size.

When do I actually receive the money?

At call time. Settlement is USDC on Base in roughly two seconds, direct to your wallet, before your handler runs. There are no chargebacks and no payout schedule — each call's revenue is final when the call executes.

List your endpoint.

Gate it with x402, set a price, and take agent traffic this week.

Open the Loomal console