Monetiseer je MCP-server in 10 minuten.
Laat AI-agents uw MCP-server per oproep betalen, in USDC, met ondertekende webhooks en auditlogs. x402-compatibel. Drop-in middleware.
Je hebt een MCP-server gebouwd. Duizenden klanten gebruiken het gratis.
Je hebt je MCP-server verzonden omdat Claude Desktop, Cursor en Cline-klanten de mogelijkheid nodig hadden. Het nieuws verspreidde zich. Je bedient nu duizenden betaalde-tool aanroepen per dag van AI-agents die je nooit hebt ontmoet. Je egress-factuur is echt. Je API-sleutel voor de onderliggende service is echt. Je onderhoudstijd is echt. De omzet is nul.
Je hebt drie opties. Houd het gratis en verbrand geld aan infrastructuur. Beperk het achter handmatige API-sleutels (en verlies 95% van het agentverkeer door de wrijving van aanmeldformulieren). Of voeg een betalingslaag toe die AI-agents daadwerkelijk kunnen voltooien - wat precies is waar 402 Payment Required + USDC voor is gebouwd.
Blockchain0x is optie drie. Je MCP-server wijst naar onze API. Wanneer een AI-klant een betaald hulpmiddel aanroept, is de reactie 402 met een gehoste betalings-URL. De klant (of zijn menselijke toezichthouder) betaalt in USDC. Je webhook wordt geactiveerd. De volgende oproep van die klant slaagt. De hele vorm wordt x402 genoemd, en het is het protocol dat Coinbase publiceerde voor dit exacte patroon.
Hoe 402 Betaling Vereist een programmatic checkout wordt.
De HTTP-statuscode 402 bestaat al sinds de specificatie voor het eerst werd geschreven, maar had nooit een standaardimplementatie. Coinbase's x402-protocol geeft het eindelijk een. De structuur is eenvoudig: jouw tool retourneert een 402-uitdaging (een gestructureerd JSON-lichaam dat beschrijft hoe te betalen); de client betaalt en probeert opnieuw; de oproep slaagt. requirePayment van @blockchain0x/mcp bouwt dat uitdaging-lichaam voor jou.
{
"error": "payment_required",
"amountUsdc": "0.02",
"payTo": "0xYourMcpAgentAddress",
"hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
"network": "mainnet",
"description": "docs search"
}De vier staten
- Onbetaalde oproep: AI-klant roept een betaalde tool aan. Je handler controleert je eigen betaalstatus, ontdekt dat de betaler niet als betaald is gemarkeerd, en retourneert het 402-uitdaging lichaam van requirePayment als een toolfout.
- Betaling: Klant volgt de hostedUrl naar de gehoste checkout en voltooit de USDC-overdracht op Base (ofwel programmatisch via een x402-bewuste wallet of handmatig via QR-code).
- Webhook: Blockchain0x verzendt payment.received naar jouw eindpunt binnen enkele seconden na ketenbevestiging. Je verifieert het met webhooks.verify en registreert de betaler als betaald in je eigen opslag.
- Herhaal: Klant herhaalt de oorspronkelijke MCP tool-aanroep. Je handler ziet nu de betaler als betaald gemarkeerd, draait de tool en retourneert het werkelijke resultaat.
Elke betaling wordt vastgelegd in je Blockchain0x-dashboard, en elke payment.received webhook komt in je eigen logs terecht. Omdat je de betaalstatus en de webhook-handler bezit, vallen per-tool en per-betaler inkomstenanalyses voort uit de gegevens die je al opslaat.
Een compleet werkend voorbeeld.
requirePayment van @blockchain0x/mcp bouwt de 402-uitdaging; webhooks.verify van @blockchain0x/node verifieert de bevestiging. Jij bezit de twee kleine stukken ertussen: de betaalstatuscontrole binnen de tool, en de webhook-handler die een betaler als betaald markeert. Hieronder is een complete MCP-server die één betaalde tool plus zijn webhook-eindpunt blootlegt.
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { requirePayment } from "@blockchain0x/mcp";
import { webhooks } from "@blockchain0x/node";
const server = new McpServer({ name: "docs-search", version: "1.0.0" });
// You decide who counts as paid. Back this with Redis/Postgres in production.
const paid = new Set<string>();
server.tool(
"search_docs",
"Semantic search across our docs",
{ query: { type: "string" }, payer: { type: "string" } },
async ({ query, payer }) => {
if (!paid.has(`search_docs:${payer}`)) {
// Not paid yet: build an x402-compatible 402 challenge and return its
// body as a tool error. requirePayment is a challenge builder - it does
// not gate the call for you; this check is yours.
const { body } = requirePayment({
amountUsdc: "0.02",
payTo: "0xYourMcpAgentAddress",
hostedUrl: "https://pay.blockchain0x.com/checkout/docs-search",
description: "docs search",
});
return { content: [{ type: "text", text: JSON.stringify(body) }], isError: true };
}
const results = await runVectorSearch(query);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
},
);
// Your webhook endpoint marks a payer as paid once the checkout settles.
const app = express();
app.post("/webhooks/blockchain0x", express.raw({ type: "*/*" }), (req, res) => {
const r = webhooks.verify({ headers: req.headers, rawBody: req.body, secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET! });
if (!r.ok) return res.status(400).json({ code: r.code });
if (r.eventType === "payment.received") {
// Resolve (tool, payer) from the reference you encoded in hostedUrl, then:
paid.add("search_docs:0xPayer");
}
res.json({ received: true });
});Installatiestappen
- 1Maak een Blockchain0x agent wallet voor je MCP-server, op een plan dat API- en webhook-toegang omvat. Noteer het walletadres dat je als payTo zult gebruiken.
- 2Installeer de pakketten:
npm install @blockchain0x/mcp @blockchain0x/node - 3Stel omgevingsvariabelen in: BLOCKCHAIN0X_API_KEY (de MCP-server verstuurt deze als Authorization: Bearer) en BLOCKCHAIN0X_WEBHOOK_SECRET (het ondertekeningsgeheim van het dashboard waartegen webhooks.verify controleert).
- 4Beperk je betaalde tools door je eigen betaalstatus te controleren en het requirePayment-uitdaging lichaam terug te geven wanneer de beller niet heeft betaald. Laat gratis tools onbeperkt.
- 5Configureer de webhook-eindpunt in het Blockchain0x-dashboard (bijvoorbeeld /webhooks/blockchain0x), verifieer vervolgens elke levering met webhooks.verify en markeer de betaler als betaald op payment.received.
- 6Implementeren. De eerste AI-client die uw betaalde tool gebruikt, krijgt een 402, betaalt en de volgende oproep slaagt. U ziet de betaling binnen 10 seconden in het dashboard.
Je kunt ook de Blockchain0x MCP-server zelf draaien met npx @blockchain0x/mcp (stdio) of de gehoste Streamable HTTP-container op mcp.blockchain0x.com. Volledige setup, inclusief de vormen van de webhook-payloads, staat in de documentatie.
De belangrijkste beslissing in jouw handler.
Omdat u de betaalstatus bezit, beslist u ook hoe lang een betaling telt. Nadat een klant voor een tool heeft betaald, houdt u ze gedurende een bepaalde tijd als betaald gemarkeerd, en laat u binnen dat venster oproepen door zonder een nieuwe betaling. Stel het venster te kort in en u straft klanten met betalingsfrictie bij elke oproep; stel het te lang in en u geeft dure operaties weg na één goedkope betaling. Een TTL op uw Redis/Postgres-sleutel is de eenvoudigste manier om dit te implementeren.
De vensters die we aanbevelen
| Tooltype | Venster | Waarom |
|---|---|---|
| Goedkope lookup ($0.01-$0.05) | 60 seconden | Absorbeert natuurlijke herhalingen en vervolgoproepen zonder een sessie weg te geven. |
| Middelprijs inferentie ($0.10-$1) | 30 seconden | Betaal per oproep is de juiste vorm; de korte cache behandelt herhalingen bij tijdelijke fouten. |
| Dure lange context ($1-$10) | 0 seconden (geen cache) | Elke oproep is zijn eigen betaalde evenement; geen caching. |
| Abonnement-stijl tools | 24 uur | Betaal één keer per dag voor onbeperkte oproepen binnen het venster. Hogere omzet per klant bij lagere wrijving. |
Sleutel je betaalde staat per (betaler portemonnee, tool) paar, zoals het voorbeeld doet met search_docs:0xPayer. Twee verschillende clients raken dezelfde tool, elk betaalt afzonderlijk. Dezelfde client raakt twee verschillende tools, twee afzonderlijke betalingen vereist. Je kunt het breder afbakenen (per betaler over alle tools) als je dat wilt; de granulariteit per betaler per tool is wat de prijsstelling eerlijk laat aanvoelen.
Vier prijsstructuren die werken voor MCP-servers.
Prijzen is jouw keuze - je stelt het bedrag per tool in de middleware in. Hieronder staan de vier patronen die we het vaakst zien en welke toolvormen ze passen.
Per-oproep micro-prijsstelling
$0.01 - $0.05 per oproepZoeken, opzoeken, classificatie, formaatconversie - goedkope operaties met een hoog volume.
Laagste wrijving voor klanten; stemt kosten exact af op gebruik.
Hoogste transactie overhead; werkt alleen bij een hoog oproepvolume.
Per-oproep gemiddelde prijsstelling
$0.10 - $1.00 per oproepLLM inferentie, generatie, contentproductie, alles waarbij elke oproep echt werk doet.
In balans - duidelijke waarde per oproep, beheersbaar aantal transacties.
Hogere wrijving per oproep; klanten geven soms de voorkeur aan abonnementen op dit prijsniveau.
Per-oproep hoge prijsstelling
$1 - $10 per oproepGeneratie van lange context, documentverwerking, multi-step orchestratie, dure derde partij API-wrapping.
Marge per oproep is betekenisvol; mislukte betalingen zijn tolerabele verliezen.
Klanten onderhandelen hard over deze prijs; verwacht terugbetalingsverzoeken.
Abonnementsvenster
$5 - $50 per 24u venster (of $X per maand)Klanten die veel oproepen in een sessie doen en geen per-oproep betalingsfrictie zouden tolereren.
Hogere omzet per klant; minder overhead per oproep.
Lagere vindbaarheid; klanten moeten vooraf toezeggen. Vaak gecombineerd met per-oproep voor hybride prijsstelling.
Veel operators mixen patronen: goedkope tools met micro-prijzen per oproep, dure tools met hoge prijzen per oproep, plus een abonnementsvenster van 24 uur voor zware gebruikers. Niets weerhoudt u ervan om alle drie op dezelfde MCP-server te draaien; elke tool stelt zijn eigen amountUsdc in requirePayment in en zijn eigen betaalvenster in uw handler.
Pro is het juiste plan voor bijna elke MCP-server.
MCP-serveroperators beginnen bijna altijd op Pro omdat API-schrijftoegang en webhooks vanaf dag één vereist zijn: Gratis is alleen-lezen, en een betaalde tool moet payment.received-webhooks ontvangen en verifiëren. Zie de prijs pagina voor de exacte kosten per agent en waar de transactiekosten niveaus zich bevinden; de korte versie is dat elke server die echte betaalde volumes doet, ver voorbij het punt is waar Pro zichzelf terugbetaalt.
- Gratis: handig om te experimenteren met de API en het dashboard. Niet geschikt voor betaalde productietools (alleen lezen, geen webhooks).
- Pro: de standaard voor live MCP-servers. Volledige API-toegang, webhooks, exports.
- Business: wanneer je de audit log nodig hebt voor compliance, of wanneer je MCP servers voor meerdere klanten draait en team-seat-sharing per agent wilt.