@kechlab/verdict-mcp
An MCP server that lets an AI agent buy pay-per-call safety checks from Verdict in sats over L402 (Lightning): prompt-injection guard, hidden web text, risky shell commands, MCP tool vetting, payment-fraud check, terms scanner and more. No account, no API key.
The tools are read from the live catalog when the server starts, so new checks appear without updating this package. Each tool description says when to use it, when not to, its verdicts and its price in sats and euros.
Try it in one command, no wallet, no account
claude mcp add verdictl402 -- npx -y @kechlab/verdict-mcp
Your agent now has four checks to run before it acts: verdict_guard (untrusted text), verdict_command_gate (shell command), verdict_mcp_vet (MCP server or tool before installing it) and verdict_firewall (untrusted content plus the action it triggers). Each answers allow, review or block with scores and readable reasons. Without a wallet it uses the free samples (a few per day, no signed receipt). Set VERDICT_TOOLS=all to expose every check.
Unlimited calls with a signed receipt (Claude Code)
claude mcp add verdictl402 \
-e NWC_URL="nostr+walletconnect://..." \
-e MAX_SATS_PER_CALL=100 \
-e SESSION_BUDGET_SATS=1000 \
-- npx -y @kechlab/verdict-mcp
Other MCP clients: run npx -y @kechlab/verdict-mcp as a stdio server with the same environment variables.
Safety: your money, your limits
NWC_URL is a Nostr Wallet Connect secret from a separate wallet with its own budget (Alby Hub and others). Create the budget in the wallet: the wallet is the last line of defence. It is read only from the environment, never written anywhere.
MAX_SATS_PER_CALL (default 100) and SESSION_BUDGET_SATS (default 1000) are checked before any payment. A refused call says "nothing was paid".
- Without
NWC_URL the server still lists the catalog and explains how to set a wallet up. New to sats? Read the beginner guide.
- Results contain a signed receipt you can keep as proof a check happened before an action.
Tools
verdict_catalog (free), verdict_budget (free), then one verdict_<id> per check (guard, firewall, command_gate, mcp_vet, web_guard, payee_check, ask_human, ...). A verdict of block, escalate, freeze_payment, leak, do_not_accept or ask_human means: stop and tell the user; review and similar mean: pause and ask.
Limits you should know
A verdict is a probability-based judgement with readable thresholds, not a guarantee. Published accuracy, false alarms and attack tests: https://verdict.kechlab.com/trust. Do not make it the only protection for irreversible actions.
Publishing (maintainers)
npm test, then npm login and npm publish from this folder.