Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Safe to sign? EVM/Solana/XRPL/Algorand/Stellar txs, permits, tokens; OFAC screen: green/orange/red
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
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.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:
https://presign-guard.fizzl.eu/mcpFühre das in deinem Terminal aus
claude mcp add --transport http presign-guard https://presign-guard.fizzl.eu/mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"presign-guard": {
"url": "https://presign-guard.fizzl.eu/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"presign-guard": {
"type": "http",
"url": "https://presign-guard.fizzl.eu/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
ChatGPT verbindet sich nur mit Servern im Internet:
https://presign-guard.fizzl.eu/mcpMenünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Die Tool-Liste dieses Servers haben wir noch nicht gelesen; wir prüfen die Endpunkte reihum.
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 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Fizzl13 bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 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 in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.9.0) kam vor 11 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, SuperCollider
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Make sound with SuperCollider: synths, drums, chords, melodies and soundscapes over OSC.
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.
· Live status ·
A pre-sign risk check for AI agents. Before an agent signs a transaction, approval, or EIP-712 signature, it pays a few cents per call over x402 and gets back a green / orange / red verdict with machine-readable reason codes. Optionally, it also gets a plain-language explanation in Dutch or English.
Watch the 1-minute explainer: presign-guard.fizzl.eu/media/explainer.mp4
New: the token verdict in 45 seconds: presign-guard.fizzl.eu/media/token.mp4
Part of Fizzl.
The problem. On NEAR an AI agent can be given a function-call key: it can only call the methods it names on one contract, without a deposit, within a gas allowance. That is the right sandbox for an agent with money. But the transactions and NEAR Intents messages an agent signs can take that sandbox apart: a full-access key added, the account deleted, code deployed over the wallet, a key added to NEAR Intents, a swap that gives far more than it gets, a deposit into a look-alike of intents.near. An agent reading a tool result or a web page can be talked into signing any of them.
What we built for NEAR (in the hackathon window). presign-guard, an existing pre-sign check for EVM, Solana, XRPL, Algorand and Stellar, now checks NEAR before an agent signs:
type: "near"): base64 borsh (unsigned or signed), wallet-selector JSON or several transactions; every action judged, meta transactions by their inner actions. Red for a full-access key added, the account deleted, code deployed over the wallet, the last full-access key deleted (read from the account), add_public_key on intents.near, a forced storage_unregister, fake USDC/USDT/wNEAR (ft_metadata), look-alike accounts. Details: NEAR transactions.nep413): the message an agent signs to trade, also inside execute_intents. Red for a token_diff that only gives, or gives back less than half its value at NEAR Intents' own 1Click prices (orange under 90%), a key added, fake tokens received, look-alike receivers; orange for another verifier than intents.near or a deadline days away.presign_check, presign_quick_check).The NEAR code: src/near-tx.js, test/near-tx.test.mjs, near/demo.mjs, and the wiring in src/presign-guard.js, src/mcp.js and src/discovery.js. Pull requests #259, #260 and #261; everything before them is the existing product (baseline). Libraries: @near-js/transactions and @near-js/utils (decoding only), FastNEAR's public RPC, NEAR Intents' 1Click API (dry quotes and token prices).
Try it (no keys, no money):
npm install && node near/demo.mjs: an agent gets a real NEAR Intents quote (1 wNEAR to USDC, dry: true), builds the message it would sign, and checks it and five attacks. See: the honest swap green; a quote tampered to 30% of the value red (NEAR_INTENTS_BAD_PRICE); a key slipped into the swap red (NEAR_INTENTS_KEY_ADDED); a deposit into intents-near.near red (NEAR_LOOKALIKE_ACCOUNT); a prompt-injected full-access key red (NEAR_FULL_ACCESS_KEY_ADDED); a function-call key for intents.near only green. Each case also shows the live server's verdict.curl -s -X POST https://presign-guard.fizzl.eu/v1/check/quick -H 'content-type: application/json' -d '{"type":"near","tx":{"signerId":"alice.near","receiverId":"alice.near","actions":[{"type":"DeleteAccount","params":{"beneficiaryId":"thief.near"}}]}}' and see "verdict":"red".npm test: the NEAR rules against a stand-in RPC (test/near-tx.test.mjs).The full answer with reason codes (POST /v1/check) costs $0.01 over x402; the verdict-only /v1/check/quick and MCP presign_quick_check are free (10 an hour).
presign-guard-walletFor agents on viem, the npm package presign-guard-wallet wraps the wallet so every sendTransaction, writeContract and signTypedData is checked first: green signs, orange stops (or asks), red never signs. Each verdict's signed receipt is verified before the wallet acts.
import { guardWallet } from "presign-guard-wallet";
const wallet = guardWallet(walletClient, { pay, onOrange: "stop" }); // pay = an x402 fetch, $0.01 per check await wallet.writeContract({ address: token, abi, functionName: "approve", args: [spender, amount] });
npm install presign-guard-wallet viem @x402/fetch @x402/evm · source and options
| Route | Price | Returns |
|---|---|---|
POST /v1/check | $0.01 USDC | Verdict, reason codes, decoded subject |
POST /v1/check/explain | $0.03 USDC | The same, plus a plain-language explanation (lang: "nl" or "en") |
GET /v1/token?chain=…&address=… | $0.01 USDC | Token verdict: grade, reason codes, one-line summary, market data (see below) |
GET /v1/approvals?chain=…&address=… | $0.02 USDC | Wallet approval audit: every open token approval (EVM) or token delegation (Solana), its spender, and which to revoke (see below) |
GET /v1/screen?address=… | $0.01 USDC | Wallet screen: any chain's address against the OFAC SDN list, plus theft and phishing reports for EVM (see below) |
POST /v1/injection | $0.01 USDC | Prompt-injection check: is a text your agent received (page, email, tool result, API answer, another agent's message) a trap? (see below) |
POST /v1/injection/quick | free, shares the 10 calls/hour | The prompt-injection verdict only, for texts up to 8,000 characters |
POST /v1/check/quick | free, shares the 10 calls/hour | The pre-sign verdict only, for the same body as POST /v1/check (as the MCP tool presign_quick_check) |
GET /v1/sanctions | free | Open data: every digital currency address on the OFAC SDN list with its entry (name, programs, currency), the list's publish date; refreshed every 6 hours. Solana addresses also carry their USDC and USDT token accounts, because a token transfer names that account and not the owner (ready for a denylist such as a Privy condition set). For screening locally, e.g. with presign-guard-payer-screen |
GET /v1/credits/100, /v1/credits/1000 | $0.80 / $7.00 USDC | A pack of prepaid credits (20% / 30% off): see Credit packs |
GET /v1/credits | free | Pack prices, credit cost per call, and your balance (with the x-credit-key header) |
POST /mcp | free / paid | MCP server (Streamable HTTP): see below |
POST /mcp/free | free | The same MCP server with only the free checks |
POST /feedback | free | Report a bug or a missing feature: see Feedback |
GET /health | free | Liveness |
GET /openapi.json | free | OpenAPI 3.1 spec with prices (x-payment-info) |
GET /.well-known/x402 | free | x402 discovery manifest |
Payment is x402 v2 with the exact scheme, on every paid route in USDC on Base, Solana, Monad, Polygon, Arbitrum, Avalanche, Algorand or Stellar, in USD₮0 on X Layer (eip155:196, token 0x779d…3736, settled by PayAI's facilitator), or in RLUSD on the XRP Ledger (xrpl:0, the same dollar amount, issuer rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De; the payer signs an XRPL Payment with the challenge's extra.invoiceId as InvoiceID, see @x402/xrpl, and the server verifies and submits it itself). The 402 carries Bazaar discovery metadata (input example, input and output schema), and the challenge is mirrored into the JSON body for clients that don't read the PAYMENT-REQUIRED header. You are never charged for an error. Invalid requests (400) and upstream outages (503) cancel settlement, and they always return verdict: null, never a guessed verdict.
USDC on Polygon (eip155:137), Arbitrum (eip155:42161) and Avalanche C-Chain (eip155:43114) goes to PAY_TO, the same wallet as on Base; Coinbase's facilitator settles it where it lists the network, PayAI's otherwise (EXTRA_EVM_FACILITATOR_URL replaces PayAI). POLYGON_PAY_TO, ARBITRUM_PAY_TO and AVALANCHE_PAY_TO override the wallet, and off leaves that network out.
Agents that call presign-guard often can prepay: one x402 payment of $0.80 for 100 credits or $7.00 for 1000 credits (20% and 30% off), valid for a year. A credit is $0.01 of checks: POST /v1/check, GET /v1/token, GET /v1/screen and POST /v1/injection cost 1, GET /v1/approvals 2, POST /v1/check/explain 3.
# 1. Buy a pack (any x402 client); the answer holds your key
GET /v1/credits/100 -> { "credit_key": "pgc_…", "credits": 100, "expires_at": "…" }
curl -X POST https://presign-guard.fizzl.eu/v1/check -H 'x-credit-key: pgc_…' -H 'content-type: application/json' -d '{…}'
curl https://presign-guard.fizzl.eu/v1/credits -H 'x-credit-key: pgc_…'
A call that fails (400 or 5xx) gives its credits back. With no key, a malformed or unknown key, or too few credits, the call gets the normal 402 (x-credit-status says why), so a client can always fall back to paying per call. Keep the key secret: anyone who has it can spend the credits, and it cannot be recovered (only a SHA-256 of it is stored). Credits work over HTTP; MCP tools are paid per call.
Packs are only offered when balances persist: set CREDITS_REDIS_URL (a persistent Redis, for example a free Upstash database; Render only). Without it the credit routes don't exist.
OWS (MoonPay's wallet standard for agents, used by Ripple's XRPL AI Starter Kit) checks policies before it decrypts a key for an agent token (ows_key_…). Its built-in rules cover chains and expiry; anything that looks inside the transaction needs a custom executable, and OWS ships none. presign-guard is one: POST /v1/check also takes the PolicyContext OWS writes to the policy's stdin, and answers with the PolicyResult OWS reads from stdout, { "allow": …, "reason": … }, next to the usual verdict and reasons.
# ~/.ows/plugins/policies/presign-guard.sh (examples/ows/presign-guard.sh), chmod +x
exec curl -s --max-time 4.8 -X POST https://presign-guard.fizzl.eu/v1/check \ -H 'content-type: application/json' -H "x-credit-key: $(cat "$HOME/.ows/presign-guard.key")" --data-binary @-
Buy the credits with OWS itself: ows pay request pays our x402 402 (USDC on Base) and prints the credit key. Run it as the wallet's owner (with the wallet passphrase, not the agent token: the agent token's policy needs the credits first).
key=$(ows pay request --wallet my-wallet https://presign-guard.fizzl.eu/v1/credits/100 | jq -er Nur der Anfang wird gezeigt; den Rest findest du im Repo