Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Mit Google anmelden, um Bewertungen zu schreiben.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Agent Wormhole

von runningoffcodeVersion 0.8.0i★ 6 (Sterne des ganzen Repos)iLäuft auf deinem Computer
Name in der Registryio.github.runningoffcode/wormhole-x402

So installierst du es

What it does

Check tokens, pages and x402 payments before your agent trusts them. Offline verdicts.

  • Connects Läuft auf deinem Computer
  • Account or key Needs WORMHOLE_API_KEY
  • Category Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

3/3 Prüfungen bestanden · Läuft auf deinem Computer

Zuerst: Welche KI nutzt du?

Wähle deine App, dann erscheinen die Schritte unten.

Klappt mit Claude, aber erst etwas vorbereiten

Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal) · Nur in der Claude-App für den Computer (Windows oder Mac), nicht im Web oder auf dem Handy

  1. Node.js installieren

    Nur einmal; gilt für alle Server, die Node.js brauchen

    Download-Seite von Node.js öffnen ↗

  2. Bei Agent Wormhole registrieren und Schlüssel erstellen

    Öffne die Seite des Anbieters, registriere dich und erstelle einen API-Schlüssel für den nächsten Schritt. Preise und Gratis-Tarife siehst du auf seiner Seite.

    Seite von Agent Wormhole öffnen ↗

  3. Einstellungsdatei der Claude-Desktop-App öffnen

    SettingsDeveloperEdit Config

  4. Diese Einstellungen einfügen und speichern

    {
      "mcpServers": {
        "wormhole-x402": {
          "command": "npx",
          "args": [
            "-y",
            "wormhole-x402"
          ],
          "env": {
            "WORMHOLE_API_KEY": "your-value",
            "WORMHOLE_VERIFY_URL": "your-value",
            "WORMHOLE_ADDRESS_LEDGER": "your-value"
          }
        }
      }
    }

    Füge den Schlüssel nur in das Feld der App ein, nie in einen Chat und schick ihn niemandem

  5. Claude beenden und neu öffnen

  6. Ausprobieren

    Nutze Agent Wormhole und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude sagt, dass es Agent Wormhole nutzt, oder ein Werkzeug von Agent Wormhole in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

ChatGPT kann Agent Wormhole noch nicht verbinden

Agent Wormhole läuft auf deinem Computer, aber ChatGPT verbindet nur Server, die im Web laufen

Das kannst du stattdessen tun

A · Eine App nutzen, die Agent Wormhole verbinden kann

  • Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal) · Nur in der Claude-App für den Computer (Windows oder Mac), nicht im Web oder auf dem Handy
  • Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)
  • Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)
  • Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)

B · Andere in Sonstiges, die mit ChatGPT funktionieren

Aus den meistgenutzten derselben Kategorie, nur solche, die per Adresse ohne Schlüssel verbinden

