Monetize your MCP (Model Context Protocol) server: list it free on the FiatDock marketplace, set a per-call price, and AI agents pay you directly in USDC over x402 — settled on-chain straight to your wallet. Keep 100%: the commission is currently waived for every seller. Non-custodial: FiatDock never holds your funds. Below: exactly what the publish check tests, what the gateway does on each call, what counts as answering, and what the traffic actually looks like today.
Sign up at /account with email and password. No keys to manage — your session signs everything.
2
Test, then publish
At /sell/new press Test connection: we complete a real MCP handshake and fill the tool picker from your own tools/list. Then add name, summary, category and price.
3
Set a payout wallet
An EVM address on Base. It receives your share of each paid call, settled directly to you.
4
(Optional) Get Verified
The $20/mo badge plus a one-time identity check, for a ✓ Verified mark buyers can filter and sort by.
Hosted or stdio — pick the one that matches your server
A listing connects agents to your service in one of two ways, and the choice decides whether it can be paid.
An npm package name — for stdio/npx servers. Agents run your server locally. A stdio server has no network address — it is started as a subprocess and talks over stdin and stdout — and stdio is the default transport in the MCP specification, so a package name is all a listing needs. These listings are free only: nothing routes through our gateway, so there is no call for us to price. Your listing shows the ready npx command.
A hosted HTTPS endpoint — Streamable HTTP. Required for a per-call price, because the gateway has to forward the paid call somewhere. Your raw URL stays private; buyers only ever see /s/{id}.
If you have a stdio server and want to charge for it, hosting it is the whole gap — see the host-it-to-earn guide.
What the publish check tests
Publishing runs a live probe and refuses if it fails. This is deliberate and it is the one place we fail closed: at publish time you are present and a refusal costs you one attempt, whereas a broken listing accepted silently costs a buyer money and costs you months of nothing happening. The checks:
Your endpoint completes an MCP handshake — including the session handshake stateful servers require, so a Python FastMCP server on its defaults is read, not reported unreachable.
It exposes at least one tool.
A paid listing names the tool the gateway will invoke, and that tool exists on your server. If the name is wrong, the refusal lists your server's real tool names and suggests the closest match — a typo is fixed by pasting, not guessing.
An npm package resolves on the registry, or npx -y <pkg> would fail on the buyer's machine.
Two things soften it. Add ?dryRun=1 to the publish request to run the entire path — validation, gate, live probe — and be told what would happen without creating anything. And after a listing exists, editing is never blocked by a rule your edit did not create: a seller whose endpoint went down must always be able to change the endpoint URL that would fix it.
What happens on a paid call
In order, every time:
The buyer calls POST /s/{id} without payment and receives a 402 naming your wallet as the recipient, the exact amount, the chain and the deadline.
They sign and retry. The gateway verifies the payment and claims the authorisation, so one signature can buy exactly one answer.
The gateway forwards the call to your endpoint, signed with an X-FiatDock-Gateway HMAC, wrapped in the tools/call envelope for the tool your listing names.
It reads your answer. Only then does it settle on-chain — a single full-price payment to you, since the commission is currently waived for every seller.
Settling after delivery is what lets the marketplace refuse nobody. It used to settle first, which meant protecting buyers from a listing that might not answer required blocking that listing outright — and at one point that was 18 of 36 live listings, every one a seller who could not earn. Now a call that produces no answer simply costs nothing, so nothing has to be blocked.
What counts as answering
Worth knowing precisely, because it decides whether you are paid. MCP over HTTP reports tool failures with HTTP 200, so the gateway reads the JSON-RPC body, not just the status:
Your fault, nothing settles: method not found, parse error, internal error, and the server-defined -32000 to -32099 range. The buyer gets a 502 and is told they were not charged.
Buyer's fault, settles: invalid arguments (-32602). If bad input were free, a buyer could farm unlimited calls with junk arguments at your expense.
Not an answer: a handshake or capabilities blob returned in reply to a tools/call.
Sellers whose servers demand their own registration or API key on top of the buyer's payment fall into the first category — the buyer paid, your server refused, and you both got nothing.
After you publish
Your hosted endpoint is re-read every six hours — hourly if it lives on an ephemeral tunnel host such as *.trycloudflare.com, whose URLs are built to disappear — and, most usefully, the moment you edit the listing: an edit re-probes the endpoint on the spot, so a fix takes effect immediately instead of waiting for the next cycle. Each pass is a security scan of your tools/list against prompt-injection and tool-poisoning rules, plus a health record from the same read. An unreachable endpoint is not suspended — a live listing has flipped healthy and unhealthy inside an hour, so a single failed check means nothing. It affects ordering only. After seven consecutive silent days a listing leaves the default catalog, stays reachable at its own URL and on your dashboard, and returns automatically on one successful check.
To find out whether anyone actually bought, use GET /v1/marketplace/sellers/me/earnings or the headline on your dashboard: settled invokes, exact USDC earned, last sale, and a row per listing. Because we are non-custodial, that page reports what settled to your wallet — not a balance we hold for you. The same authenticated responses carry a notices block naming anything currently stopping your listings from being bought, and the exact fix.
Is there any demand?
A straight answer instead of a promise. As of , third-party listings on FiatDock have taken three paid calls from wallets that are not our own, totalling $0.02 to sellers; two of those wallets identify themselves as x402 measurement instruments. Everything else that reaches the catalog is automated: crawlers, uptime monitors, x402 and MCP indexers. We publish this because a seller deciding where to list deserves the number, not the adjective.
The market around it is real, and measurable. Coinbase's public x402 index, read on 21 September 2026: 15,133 resources on 2,000 hosts, 857,072 paid calls in 30 days. But 58.7% of those resources have every paying wallet calling exactly once — that is a crawler, not a customer — and they carry 1.8% of the volume. The 4.6% of resources people come back to carry 93% of all calls, and what they sell is specific: LLM inference (about 41% of all calls), AI verdicts on onchain data, web search and page reading, contact and company enrichment, trading signals. Raw chain reads — gas, blocks, balances — are 2.6% of calls. The call-weighted median price of what repeat buyers pay for is $0.003, and 93.9% of calls settle on Base. The full measurement, with the method to reproduce it.
So the honest pitch has two halves. What to list: something derived — a verdict, a search, an enrichment, a completion — priced in cents or fractions of a cent, on Base; a field a public node already serves will be paid for once by every crawler and then not again. Where: listing here is free, takes minutes, and puts your service in the catalog, the search_services tool, llms.txt, skill.md and the x402 discovery surfaces before buyers arrive — not because they already have. Listing directories such as Smithery, Glama, mcp.so and PulseMCP pay you $0 for a listing, and hosted marketplaces such as Apify and MCPize take a 15–20% cut, hold the funds and pay out on a schedule (named as of July 2026). Here the commission is currently waived (0%; standard rate 1%), and payment settles on-chain, straight to your wallet.
Frequently asked
Do I need verification to sell?
No — anyone can publish, and the listing is live and discoverable right away. The $20/mo badge is an optional trust mark.
When do I get paid?
Per call, on-chain, as it happens — the payment settles to your wallet once your server has answered.
Is it custodial?
No. Funds move buyer→seller directly via x402; FiatDock holds nothing, and its commission (currently waived; standard 1%) is a separate payment.
Can I list a stdio/npx server without hosting it?
Yes, as a free listing pointing at your npm package name. Paid per-call listings need a hosted Streamable-HTTP HTTPS endpoint.