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
A tool handler should not become a maze of payment provider calls, replay checks and receipt writes. Route paid invocations through one transaction layer, then call the handler after the required payment state is reached. Several tools can share that path.
server.tool(
"company_enrichment",
enrichmentSchema,
async (input, context) => {
const operationKey = context.transaction.requestId;
return merchant.enrich(input, { operationKey });
},
);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 is useful when the paid resource is reachable through HTTP and the client understands the 402 challenge flow. Do not assume every MCP client supports it automatically. MPP is another machine-payment model and explicitly includes MCP resources among its use cases.
Whichever rail is selected, bind the payment to the tool, arguments, amount and request ID. 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
Give each paid invocation a stable request ID and reserve replay state before execution. For a state-changing tool, pass the same operation key into the merchant backend on every retry. A repeated call can then return the first receipt or result instead of charging and executing again.
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?
It can be used around HTTP-based paid services. The client still needs to understand the x402 payment flow. Do not assume generic MCP clients support it automatically.
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