Klappt mit Claude Code, aber erst etwas vorbereiten

Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)

  1. Node.js installieren

    Nur einmal; gilt für alle Server, die Node.js brauchen

    Download-Seite von Node.js öffnen ↗

  2. Bei Agent Wormhole registrieren und Schlüssel erstellen

    Öffne die Seite des Anbieters, registriere dich und erstelle einen API-Schlüssel für den nächsten Schritt. Preise und Gratis-Tarife siehst du auf seiner Seite.

    Seite von Agent Wormhole öffnen ↗

  3. Terminal öffnen

    Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen

  4. Diesen Befehl einfügen und Enter drücken

    claude mcp add --scope user wormhole-x402 --env WORMHOLE_API_KEY=your-value --env WORMHOLE_VERIFY_URL=your-value --env WORMHOLE_ADDRESS_LEDGER=your-value -- npx -y wormhole-x402

    Ersetze „your-value“ vor dem Enter durch deinen Schlüssel

    Füge den Schlüssel nur in das Feld der App ein, nie in einen Chat und schick ihn niemandem

  5. /mcp in Claude Code eingeben

    Agent Wormhole sollte in der Liste als verbunden erscheinen

  6. Ausprobieren

    Nutze Agent Wormhole und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude Code sagt, dass es Agent Wormhole nutzt, oder ein Werkzeug von Agent Wormhole in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Cursor, aber erst etwas vorbereiten

Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)

  1. Node.js installieren

    Nur einmal; gilt für alle Server, die Node.js brauchen

    Download-Seite von Node.js öffnen ↗

  2. Bei Agent Wormhole registrieren und Schlüssel erstellen

    Öffne die Seite des Anbieters, registriere dich und erstelle einen API-Schlüssel für den nächsten Schritt. Preise und Gratis-Tarife siehst du auf seiner Seite.

    Seite von Agent Wormhole öffnen ↗

  3. Mit diesem Button Cursor öffnen

    In Cursor öffnen

    Cursor fragt nach einer Bestätigung; klicke Install

  4. Schlüssel eintragen

    In den Einstellungen von Agent Wormhole ist WORMHOLE_API_KEY, WORMHOLE_VERIFY_URL, WORMHOLE_ADDRESS_LEDGER leer; trag deinen Schlüssel ein und speichere

    Füge den Schlüssel nur in das Feld der App ein, nie in einen Chat und schick ihn niemandem

  5. KI-Chat in Cursor im Agent-Modus öffnen

  6. Ausprobieren

    Nutze Agent Wormhole und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Cursor sagt, dass es Agent Wormhole nutzt, oder ein Werkzeug von Agent Wormhole in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit VS Code, aber erst etwas vorbereiten

Du brauchst einen Schlüssel von Agent Wormhole (auf der Seite des Anbieters erstellen) · Installiere zuerst Node.js auf deinem Computer (nur einmal)

  1. Node.js installieren

    Nur einmal; gilt für alle Server, die Node.js brauchen

    Download-Seite von Node.js öffnen ↗

  2. Bei Agent Wormhole registrieren und Schlüssel erstellen

    Öffne die Seite des Anbieters, registriere dich und erstelle einen API-Schlüssel für den nächsten Schritt. Preise und Gratis-Tarife siehst du auf seiner Seite.

    Seite von Agent Wormhole öffnen ↗

  3. Mit diesem Button VS Code öffnen

    In VS Code öffnen

    VS Code fragt nach einer Bestätigung; klicke Install

  4. Schlüssel eintragen

    In den Einstellungen von Agent Wormhole ist WORMHOLE_API_KEY, WORMHOLE_VERIFY_URL, WORMHOLE_ADDRESS_LEDGER leer; trag deinen Schlüssel ein und speichere

    Füge den Schlüssel nur in das Feld der App ein, nie in einen Chat und schick ihn niemandem

  5. KI-Chat in VS Code im Agent-Modus öffnen

  6. Ausprobieren

    Nutze Agent Wormhole und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn VS Code sagt, dass es Agent Wormhole nutzt, oder ein Werkzeug von Agent Wormhole in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Andere Apps mit MCP, etwa Windsurf, Zed oder Gemini CLI, fügen Server unterschiedlich hinzu. Sieh in der App-Liste nach

Alle Apps mit MCP ansehen →

JSON-Einstellungen stehen unten unter „Für Entwickler“

Hängst du fest? Frag Leute, die Agent Wormhole nutzen💬 Diskussion →
Für Entwickler: Terminal-Befehle und JSON-Einstellungen

Auf deinem Computer installiert

Claude Code

