Cloudflare werkt samen met Coinbase aan de oprichting van de x402 Foundation. De missie van deze stichting is om de acceptatie van het x402-protocol te stimuleren. Dit is een vernieuwd raamwerk waarmee klanten en services op het internet in een gemeenschappelijke taal waarde met elkaar kunnen uitwisselen. Naast de samenwerking van vandaag kondigen we ook een reeks functies aan waarmee ontwikkelaars x402 in de Agents SDK- en onze MCP-integraties kunnen gebruiken. Ook stellen we een nieuw schema voor uitgestelde betalingen voor.
Betalingen in het tijdperk van AI-agents
Betalingen op het internet zijn van oudsher ontworpen voor mensen. We bekijken de website van een verkoper, geven onze koopintentie aan door artikelen aan een winkelwagentje toe te voegen en bevestigen deze intentie door onze creditcardgegevens in te voeren en op 'Betalen' te klikken. Maar hoe gaat dat in zijn werk voor directe transacties tussen digitale services? We hebben protocollen nodig om transacties tussen machines mogelijk te maken.
De websites die beschermd worden door Cloudflare versturen dagelijks meer dan een miljard HTTP 402-responscodes naar bots en crawlers die toegang proberen te verkrijgen tot hun content en e-commercewinkels. Deze responscode wordt geleverd met een eenvoudig bericht: 'Betaling vereist.'
Toch krijgen deze 402-berichten niet veel respons. Eén reden daarvoor is een gebrek aan standaardisatie. Zonder een specificatie over hoe deze responscodes eruit moeten zien en hoe erop moet worden gereageerd, beschikken contentcreators, uitgevers en websitebeheerders niet over de juiste hulpmiddelen om hun betalingsverzoeken over te brengen. Met x402 beschikken ontwikkelaars over een duidelijk, open protocol waarmee websites en geautomatiseerde agents wereldwijd betalingen kunnen doen.
Coinbase heeft de x402-transactieflow ontwikkeld, die hieronder wordt beschreven, om machines te helpen rechtstreeks via HTTP voor contentbronnen te betalen:
Een klant probeert toegang te verkrijgen tot een contentbron die beveiligd is door x402.
De server reageert met de statuscode '402 Betaling vereist'. De antwoordtekst bevat de betalingsinstructies, zoals het te betalen bedrag en de ontvanger.
De klant stuurt een verzoek met de betalingsautorisatie naar de contentbron die door x402 wordt beschermd.
De betalingsprovider controleert de betalingsinformatie van de klant en rondt de transactie af.
De server reageert met de gevraagde content in het antwoord, samen met de betalingsrespons die bevestigt dat de betaling is ontvangen.
Deze flow zorgt voor de programmatische toegang tot contentbronnen op het internet. Klanten en servers die het x402-protocol kunnen interpreteren, kunnen transacties uitvoeren zonder dat daar accounts, abonnementen of API-sleutels voor nodig zijn.
x402 kan worden gebruikt om geld met traditionele use cases te verdienen, maar maakt dit ook mogelijk voor een nieuwe klasse van use cases. Bijvoorbeeld:
Een assistent die bij verschillende leveranciers accessoires voor jouw Halloweenkostuum kan kopen.
Een AI-agent die per browser-renderingsessie betaalt, in plaats van een maandelijks abonnement.
Een autonome aandelenhandelaar die microbetalingen doet voor een hoogwaardige realtime datafeed om goed geïnformeerde beslissingen te kunnen nemen.
Toekomstige versies van x402 zijn mogelijk onafhankelijk van de betalingsmethodes en zouden naast creditcards en bankrekeningen ook stablecoins kunnen ondersteunen.
Cloudflare's pay per crawl: voorstel voor het x402-uitgestelde betalingsschema
Agents en crawlers hebben vaak twee belangrijke functies nodig die al in de huidige financiële infrastructuur aanwezig zijn: een vertraagde afhandeling om rekening te houden met eventuele geschillen en een enkele, samengevoegde betaling om hun boekhouding te vereenvoudigen. Crawlers die deelnemen aan onze private bèta van pay-per-crawl kunnen bijvoorbeeld eenvoudig een enorm aantal pagina's crawlen en auditlogboeken genereren, en aan het einde van elke dag daar eenmalig via een gekoppelde creditcard of bankrekening voor betalen.
We willen met dit soort betalingsscenario's rekening houden, en daarom stellen we een nieuw, uitgesteld betalingsschema voor het x402-protocol voor. Deze nieuwe regeling is specifiek ontworpen voor niet-urgente betalingen door agents, die via traditionele betaalmethoden of stablecoins afgehandeld kunnen worden. Met deze toevoeging zorgen we ervoor dat elke server die aan de vereisten voldoet, de cryptografische handshake optioneel kan loskoppelen van de betalingsafwikkeling zelf. Zo kunnen agents en servers vooraf onderhandelde licentieovereenkomsten, batchafwikkelingen of abonnementen gebruiken.
We zullen dit nieuwe uitgestelde betalingsschema invoeren voor pay per crawl terwijl we de private bètaversie uitbreiden en verder ontwikkelen.
Dit is ons eerste voorstel voor de handshake die in de volgende grote update van x402 uitgebracht zou kunnen worden:
1. Het aanbod van de server
Tegenwoordig gaat het zo: een ongeverifieerde of ongeautoriseerde klant wil toegang verkrijgen tot een contentbron en ontvangt de melding 402 Betaling vereist
. De server stuurt de klant een betalingsverzoek dat de klant voor de respons kan gebruiken. Deze respons is een machineleesbaar aanbod en ons voorstel omvat een nieuw element, namelijk uitgesteld.
HTTP/1.1 402 Payment Required
Content-Type: application/json
{
"accepts": [
{
"scheme": "deferred",
"network": "example-network-provider",
"resource": "https://example.com/page",
"...": "...",
"extras": {
"id": "abc123",
"termsUrl": "https://example.com/terms"
},
}
]
}
2. De ondertekende verbintenis van de klant
Vervolgens verstuurt de klant het verzoek opnieuw met een ondertekende respons waarin de betalingsverplichting is vastgelegd. Het uitgestelde schema maakt gebruik van HTTP-berichthandtekeningen waarbij een public key met JWK-indeling in een gehoste directory beschikbaar is. In de Signature-Input
tekst staat duidelijk uitgelegd welke delen van het verzoek onderdeel zijn van de Signature
. Deze tekst dient als cryptografisch bewijs van de intentie van de klant en kan door de serviceprovider worden geverifieerd zonder dat er een transactie in de blockchain hoeft te worden uitgevoerd.
GET /path/to/resource HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 Chrome/113.0.0 MyBotCrawler/1.1
Payment:
scheme="deferred",
network="example-network-provider",
id="abc123"
Signature-Agent: signer.example.com
Signature-Input:
sig=("payment" "signature-agent");
created=1700000000;
expires=1700011111;
keyid="ba3e64==";
tag="web-bot-auth"
Signature: sig=abc==
De server van de contentbron valideert de handtekening en retourneert de content met een bevestigingstekst. De server is verantwoordelijk voor het toewijzen van de betaling aan de rekening die aan de HTTP-berichthandtekening is gekoppeld, voor het verifiëren van de identiteit van de klant en tot slot voor het leveren van de content. In dit scenario is er geen blockchain aan de betalingen gekoppeld.
HTTP/1.1 200 OK
Content-Type: text/html
Payment-Response:
scheme="deferred",
network="example-network-provider",
id="abc123",
timestamp=1730872968
De server kan de betaling nu flexibel verwerken. De gevalideerde id van de handshake fungeert als referentie voor de transactie. Deze aanpak maakt een flexibel gebruiksmodel mogelijk zonder overhead per aanvraag, waardoor de server betalingen op abonnementsbasis, dagelijks of zelfs in batches kan verwerken. Hierdoor ontstaat een flexibel raamwerk waarin het cryptografische vertrouwen direct tot stand wordt gebracht, terwijl de financiële afhandeling via traditionele betalingsmethodes of stablecoins kan plaatsvinden.
De MCP-servers, Agents SDK en x402-betalingen van Cloudflare
Het uitvoeren van code is wat een theoretische open conventie in de praktijk bruikbaar maakt en uiteindelijk tot de erkende standaard verheft. Agents die zijn gebouwd met behulp van Agent SDK van Cloudflare kunnen nu via x402 voor contentbronnen betalen, en MCP-servers kunnen tools beschikbaar stellen die via x402 betaald kunnen worden. Om te laten zien hoe dit werkt, hebben we de x402-playground aangemaakt, een live demo van x402. De x402-playground wordt aangestuurd door de Agents SDK en heeft toegang tot tools van Cloudflare's MCP-servers.
Wanneer u de x402-playground opent, wordt een nieuwe wallet aangemaakt en gefinancierd met Testnet USDC op een Base blockchain-testnet. De agent, gebouwd met Agents SDK, heeft toegang tot een MCP-server met zowel gratis als betaalde tools.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { McpAgent } from "agents/mcp";
import { withX402 } from "agents/x402";
export class PayMCP extends McpAgent {
server = withX402(
new McpServer({ name: "PayMCP", version: "1.0.0" }),
X402_CONFIG
);
async init() {
// Paid tool
this.server.paidTool(
"square",
"Squares a number",
0.01, // Tool price
{
a: z.number()
},
{},
async ({ number }) => {
return { content: [{ type: "text", text: String(a ** 2) }] };
}
);
// Free tool
this.server.tool(
"add-two-numbers",
"Adds two numbers",
{
a: z.number(),
b: z.number(),
},
async ({ a, b }) => {
return { content: [{ type: 'text', text: String(a + b) }] };
}
);
}
}
Wanneer de agent een betaalde tool probeert te gebruiken, reageert de MCP-server met een '402 Betaling vereist'-bericht. De agent kan de betalingsinstructies interpreteren en de mens vragen of hij/zij wil doorgaan met de transactie. Voor het bouwen van een x402-compatibele client is een 'basic wrapper' nodig voor het verzoek aan de tool:
import { Agent } from "agents";
import { withX402Client } from "agents/x402";
export class MyAgent extends Agent {
// Your Agent definitions...
async onToolCall() {
// Build the x402 client
const x402Client = withX402Client(
myMcpClient,
{ network: "base-sepolia", account: this.account }
);
// The first parameter becomes the confirmation callback.
// We can set it to `null` if we want the agent to pay automatically.
const res = await x402Client.callTool(
this.onPaymentRequired,
{
name: toolName,
arguments: toolArgs
});
}
}
Deze testagent haalt het geld uit de wallet en stuurt de betaling naar de MCP-server, die de transactie afhandelt. U kunt opgeven of de transacties met of zonder menselijke bevestiging moeten worden uitgevoerd. Zo kunt u de interface ontwerpen die het beste bij uw toepassing past.
U kunt vandaag nog aan de slag met de Agents SDK of door uw eigen MCP-server te gebruiken.
We blijven nauw met Coinbase samenwerken aan de ontwikkeling van de x402 Foundation. Binnenkort volgt meer informatie.
Wij geloven in de waarde van open en flexibele protocollen. Daarom moedigen we iedereen aan om rechtstreeks aan het x402-protocol bij te dragen. Wilt u contact opnemen met het Cloudflare-team dat aan x402 werkt? Stuur dan een e-mail naar x402@cloudflare.com.