Ich wollte sehen, ob ein Makler dafür bezahlen könnte, mir eine Nachricht zu schicken.
Kein Mensch, der ein Kontaktformular ausfüllt. Kein CAPTCHA. Ein Agent mit Geld, einer Aufgabe und dem Wunsch, mich zu erreichen.
Ich bin nichts Besonderes. Ich bin einfach nur ein „Fleischklops“, dem ein Computer vielleicht etwas sagen möchte.
Ein Mensch kann mich jederzeit auf LinkedIn oder X erreichen, wie auf der Kontaktseite beschrieben.
Wenn ich einen Kontakt-Endpunkt auf dieser Seite einrichte, bekomme ich einen neuen Posteingang, den ich überwachen muss. Spam, Bots, unaufgeforderte Kontaktaufnahmen. Ein CAPTCHA hält Menschen fern. Eine Bezahlung hält alle fern, aber Kreditkarten halten auch Menschen fern. Ich brauchte etwas, das der Arbeitsweise von Agenten entspricht.
x402 ist diese Barriere. Es ist ein Protokoll, das auf dem HTTP-Statuscode 402 „Payment Required“ aufbaut – dem Statuscode, den das Internet für Zahlungen reserviert, aber nie definiert hat. x402 definiert ihn. Ein Server gibt einen 402-Status mit einem Preis und einer „stablecoin“-Adresse zurück. Der Agent liest die Antwort, unterzeichnet eine Genehmigung mit seiner Wallet, versucht es erneut mit einem Zahlungsheader, und der Server wickelt die Zahlung auf der Blockchain ab. Keine Checkout-Seite. Kein Formular. Kein Konto. Nur ein Statuscode und eine Signatur.
Für einen Menschen ist das eine schreckliche Erfahrung. Für einen Agenten ist es eine großartige Erfahrung.
So funktioniert es
Der Endpunkt befindet sich unter /contact/send auf dieser Website. Ein Agent findet ihn über die OpenAPI-Spezifikation oder die Datei agents.md. Der erste POST-Aufruf enthält keinen Zahlungsheader. Der Server gibt einen 402-Fehler mit dem Preis, den akzeptierten Vermögenswerten und einem Schema zurück, das beschreibt, welche Felder enthalten sein müssen. Der Agent benötigt keine weitere Dokumentation außer der Antwort selbst.
sequenceDiagram
participant Human as Human
participant Agent as Agent
participant Site as benmilne.com
participant Facilitator as x402 Facilitator
participant Chain as Blockchain
participant Admin as Admin Panel
Human-->>Agent: "Contact Ben Milne about X"
Agent-->>Site: POST /contact/send (no payment)
Site-->>Agent: 402 + price + assets + field schema
Agent-->>Agent: Sign stablecoin permit
Agent-->>Site: POST + PAYMENT-SIGNATURE + message body
Site-->>Facilitator: Verify signature
Facilitator-->>Site: Valid
Site-->>Facilitator: Settle
Facilitator->>Chain: On-chain transfer (SBC)
Chain-->>Facilitator: Tx hash
Facilitator-->>Site: Settlement confirmed
Site-->>Site: Store message in D1
Site-->>Agent: 200 + receipt with tx hash
Admin-->>Admin: Message appears with block explorer link
rect rgba(200, 120, 50, 0.08)
Note over Human,Admin: Future: callback URL enables two-way communication
end
Die Stable Coin Company betreibt einen Vermittler, der die signierte Genehmigung des Agenten überprüft und die On-Chain-Überweisung ausführt, wobei er die Gasgebühren im Namen beider Parteien übernimmt. Der Agent muss weder ETH noch SOL halten. Er hält nur einen Vermögenswert – den, mit dem er bezahlt.
Erste Schritte
Ich habe hierfür eine kleine Bibliothek namens „x402-payment-path“ geschrieben. Sie übernimmt die 402-Challenge, die Signaturüberprüfung, die Abwicklung und die Erstellung der Quittung.
Das zugrunde liegende Protokoll ist x402, der native Zahlungsstandard der „stablecoin“, den Coinbase als Open-Source-Projekt veröffentlicht hat und der nun von der x402 Foundation als Projekt der Linux Foundation gepflegt wird. Die Stable Coin Company betreibt den Vermittler, der sowohl „USDC“ als auch SBC auf Base, Solana und Radius unterstützt. Ich habe SBC verwendet, da dies der Vermögenswert ist, mit dem ich am besten vertraut bin.
Wenn Sie dies für ein Produkt statt für eine Nachricht implementieren wollten, würden Sie ändern, was nach der Zahlung geschieht. Anstatt eine Nachricht zu speichern, würden Sie eine Download-URL generieren, einen Webhook auslösen oder einen Versand veranlassen. Der Bibliothek ist es egal, um welche Aktion es sich handelt. Sie macht die Aktion von der Zahlung abhängig.
Entscheidungen
Der Endpunkt akzeptiert sowohl „USDC“ als auch SBC. Ich habe SBC verwendet, da dies das Asset ist, das ich am besten kenne, und das ich auf beiden Blockchains durchgängig verifizieren wollte.
Ich habe zwei Wallets. Mein EVM-Wallet empfängt SBC auf Base. Ein separates Solana-Wallet empfängt SBC auf Solana. Gleicher Endpunkt, gleicher Preis, unterschiedliche Abwicklungswege.
Nachrichten landen in einer D1-Tabelle. Ich lese sie im Admin-Panel ab. Keine E-Mail-Weiterleitung, kein Posteingang, den es zu überwachen gilt. Eine Nachricht sollte nichts anderes tun können, als eine Nachricht zu sein.
Der Preis beträgt 1 $. Hoch genug, um Spam unrentabel zu machen. Niedrig genug, um für einen seriösen Akteur kein Problem darzustellen.
Es funktioniert
Hier sind echte Transaktionen vom 13. Juni 2026. Jede Nachricht kostete 0,10 $ in SBC. Die Abwicklung erfolgte auf der Blockchain.
| Absender | Netzwerk | Betrag | Transaktion |
|---|---|---|---|
cursor-agent/0.46.2 | Basis | 0,10 $ SBC | BaseScan |
claude-research-agent/1.2 | Basis | 0,10 $ SBC | BaseScan |
e2e-test-agent | Base | 0,10 $ SBC | BaseScan |
e2e-test-agent | Solana | 0,10 $ SBC | Solscan |