claude mcp add --scope user wormhole-x402 --env WORMHOLE_API_KEY=your-value --env WORMHOLE_VERIFY_URL=your-value --env WORMHOLE_ADDRESS_LEDGER=your-value -- npx -y wormhole-x402

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "wormhole-x402": {
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "wormhole-x402": {
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "wormhole-x402": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

Werte, die du selbst einträgst

  • WORMHOLE_API_KEY geheim env
    Optional. Hosted-mode key from dashboard.agentwormhole.com: adds URL checks with change history, and the operator's spend policy (budgets, approvals, kill switch) on payments.
  • WORMHOLE_VERIFY_URL env
    Optional. Override the hosted verifier endpoint (default https://dashboard.agentwormhole.com/api/v1/verify).
  • WORMHOLE_ADDRESS_LEDGER env
    Optional. Path to the address-provenance ledger written by wormhole-guard's readguard hook (default ~/.wormhole/addresses.jsonl).

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Auf einen Blick

GitHub-Sternei
6 (Sterne des ganzen Repos)
Dieses Repo enthält mehrere MCP-Einträge; die Sterne zählen in Ranglisten nur einmal
Downloads pro Wochei
345/Wo.
Lizenzi
Apache-2.0
Verbindung
Läuft auf deinem Computer
Neueste Versioni
0.8.0
Kategoriei
Sonstiges
In der Registry veröffentlichti
6. Sept. 2026
Code zuletzt geänderti
11. Nov. 2026
Entwickler
runningoffcode
Pakete
npm: wormhole-x402
Registry-Status
Aktiv

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Laufen auf deinem Computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 12. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto runningoffcode bestätigt, dem das Repo gehört

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: gestern

  • ✓ Bestanden

    Hat eine Lizenz

    Nutzt Apache-2.0

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Diskussion

Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.

Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.

Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.

Mit Google anmelden, um zu posten

Nutzerbewertungen

Noch keine Bewertungen

Mit Google anmelden, um zu bewerten

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 86 % der anderen 19383 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 30 % der anderen 19383 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 19383 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Agent Wormhole sicher?

Er hat 3 von 3 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Das musst du eintragen: WORMHOLE_API_KEY

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt gestern geändert, und die neueste Version (0.8.0) kam vor 2 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: World Monitor, Claude Flow, Windmill

Andere in derselben Kategorie

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 104 tools.

von koala73Weit verbreitet★ 90.526Aktualisiert heute

Läuft in der Cloud✓ vom Dienst · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

von ruvnetWeit verbreitet↓ 13.513/Wo.★ 81.524Aktualisiert vor 14 Monaten

Läuft auf deinem Computer

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

von windmill-labsWeit verbreitet★ 18.530Aktualisiert heute

Läuft in der Cloud

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

wormhole-x402

Integration guide: payment safety, policy, confirmed top-ups and launch attestations.

Your agent is about to sign a payment. Is it the one it was quoted?

ALLOW    pays the quoted merchant, quoted amount

REFUSE pays an ATTACKER instead [X402-001] payment destination is not the account derived from the quote REFUSE pays the merchant but 900x the amount [X402-002] payment amount does not match the quoted amount REFUSE pays correctly + silently approves a delegate [X402-006] Approve — delegates spending authority over the account ABSTAIN garbage bytes could not deserialize — refusing to report it as safe

5 transactions checked in 5ms — no RPC, no network


The gap

Every transaction-security product answers the same question: what will this transaction do? Simulation, asset diffs, address reputation. All useful.

None of it helps an agent, because a payment to an attacker's address simulates perfectly. Correct balances. No revert. Clean verdict. The transaction is entirely valid — it is simply not the one that was asked for.

Nobody answers *is this the transaction that was asked for?*

In the leading provider's API that question is not merely unimplemented, it is not expressible. Their Solana scan request carries origin — *"DApp domain proposing these transactions"* — and has no field for the agent's instructions at all. The stack is shaped around a human approving a website's request. A headless agent has neither a website nor a human.

How it decides

One call, either chain

verify() takes a quote and the payment about to be signed, picks the rail from the network string, and returns one verdict. It runs the quote-text scan first — an injected instruction in a merchant's description is refused before its numbers are ever treated as authoritative — then compares destination, asset and amount.

import { verify } from "wormhole-x402/verify";

const result = await verify( { network: "eip155:8453", // or "solana" quote, // what the merchant's 402 said payload, // what the agent is about to sign }, { quoteProvenance: "caller_asserted", issuedAt: new Date().toISOString() }, );

if (result.decision !== "allow") { // refuse AND abstain both mean do not sign. "We could not check it" is // never "it is fine" — that conflation is the bug this library exists for. throw new Error(result.findings.map((f) => f.code).join(",")); }

Time is an input rather than read from the clock, so a verdict is a pure function of its request and replays identically later.

The other entry points
ImportWhat it is
wormhole-x402/verifyverify() — the unified check, both rails
wormhole-x402/clientguardedPay() / guardedFetch() — one line in front of sign()
wormhole-x402/receiptverifyReceipt() / replayMatches() — check a receipt offline
wormhole-x402/servercreateVerifyHandler() — host it yourself
wormhole-x402/meteringusage accounting and cross-agent correlation
wormhole-x402/mcpthe verifier as an MCP tool server — npx wormhole-x402-mcp
wormhole-x402/provenanceX402-301 — was this payee introduced by anything legitimate?
wormhole-x402/deliveryX402-4xx — did the paid response deliver the quoted resource?
wormhole-x402/txX402-7xx — is this transaction the one the agent meant to send?

guardedPay takes the transport as an argument rather than a URL, so the same call runs against the local verifier or a remote one and the two cannot drift.

A verdict off a socket is a claim, not an answer

guardedPay and guardedFetch require an integrity option. It has no default, because every default here is either a silent downgrade of your security or a surprise change to your behaviour:

import { guardedPay } from "wormhole-x402/client";

import { publicKeyFromSpkiBase64 } from "wormhole-x402/receipt";

// The verifier publishes its key at GET /v1/key const publicKey = publicKeyFromSpkiBase64(publishedKeyBase64);

const res = await guardedPay({ network, quote, payload, transport, integrity: { mode: "required", publicKey }, }); if (res.allow) await sign(payload);

Under mode: "required" a decisive verdict clears only if a receipt is present, its signature verifies against your key, the receipt is bound by digest to the request you actually sent, and the receipt's own decision agrees with the envelope's. Anything else becomes an abstain — never an allow, and never a refuse — with integrityFailure naming which check failed. res.verified tells you whether the cryptography actually ran.

For an in-process transport that never crosses a network, say so explicitly:

integrity: { mode: "trusted_transport", reason: "in-process verify(), no socket" }

verified is then false, because nothing was checked. A verifier running without a signing key produces abstains under required, which is the honest answer: an unsigned verdict is one nobody can check.

The MCP server applies the same rule to hosted verdicts. Set WORMHOLE_VERIFY_PUBKEY to the published key; without it a hosted allow is downgraded to abstain unless you explicitly accept an unverifiable one with WORMHOLE_ALLOW_UNSIGNED_HOSTED=1.

Receipts

A decisive verdict carries a receipt: the decision, the rule codes, a coarse amount band and a SHA-256 digest of the request — never the quote text, never the payment bytes. Signed, it is checkable by someone who does not trust you:

import { verifyReceipt, replayMatches } from "wormhole-x402/receipt";

verifyReceipt(receipt, signature, publicKey); // did we really say this? replayMatches(receipt, request); // is it this exact request?

Neither call touches the network. That is the point of a receipt — an attestation you have to phone someone to check is just their word with extra steps.

Install

Every chain dependency is an optional peer, so you install only the one you use — and you must install it. The entry point for each chain imports its own SDK at the top level, so wormhole-x402 alone imports nothing useful:

# Solana

npm install wormhole-x402 @solana/web3.js @solana/spl-token

EVM

npm install wormhole-x402 viem

Text scanning only — no chain SDK needed

npm install wormhole-x402

Each entry point is independent. wormhole-x402/evm and wormhole-x402/quotetext work with no Solana packages present, and wormhole-x402 works with no viem. Importing an entry point whose SDK is not installed is a module-resolution error, not a silent no-op.

As an MCP tool server

Agents that cannot be rewired — Claude Code, Cursor, any MCP host — get the same checkpoint as a tool. Zero extra dependencies: the server is newline-delimited JSON-RPC over stdio, spoken with Node's own readline.

# full install — verifies payments on both rails

claude mcp add x402-guard -- npx -y -p wormhole-x402 -p @solana/web3.js -p @solana/spl-token -p viem wormhole-x402-mcp

lightest form — text scanning only; verify_payment abstains with install

instructions until the chain SDKs for your rail are present

claude mcp add x402-guard -- npx -y wormhole-x402

Two tools:

  • `verify_payment` — network, quote, payload (and optionally expectedPayer) in; allow / refuse / abstain with findings out. Anything that is not allow means do-not-sign.
  • `scan_text` — a 402 body, a merchant listing, an agent card, a memo; scanned for injection shapes before the model reads it.

The server always starts and scan_text always works — the verify core loads lazily, so a missing chain SDK is a per-call abstain naming the install command, never a startup crash.

Set WORMHOLE_API_KEY and verification runs against the hosted verifier instead, returning its answer verbatim — including any spend-policy decision the operator's account enforces there. An unreachable hosted verifier abstains rather than silently falling back to the local core: the operator configured hosted mode to get their policy applied, kill switch included. Verdicts carry caller_asserted provenance — the server cannot see where the quote came from, so its receipts say so rather than implying an attestation nobody made.

import { guardSigner } from "wormhole-x402";

// quote is the PaymentRequirements from the server's HTTP 402 response. const wallet = guardSigner(myWallet, () => currentQuote);

// Signing now throws unless the transaction matches the quote. await wallet.signTransaction(tx);

On EVM the payment is a detached EIP-3009 authorization rather than a transaction, so it has its own wrapper — same guarantee, async because domain verification can read the chain:

import { guardEvmSigner } from "wormhole-x402/evm";

const signer = guardEvmSigner(myWalletClient, () => currentQuote);

// viem sends this single object; ethers sends the same parts positionally — // signTypedData(domain, types, value) — and the wrapper recognises both. This // is the call that CREATES the signature, so there is nothing to recover from // yet. The wrapper checks the domain against the trusted table for (chainId, // asset), requires the TransferWithAuthorization struct exactly as verified, // and compares to, value, the validity window and the nonce to the quote. await signer.signTypedData({ domain, types, primaryType, message });

The typed-data request is what the wallet signs, so it is the one checked, read where the signer reads it: viem's one request object, the first argument, or ethers' domain, types and value, the first three. A call that could be read either way, or that carries an already-signed payment beside a typed-data request, is refused, with the typed request's own findings when it has any: which one a wallet would sign is the wallet's choice, and one cannot be checked for the other.

Both wrappers are default-deny. Every function property is wrapped, not a named subset: the ones the wrapper knows how to check are checked, and everything else is *refused* rather than handed back. Object properties that expose signing methods — viem's account, a wallet adapter's inner provider — are wrapped too, because handing back the raw object is the same hole one level down.

That means an unmodelled method is unusable rather than unchecked, which is the trade worth making: "we did not recognise the call so we allowed it" is how every bypass is written up afterwards. If a method cannot move funds, name it in allow — an escape hatch with a name on it. Dotted paths work for nested members (allow: ["account.sign"]).

No quote is a refusal, not a pass. Every optional security parameter with a permissive default ends up unset in production, and then the guard reports green on all traffic and nobody notices.

Or inspect without wrapping:

import { inspectPayment } from "wormhole-x402";

const verdict = inspectPayment(

Nur der Anfang wird gezeigt; den Rest findest du im Repo