Skip to main content
HomeLanding pagesMCP paid tools
LANDING PAGE

MCP paid tools

8 min read·Last updated June 2, 2026

MCP paid tools are tools a caller pays to use, gated with the @blockchain0x/x402 adapter. The key fact: pricing is per route, not per individual tool, so to charge for a tool you place it behind a priced route and keep free tools and discovery on unpriced routes. A paid call settles USDC on Base; tools/list stays free so callers can choose.

What a paid tool is

An MCP paid tool is a tool a caller pays to use, with the payment settled in USDC on Base per call. The tool itself is an ordinary MCP tool; what makes it paid is that the route it is served on is gated by the @blockchain0x/x402 adapter, so a call to it returns a 402 until payment is settled. From the caller's side, using a paid tool is calling it, getting asked to pay, paying, and getting the result.

This page is about the tool level: which tools to charge for and how charging maps onto MCP's structure. For the server architecture see mcp-payment-server; for the monetization strategy see mcp-server-monetization. The payment API product page is the reference. The one thing to understand first is how pricing attaches to tools, because it is not where most people expect.

Pricing is per route, not per tool

Here is the fact that shapes everything about paid tools: the x402 adapter prices per HTTP route, not per individual MCP tool. The adapter sits in front of a route and gates whatever that route serves; it does not inspect which MCP tool a tools/call names. So if all your tools are served on one /mcp route, they all share one price, and a single pricing entry covers every call to that route.

This surprises people who imagine setting a different price on each tool in one server. You cannot, not within a single route. What you can do is decide pricing at the route level and arrange your tools across routes to get the pricing you want. Once you think in routes rather than tools, paid tools become straightforward: the route is the unit of pricing, and a tool's price is the price of the route it lives on.

Map tools to routes

Because pricing is per route, charging different amounts for different tools means putting them on different routes, each with its own pricing entry.

TYPESCRIPT
await app.register(createX402Plugin, {
  sdk,
  defaultNetwork: "testnet",
  pricing: {
    "POST /mcp/search":  { amountUsdc: "0.01", payToAddress: process.env.B0X_PAYTO_ADDRESS!, paymentRequestId: "pr_search" },
    "POST /mcp/analyze": { amountUsdc: "0.20", payToAddress: process.env.B0X_PAYTO_ADDRESS!, paymentRequestId: "pr_analyze" },
    // POST /mcp/free is omitted, so it is not gated
  },
});

Here a cheap search tool and an expensive analyze tool live on separate routes at separate prices, and a free tool sits on an ungated route. Each route can serve one tool or a tier of similarly priced tools; group tools by price, give each group a route, and the route prices them. This is the practical shape of per-tool pricing in MCP: route mapping, not a per-tool field.

Resist the urge to split every tool onto its own route by reflex, though, because each route is a thing to name, price, and maintain. If five tools are all worth about the same, one route at one price serves them cleanly and keeps your pricing map small. Split only where prices genuinely differ, so the number of routes tracks the number of price tiers rather than the number of tools. That keeps the mapping honest and the configuration readable as the server grows.

Which tools to charge for

With the mechanism clear, the judgment is which tools earn a price. Charge for tools that cost you real money to run or deliver real value: a tool that calls an expensive upstream API, runs heavy compute, or returns proprietary data is worth a price that covers its cost plus a margin. A trivial tool that formats a string or echoes input is not worth gating; the friction of payment would exceed its value.

A useful default is to keep cheap, low-value, and exploratory tools free and price the tools that do the expensive or valuable work. That mirrors how a caller experiences the server: free tools let it get started and understand the server, and paid tools are where it draws on something that costs you to provide. Set each paid route's price from the underlying cost of its tools, then adjust on real usage. The broader pricing strategy lives in mcp-server-monetization; the tool-level point is to price by cost and value, and to leave the cheap stuff free.

Keep discovery free

Whatever you charge for, keep discovery free. The tools/list step, where a caller learns which tools exist and what they do, belongs on an unpriced route, so a caller (often an agent) can see the menu before paying for anything. Gating discovery defeats the model: a caller cannot decide a tool is worth paying for if it cannot first see that the tool exists and what it does.

So the structure is a free discovery surface plus priced tool routes. A machine caller lists the tools for free, reads their descriptions, decides which paid tool it needs, and calls that route, paying for it. Keeping the menu open and pricing the dishes is what lets an agent choose your server in the first place, and it costs you nothing because listing tools is cheap. Treat free discovery as a requirement, not a courtesy.

Compatibility

Paid tools work wherever the MCP server speaks HTTP and routes can be gated.

Tool-pricing aspect Works? Notes
Per-route pricing Yes The unit of pricing is the route
Per-tool pricing within one route No Split tools across routes for different prices
Free and paid tools together Yes Omit free routes from the pricing map
tools/list discovery free Yes Leave it on an unpriced route
Streamable HTTP transport Required The gate fronts an HTTP route, not stdio

When this fits

Paid tools fit when a server exposes tools worth charging for to callers who can pay per use, especially other agents. The route-mapping approach fits naturally when tools fall into a few price tiers (free, cheap, premium), since you give each tier a route. It fits a server with a mix of free and valuable tools particularly well, because the same server can do both.

It fits less well when you genuinely need a distinct price for every one of many tools, which means many routes to manage, or when the server is internal with no external caller to charge. For the common case of a few tiers of tools sold to machine callers, route-mapped pricing is the model that matches MCP's structure.

Pricing

Charging for tools is free to set up; you pay the wallet platform fee per agent on the pricing page: Free is $0 per agent per month at a 5% transaction fee, Pro is $9 at 2%, Business is $29 at 1%. The fee applies to the server's agent profile that receives the USDC and scales with what the tools earn rather than a flat seat.

What to ship today

Group your tools by price, put each group on its own route, and add a pricing entry per priced route while leaving free tools and tools/list ungated. Confirm a paid route returns a 402 then runs on Base Sepolia and a free route does not. For the server architecture see mcp-payment-server; for strategy see mcp-server-monetization. Pricing is on the pricing page.

FAQ

Frequently asked questions.

Can I price each MCP tool differently?

Not within a single route. The x402 adapter prices per route, so all tool calls that share one HTTP route share one price. To charge different prices for different tools, put them on different routes (or separate MCP endpoints), each with its own pricing entry. Per-tool pricing is really per-route pricing with one tool, or a tier, behind each route.

How do I make some tools free and others paid?

Split them across routes. Put the free tools on an unpriced route and the paid tools on a priced one, since the gate decides by route. A caller using only the free route pays nothing; a call to the priced route settles in USDC on Base. The split is expressed entirely in which paths appear in the adapter's pricing map.

Is tools/list paid?

It should not be. Discovery, where a caller lists the available tools, belongs on a free route so a caller can see what the server offers before paying. Gating discovery would stop a caller from deciding to pay, since it cannot choose a tool it cannot see. Keep tools/list free and price the tool calls that do the work.

Is there a Blockchain0x MCP package for this?

No. You build paid tools from @blockchain0x/node and @blockchain0x/x402 with the standard MCP SDK. There is no dedicated MCP adapter package; you gate the routes your tools are served on with createX402Plugin (Fastify) or createX402Middleware (Express), the same adapter used for any HTTP service.

Which network and token do paid tools settle in?

USDC, 6 decimals, on Base. A sk_test_ key settles on Base Sepolia (eip155:84532), a sk_live_ key on Base mainnet (eip155:8453). The adapter reads the network from the key prefix, so the same tools run on either by swapping the key.

Create your free agent wallet in 5 minutes.

First payment confirmed in under ten minutes. Free to start.