MCP can make a useful service visible to AI applications, but discovery is not a business model. If a tool calls an expensive data source, starts compute or performs a real-world action, the service still needs a price, a payment path and a safe answer to retries.
The clean design separates the tool surface from the commercial transaction. MCP explains how to invoke the capability. The merchant still owns what is sold and what counts as delivered.
Price the capability behind the tool
Charge for the useful result rather than the protocol call. A company verification can have a fixed per-result price. A render job may charge per page. A browser session may need a quote based on time and resource limits. The unit should be recognizable before the agent authorizes payment.
Keep the tool description concise and put variable commercial terms in a quote. The agent should be able to compare the amount, currency, expiry and scope without starting the paid operation.
Keep payment out of the tool handler
Configure paid MCP tools as gateway resources. Each tool takes its resource id as its name and calls your existing HTTP endpoint once payment reaches the required state. Tools share payment, replay and receipt handling instead of implementing it in each handler.
resources:
company_enrichment:
name: Company enrichment
description: Enrich a company profile from its domain.
input:
type: object
properties:
domain: { type: string }
required: [domain]
backend:
type: http
method: POST
url: ${MERCHANT_API_BASE_URL}/v1/enrich
pricing:
type: fixed
amount: "0.08"
currency: USDC
expose: [mcp]
payments: [x402]This keeps MCP-specific behavior at the adapter. The underlying service can remain an HTTP API, and another agent channel can reach the same capability without copying the payment logic.
x402 and MPP are payment options
x402 uses a 402 challenge over HTTP. Over MCP, the gateway returns the challenge in the tool result and accepts proof in _meta["x402/payment"] or a _payment argument. The client must support this payment flow. MPP also supports MCP resources.
Whichever rail is selected, bind the payment to the tool, amount, asset and destination. A payment proof does not cover the tool arguments; a tool that needs the buyer's approval of exact inputs can also require an AP2 mandate. Record the rail that was attempted, and avoid a silent fallback if its final state is unknown.
Store more than a payment boolean
A paid tool call can settle successfully and still fail during execution. The inverse is also possible when a backend completes but the service loses the response. One success flag cannot represent these cases.
Return a safe transaction reference with the business result. Keep raw payment material, credentials and verbose internal errors out of the MCP result because both the model and its host application may see it.
Make retries boring
Reserve replay state before execution using the payment authorization. A repeated proof returns PAYMENT_REPLAYED while the first attempt is unfinished, or PAYMENT_INVALID after settlement, without returning the original result. For tools that change state, let the backend identify repeated operations by a key in the arguments; MCP calls carry no gateway-generated Idempotency-Key.
Gateway replay state protects the commercial request. Merchant idempotency protects the business side effect after the call crosses into your application.
Launch one tool with the full failure path
A read-only data product is a strong first paid tool: the input and output are bounded, the cost is easy to explain and retries are less dangerous. Test missing payment, rejected proof, repeated proof, uncertain settlement and a backend timeout after payment before adding more tools.
Subscriptions, API keys and enterprise contracts can continue to serve known customers. Machine payment gives an unknown agent a way to buy one useful result without forcing the rest of the business into a new billing model.
Frequently asked questions
Does MCP have a built-in payment protocol?
MCP defines tools, resources, prompts and related protocol behavior. Payment can be added around a paid capability through a separate payment system such as x402 or MPP.
Can I charge for each MCP tool call?
Yes. Fixed per-call pricing is one option when the tool has a clear unit of value. Variable workloads may need quoted pricing.
Does x402 work with MCP?
Yes, if the client supports the payment flow. Agent Commerce Gateway returns the x402 challenge in the tool result and accepts proof in the call's _meta or a _payment argument. Generic MCP support alone is not enough.
Does MPP support MCP?
Stripe's MPP announcement explicitly lists MCP as a resource type that an agent can request and pay for.
Do I need a separate backend for a paid MCP server?
No. The MCP tool can map to an existing API or service. A gateway or adapter can keep MCP-specific behavior outside the business backend.
Sources and further reading
- Model Context Protocolmodelcontextprotocol.io
- MCP TypeScript SDKts.sdk.modelcontextprotocol.io
- x402x402.org
- Machine Payments Protocolstripe.com
- MPPmpp.dev