World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
Beschreibung vom Entwickler (englisches Original)
Before your agent pays an x402 API, check if vet402 bought it with its own money and what came back.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
2/2 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
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
Nur einmal; gilt für alle Server, die Node.js brauchen
SettingsDeveloperEdit Config
{
"mcpServers": {
"vet402-check": {
"command": "npx",
"args": [
"-y",
"@vet402/check",
"--mcp"
]
}
}
}Nutze vet402-check und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude sagt, dass es vet402-check nutzt, oder ein Werkzeug von vet402-check 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 vet402-check noch nicht verbinden
vet402-check läuft auf deinem Computer, aber ChatGPT verbindet nur Server, die im Web laufen
A · Eine App nutzen, die vet402-check verbinden kann
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
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen
claude mcp add vet402-check -- npx -y @vet402/check --mcpvet402-check sollte in der Liste als verbunden erscheinen
Nutze vet402-check und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude Code sagt, dass es vet402-check nutzt, oder ein Werkzeug von vet402-check 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
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
Nutze vet402-check und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Cursor sagt, dass es vet402-check nutzt, oder ein Werkzeug von vet402-check 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
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
VS Code fragt nach einer Bestätigung; klicke Install
Nutze vet402-check und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn VS Code sagt, dass es vet402-check nutzt, oder ein Werkzeug von vet402-check 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
Claude Code
claude mcp add vet402-check -- npx -y @vet402/check --mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"vet402-check": {
"command": "npx",
"args": [
"-y",
"@vet402/check",
"--mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"vet402-check": {
"command": "npx",
"args": [
"-y",
"@vet402/check",
"--mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"vet402-check": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@vet402/check",
"--mcp"
]
}
}
}Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
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
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
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 11. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto kzmttkc bestätigt, dem das Repo gehört
Code zuletzt geändert: heute
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
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.
Noch keine Bewertungen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 2 von 2 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.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
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).
Das GitHub-Repo wurde zuletzt heute geändert, und die neueste Version (0.2.0) kam vor 33 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: World Monitor, Claude Flow, Tldraw
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
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.
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.
Look an x402 or MPP seller up in vet402's public record before an agent pays it.
This package reads the public record of vet402's own purchases (the vet402-delivery repository). It is separate from @vet402/mcp-server, the MCP tools for vet402's scoring API.
vet402 buys from x402 and MPP sellers with its own money on Solana, Tempo and Base (and Algorand, on its own page), checks each payment on chain, and publishes what came back: a ranking (rank.json) and signed records whose daily Merkle root is written into a Solana memo. vet402-check reads that record. It returns facts: how many purchases vet402 tried from the seller, how many settled, how many came back with an answer, the newest purchase and its tx, the failures counted against the seller and the ones that are not, the grade as rank.json prints it (measuring while there are too few purchases), and the signed records for that seller. When vet402 has never bought from the seller, the answer is "vet402 has no record of this seller". What to do with the facts is up to the caller.
Reads only public files: rank.json and records/ .json on the public site, and data/records/index.json in this repository. Verifying a record also reads public RPC. No key, no wallet, no payment, no write.
Node 22 or newer. The first run downloads the package from npm (@vet402/check); later runs start at once.
npx -y @vet402/check https://api.xona-agent.com/token/pumpfun-trending
Verify the newest signed record of that seller as well (signature, Merkle proof, payment on chain, Solana memo anchor):
npx -y @vet402/check https://api.xona-agent.com/token/pumpfun-trending --verify
As an MCP server in Claude Code (run the line above once first, so the install is cached before the client starts the server):
claude mcp add vet402-check -- npx -y @vet402/check --mcp
The same lookup over HTTP, free and with no key: GET https://vet402-delivery.vercel.app/v1/check?url= (optional chain and payTo). The answer starts with verdict and why (what the verdict means).
examples/python/check_before_paying.py. A command, a pay_after_check(url, pay) function, and a hook for the x402 Python HTTP client (x402HTTPClientSync(client).on_payment_required(vet402_on_payment_required)) that looks up the requested URL on every 402, before the client signs.vet402-check <url> [--chain solana|tempo|base|algorand|<CAIP-2>] [--pay-to <address>] [--amount <atomic units>] [--asset <address>] [--explain] [--verify] [--offline] [--json]
vet402-check verify [--offline] [--json] vet402-check diagnose --url [--chain solana|base] [--status ] [--json] vet402-check --mcp
--chain limits the answer to one chain (eip155:8453 is Base, eip155:4217 is Tempo).--pay-to compares the payTo in the 402 you hold with the payTo addresses vet402 recorded for that seller.--amount and --asset compare the 402's amount (atomic units, as x402 writes it) and asset with what vet402 paid that seller (see Compare the 402 with what vet402 paid).--explain lists the purchases the answer rests on, newest first, each with its date, chain, result, HTTP status and tx, and the payments in the seller's signed records (amount, asset, payTo).--json prints the whole result: sellers[] (one per page the seller is on), records, payTo, asOf, sources.From a clone: npm ci, then npm run check-before-paying -- .
Three read-only tools (stdio, newline-delimited JSON-RPC):
| Tool | Input | Returns |
|---|---|---|
check_before_paying | url, optional chain, pay_to, amount, asset, explain, verify_newest_record | the facts above and the named reasons, as text and as structuredContent |
verify_record | record (id or https URL), optional offline | OK, OK_NOT_ANCHORED, OK_OFFLINE or FAIL, one line per check |
diagnose_failed_payment | tx, url, optional chain, status | seller_side, facilitator_side, buyer_side or undetermined, with reasons, and an evidence pack for seller_side |
Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "vet402-check": { "command": "npx", "args": ["-y", "@vet402/check", "--mcp"] } } }
Wrap the fetch an x402 client pays through. Every 402 is looked up before the client signs:
import { wrapFetchWithPayment } from "@x402/fetch";
import { wrapFetchWithCheck } from "@vet402/check"; // npm install @vet402/check
const fetchWithPay = wrapFetchWithPayment( wrapFetchWithCheck(fetch, { onCheck: (e) => { console.log(e.checks.map((c) => c.summary).join("\n")); // The rule is yours. To stop the payment, throw here: // if (e.checks.some((c) => c.sellers.some((s) => s.settled > 0 && s.delivered === 0))) throw new Error("not paying"); }, }), client, );
The hook goes under the payment wrapper because @x402/fetch calls the fetch it was given and creates the payment only after that returns 402. The hook reads the 402 through a clone (x402 accepts from the body or the PAYMENT-REQUIRED header, and an MPP WWW-Authenticate: Payment challenge), runs check_before_paying for each chain and payTo it offers, passes the result to onCheck, and returns the 402 unchanged. It never sees a key or a signer and changes no header. A request that already carries a payment (X-PAYMENT, PAYMENT-SIGNATURE, Authorization: Payment) is the client's retry and passes straight through. If vet402's record cannot be read, onCheck gets error set and no checks.
rank.json and the records index are read once and kept in memory for 10 minutes (new PublicData({ ttlMs })), so a busy agent does not download them for every 402. The signed records read to compare amounts are kept the same way.
Every answer carries reasons[], each with one sentence and the purchases or records it rests on. They are facts next to the verdict and never change it.
| Reason | When |
|---|---|
paid_not_delivered | vet402's newest paid purchase from the seller settled and came back with no answer (rank.json's seller-side rules after a settled payment). Said only for a seller vet402 has told about its results, the same condition the verdict uses. |
payto_differs | The payTo in the 402 is not one vet402 paid this seller (and vet402 recorded at least one). |
price_jump | The 402 asks more than 10 times the highest amount vet402 paid for the same URL in the same asset. 10 times exactly is not a price_jump. |
asset_unseen | The 402 asks for an asset vet402 never paid this seller in on that chain. |
never_bought | vet402 has no purchase from this seller (on the asked chain). |
stale | vet402's newest purchase from this seller is more than 7 days old. |
price_jump and asset_unseen come from the seller's signed records (the newest 8 on that chain, those for the same URL first). With no record to compare with, neither is said.
Give the hook a policy to decide per reason:
const fetchWithPay = wrapFetchWithPayment(
wrapFetchWithCheck(fetch, { policy: { paid_not_delivered: "block", payto_differs: "block", price_jump: "block", asset_unseen: "ask_human", never_bought: "warn" }, askHuman: async (e) => confirmWithPerson(e.reasons), // true pays, anything else stops }), client, );
block throws a CheckBlockedError before the client signs; its reasons names what stopped it.ask_human calls askHuman(event) and pays only when it returns true. With no askHuman, it stops with a CheckNeedsApprovalError (a CheckBlockedError).warn and allow go on. A reason the policy leaves out is allow.onCheck gets event.reasons and event.decision (the action per reason and the strictest one) before any of this.policy, the hook decides and waits exactly as in 0.1.2: event.reasons holds the reasons that come from rank.json alone, and no signed record is read, so price_jump and asset_unseen are not looked for.event.error is set, there are no reasons, and the payment goes on, as in 0.1.2.npx -y @vet402/check https://api.xona-agent.com/token/pumpfun-trending --chain solana --amount 1000000 --asset EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
The answer adds comparison: the signed records read, the assets vet402 paid this seller in, the highest amount vet402 paid for this URL with its record and tx, and the ratio of the 402's amount to it. With a policy, the hook makes the same comparison for every x402 offer in a 402.
npx -y @vet402/check diagnose <tx signature or hash> --url <seller URL> --status 500
From TypeScript: diagnose({ tx, url, status }, new PublicData()). As an MCP tool: diagnose_failed_payment.
SOLANA_RPC_URL and BASE_RPC_URL point it at other RPCs): settled or not, the payTo, the amount, the asset, the time. Nothing is signed or sent.The answer is fault with reasons[]:
seller_side only when all of these hold: the payment settled on chain, to a payTo vet402 paid this seller, in an asset vet402 paid it in and not below the least vet402 paid; the HTTP status is one vet402's rules put on the seller after a settled payment (5xx, 402 again); rank.json's list of the seller's newest purchases reaches back past the start of the window; vet402's own paid purchases from the seller within 24 hours also settled and came back with no answer, with none delivered; and no signed record of those days shows a delivered purchase from the seller.buyer_side only for a payment that failed on chain because the paying token account lacked the funds.facilitator_side only for a payment that failed on chain for another reason while vet402's own payments to the seller in the window also failed before settling.undetermined for everything else: the RPC could not be read, no such transaction, no status given, a 4xx, a payTo vet402 never paid, an asset vet402 never paid the seller in, an amount below the least vet402 paid, vet402 got an answer from the seller in the window (in rank.json or in a signed record of those days), rank.json's list does not reach back to the window, or vet402 has no purchase in the window. A seller is not named on less than the full test.For seller_side, evidence holds a pack to hand to the seller, as JSON and as Markdown: the tx and its explorer link, payer, payTo, amount and asset, the HTTP status the buyer reported, vet402's rule said of this payment, vet402's purchases in the window with their tx, and the signed records of those days (the payment itself left out when it is one of vet402's own). It is printed, not sent.
examples/ in this folder (not in the npm package): Coinbase AgentKit,