Home / Blog / the-mcp-monetization-gap
The MCP monetization gap — and how to close it
The Model Context Protocol added a tool primitive but no payment primitive. That gap is why most MCP servers are free. Here is what a payment-aware MCP looks like.
What the spec gives you, and what it does not
The MCP spec defines:
- Tools (functions an agent can call)
- Prompts (templates an agent can request)
- Resources (artifacts an agent can fetch)
- Transports (stdio, SSE, HTTP)
What it does not define:
- Pricing. There is no concept of "this tool costs $0.01."
- Settlement. There is no place in the protocol for "the agent's payment for this call settled."
- Vendor identity. There is no canonical "pay this seller for this tool."
This is fine — payment is out of scope for a transport protocol. But the consequence is that MCP authors have no path from "I built something useful" to "people pay me for it."
What MCP authors are doing today
In a sample of 200+ public MCP servers on npm:
- 95%+ are free, no monetization
- A handful gate behind an API key the user has to sign up for separately
- Approximately none have a per-call billing primitive that works at $0.001-$0.01 scale
The MCP authors with the highest install counts are not the ones making any money. They are not making any money because there is no easy way to ask for it.
Closing the gap with a two-line wrap
Spawnpay's paywall SDK wraps an MCP tool handler with a per-call charge.
import { paywall } from 'spawnpay-paywall';
server.tool(
'search_my_index',
/* schema */,
paywall(
{ price: 0.01, vendor: 'SP_yourCode' },
async ({ q }) => myIndex.search(q)
)
);
That is it. The agent calling the tool sees a normal MCP response. Under the hood, the wrapper charges $0.01 from the agent's Spawnpay wallet to the tool author's vendor code. The tool author keeps 99.5%, settled on Base L2.
What the agent's user sees:
- First time: "Tool requires a Spawnpay key. Get a free $7 credit at spawnpay.ai." (One CLI line. Done in 60 seconds.)
- After that: "$0.01" line in the tool output. Tool runs as expected.
What the tool author sees:
- A Base L2 address with USDC accumulating.
- A vendor code that survives wallet rotations.
Distribution
Spawnpay maintains a marketplace at /tools that auto-hydrates from npm. Any MCP with the keyword spawnpay-paywall and a description in the format $<price> USDC per <unit> via spawnpay-paywall appears as a card with the price extracted automatically.
That means: publish to npm with the right keyword, get a free distribution surface. No application form, no review.
What this is not
This is not "Stripe for MCP." It is not a subscription service. It is not a usage-tier paywall. It is a per-call charge that approximates the actual cost of calling the tool. If your tool is worth $5 per use, charge $5. If it is worth $0.001 per call, charge that. The primitive lets you price at the granularity of the call itself.
What to do next
If you have an MCP server you would like to monetize, the path is:
1. npm install spawnpay-paywall 2. Wrap a tool handler with paywall({ price, vendor }, fn) 3. Get a vendor code from https://spawnpay.ai 4. Publish to npm with keyword spawnpay-paywall and the right description
Full step-by-step: https://spawnpay.ai/guides/monetize-your-mcp