Zum Inhalt springen

x402-Zahlungsprotokoll

Das x402-Protokoll erweckt den HTTP-Statuscode 402 (Payment Required) als maschinenlesbares Zahlungsprotokoll fuer APIs zum Leben. Der x402-mcp-validator validiert MCP-Server auf x402-Konformitaet — verbindet sich mit Servern, erkennt Tools, prueft auf Zahlungsanforderungen und validiert Zahlungsoptionen gegen die Spezifikation.

Wenn ein MCP-Tool eine Zahlung erfordert, ist der Ablauf:

  1. Client ruft ein Tool auf auf dem MCP-Server
  2. Server antwortet mit 402 inklusive Zahlungsanforderungen (scheme, network, amount, asset, payTo)
  3. Client verarbeitet die Zahlung ueber das angegebene Zahlungsnetzwerk
  4. Client wiederholt den Tool-Aufruf mit einem Zahlungsbeleg im Header
  5. Server validiert die Zahlung und fuehrt das Tool aus

Dies ermoeglicht API-Monetarisierung auf Tool-Ebene — verschiedene Tools koennen unterschiedliche Preise haben, und kostenlose Tools koennen neben kostenpflichtigen auf demselben Server existieren.

Der Validator verbindet sich End-to-End mit einem MCP-Server und gibt einen strukturierten Snapshot zurueck:

import { McpServerValidator } from 'x402-mcp-validator'
const { status, messages, categories, entries } = await McpServerValidator.start( {
endpoint: 'https://your-mcp-server.example.com/mcp',
timeout: 15000
} )
console.log( `Status: ${status ? 'PASS' : 'FAIL'}` )
console.log( `Tools: ${entries['tools'].length}` )
console.log( `x402: ${categories['supportsX402']}` )
console.log( `Networks: ${JSON.stringify( entries['x402']['networks'] )}` )

Verbindet sich mit einem MCP-Server, erkennt Capabilities, prueft auf x402-Zahlungsunterstuetzung, validiert Zahlungsanforderungen, misst Latenz und gibt einen strukturierten Snapshot zurueck.

KeyTypBeschreibungPflicht
endpointstringMCP-Server-URLJa
timeoutnumberVerbindungs-Timeout in ms (Standard 10000)Nein

Gibt zurueck: { status, messages, categories, entries }

Vergleicht zwei Snapshots von .start() und gibt einen strukturierten Diff mit hinzugefuegten, entfernten und geaenderten Elementen pro Abschnitt zurueck.

const before = await McpServerValidator.start( { endpoint: 'https://server.example.com/mcp' } )
// ... Zeit vergeht, Server aendert sich ...
const after = await McpServerValidator.start( { endpoint: 'https://server.example.com/mcp' } )
const { status, messages, hasChanges, diff } = McpServerValidator.compare( { before, after } )
console.log( `Changes detected: ${hasChanges}` )
console.log( `Tools added: ${diff['tools']['added'].length}` )
console.log( `Tools removed: ${diff['tools']['removed'].length}` )
KeyTypBeschreibungPflicht
beforeobjectSnapshot eines frueheren .start()-AufrufsJa
afterobjectSnapshot eines spaeteren .start()-AufrufsJa

Gibt zurueck: { status, messages, hasChanges, diff }

Der Validator klassifiziert jeden Server mit 12 booleschen Flags:

FlagBeschreibung
isReachableServer hat auf HEAD-Anfrage geantwortet
supportsMcpMCP-Handshake abgeschlossen
hasToolsServer stellt mindestens ein Tool bereit
hasResourcesServer stellt mindestens eine Resource bereit
hasPromptsServer stellt mindestens einen Prompt bereit
supportsX402Mindestens ein Tool hat einen 402-Zahlungsfehler zurueckgegeben
hasValidPaymentRequirementsMindestens eine Zahlungsoption hat die Validierung bestanden
supportsExactSchemeHat Zahlungsoptionen mit scheme: 'exact'
supportsEvmHat Zahlungsoptionen mit network: 'eip155:*'
supportsSolanaHat Zahlungsoptionen mit network: 'solana:*'
supportsTasksServer bewirbt Tasks-Capability
supportsMcpAppsServer bewirbt mcpApps-Capability

Der Validator verarbeitet einen MCP-Server in sechs aufeinanderfolgenden Schritten:

  1. Connect — Verbindet sich mit dem MCP-Server via StreamableHTTP mit SSE-Fallback.
  2. Discover — Erkennt Tools, Resources, Prompts und Capabilities ueber das MCP-Protokoll.
  3. Classify — Klassifiziert Server-Capabilities in die 12 booleschen Kategorien.
  4. Probe — Prueft jedes Tool auf x402-Zahlungsanforderungen (HTTP 402 / JSON-RPC -32402).
  5. Validate — Validiert Zahlungsoptionen: Scheme, Network, Amount, Asset, payTo, Checksummen.
  6. Build Snapshot — Erstellt den strukturierten Snapshot mit Kategorien, Eintraegen und Validierungsmeldungen.

Der Validator verwendet strukturierte Fehlercodes, organisiert nach Kategorie:

VAL -- Eingabevalidierung

Codes VAL-001 bis VAL-015 decken die Eingabeparameter-Validierung fuer .start() und .compare() ab. Beispiele: fehlender Endpunkt, ungueltiges URL-Format, fehlende Snapshots fuer Vergleich.

CON -- MCP-Verbindung

Codes CON-001 bis CON-011 decken Server-Konnektivitaet und MCP-Handshake-Probleme ab. Beispiele: Server nicht erreichbar, Handshake fehlgeschlagen, tools/list-Anfrage fehlgeschlagen.

PAY -- Zahlungsvalidierung

Codes PAY-001 bis PAY-102 decken die x402-Zahlungsanforderungs-Validierung im Detail ab. Pruefungen umfassen: x402-Version, Resource-Format, Accepts-Array, Scheme, Netzwerk-Praefix, Betragsformat, Asset-Adresse, payTo-Adresse mit Checksummen-Validierung und Timeout-Werte.

PRB -- Probe

Codes PRB-004 und PRB-005 decken Probe-Level-Probleme ab wie unerwartete Ausnahmen und keine verfuegbaren Tools.

AUTH -- OAuth

Codes AUTH-002 bis AUTH-011 decken OAuth-Discovery ab einschliesslich Metadaten, PKCE-Unterstuetzung, Protected-Resource-Metadaten, Client-Registrierung und Scope-Erkennung.

CMP -- Vergleich

Codes CMP-001 bis CMP-003 decken die Snapshot-Vergleichs-Integritaet ab: unterschiedliche Server-Endpunkte, fehlende Zeitstempel und chronologische Reihenfolge.