Das ist mein Admin-Panel. Sieben Nachrichten. Base und Solana. Jede einzelne wurde auf der Blockchain abgewickelt, bevor sie angezeigt wurde.
Eine Nachricht an mich senden
Wenn du einen Agenten entwickelst, lautet der Endpunkt: POST benmilne.com/contact/send. Dies ist in der OpenAPI-Spezifikation und in der Datei „agents.md“ dokumentiert.
Führe einen POST-Aufruf ohne Zahlungsheader durch, und der Server gibt einen 402-Status mit allen erforderlichen Informationen zurück. Die x402-Client-Bibliothek übernimmt von dort aus die Signierung und den Wiederholungsversuch. Der Preis beträgt 1 SBC auf Base und Solana. Wenn du eine Callback-URL angibst, kann ich in Zukunft unter dieser URL antworten.
Was ich gelernt habe
Die 402-Antwort ist eine maschinenlesbare Rechnung. Der Agent benötigt keine Benutzeroberfläche. Er benötigt einen Preis, eine Asset-Adresse und ein Netzwerk. Er signiert, er zahlt, er versucht es erneut.
Ich habe versucht, Unterstützung für „USDC“ über Community-Vermittler hinzuzufügen, die sich selbst als „keyless“ bewerben. Keiner von ihnen funktionierte ohne Berechtigungsprüfung. Bei einem war eine Adressregistrierung erforderlich. Bei einem anderen gab es Versionsinkompatibilitäten. SBC über The Stable Coin Company war der einzige Vermittler, der ganz ohne jegliche Einrichtung funktionierte. Keine Schlüssel, keine Konten, keine Registrierung. Das ist wichtig, wenn man möchte, dass Agenten Zahlungen vornehmen können, ohne dass zuvor ein Mensch etwas konfigurieren muss.
Eine Sache, die mich ebenfalls überrascht hat: Sowohl MetaMask als auch Phantom haben SBC in meiner Wallet immer wieder ausgeblendet, selbst nachdem ich es mehrfach genehmigt hatte. Ich fügte den Token hinzu, bestätigte die Transaktion, überprüfte meinen Kontostand – und schon war der Vermögenswert wieder verschwunden. Das passierte während der Tests immer wieder. Ich habe nichts als Respekt für beide Teams, aber es kam mir lächerlich vor, meiner Wallet auf meinem eigenen Gerät immer wieder mitteilen zu müssen, dass ich mein eigenes Asset von einem regulierten Emittenten nutzen wollte. Das Internet ist groß. Wallets sollten den Entscheidungen vertrauen, die ihre Nutzer bereits getroffen haben.
Der Code, den ich dafür verwendet habe, ist Open Source, und es steht euch frei, damit zu machen, was ihr wollt – vorausgesetzt, MetaMask oder Phantom wollen nicht beeinflussen, was ihr stattdessen damit macht.