Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Safe to sign? EVM/Solana/XRPL/Algorand/Stellar txs, permits, tokens; OFAC screen: green/orange/red
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://presign-guard.fizzl.eu/mcpพิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http presign-guard https://presign-guard.fizzl.eu/mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"presign-guard": {
"url": "https://presign-guard.fizzl.eu/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"presign-guard": {
"type": "http",
"url": "https://presign-guard.fizzl.eu/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://presign-guard.fizzl.eu/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Fizzl13 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.9.0) เข้า registry 11 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Draugr
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
Security scanning for AI agents: SAST, SCA, secrets, IaC, DAST, ranked by real risk.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
· 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 ตัดมาแค่ช่วงต้น อ่านต่อใน repo