Pre-execution security for AI agents on Base: guard token/tx/address + per-agent spend firewall.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y warden402-mcp
MCP client config
{
"mcpServers": {
"warden402": {
"command": "npx",
"args": [
"-y",
"warden402-mcp"
]
}
}
}Before your agent buys a token, signs a transaction or pays an address, ask
Warden. You get block · review · clear with the reasons, a risk score
and — when there is one — the safer thing to sign instead. On top, a per-agent
Firewall enforces a spending policy: allow · hold · deny.
Live at warden402.xyz · public track record at warden402.xyz/track-record
MCP (Claude, Cursor, any MCP client) — no key needed:
{
"mcpServers": {
"warden402": {
"command": "npx",
"args": ["-y", "warden402-mcp"],
"env": { "WARDEN_AGENT_KEY": "wk_... (optional, enables firewall tools)" }
}
}
}
Tools: guard_token, guard_tx, guard_address, and with an agent key
firewall_check, firewall_status. → mcp/README.md
SDK (TypeScript, fail-closed):
import { Warden } from "warden402-sdk";
const warden = new Warden({ agentKey: process.env.WARDEN_AGENT_KEY });
await warden.assertSafe(() => warden.token("0xTOKEN")); // throws on block
await warden.protect({ to: payee, amountUsd: 5 }, () => pay()); // runs only on allow
→ sdk/README.md (also LangChain tools)
HTTP:
curl "https://warden402.xyz/api/guard?address=0xTOKEN" # token
curl "https://warden402.xyz/api/guard?type=address&address=0xADDR" # address
curl -X POST https://warden402.xyz/api/guard -H 'content-type: application/json' \
-d '{"type":"tx","from":"0x..","to":"0x..","calldata":"0x.."}' # transaction
50 free guard calls per IP per day, then x402 pay-per-call ($0.01 token/address, $0.02 tx, USDC on Base). Firewall agent keys: warden402.xyz/onboard (free: 1 agent, 1,000 checks/month).
| Target | Signals |
|---|---|
| Token | live sell simulation from a real holder (can you get out?), honeypot & taxes, owner powers (mint, set balances, blacklist, upgradeable logic), contract controls, wallet holder concentration (LP / CEX / burn excluded), liquidity, LP lock, deployer reputation, OFAC |
| Transaction | calldata decode (approve, increaseAllowance, EIP-2612 permit, Permit2, setApprovalForAll, transfer); approval target (unlimited approval to an address with no code → block); eth_call simulation (revert, call to non-contract); counterparty OFAC + contract risk; address poisoning on outgoing transfers. Returns remediation — e.g. an exact-amount approval to sign instead |
| Address | OFAC, exposure to sanctioned counterparties, contract risk, identity (verified / named / anonymous) |
Signal data comes from the x402 Bazaar plus Base RPC.
unknown →
degraded: true → the verdict is review at worst, never a false clear.
The SDK and MCP are fail-closed too: no verdict → throw / "do not proceed".block; any fail or risk ≥ 35 or 2+ warns → review; else clear.Policy-as-code in front of an agent's value flow: per-call / hourly / daily
spend caps, allow & deny lists, unlimited approvals banned, first payment to a
new counterparty held for a human (approve/reject in /account or via API),
calls-per-minute limit, anomaly multiplier, kill switch, audit log, webhook on
hold. Team accounts sign in with a wallet (SIWE), with roles and plans.
→ FIREWALL.md
| Path | What |
|---|---|
web/ | The production site and API (Next.js on Vercel): guard, firewall, track record, accounts, x402 payment gate |
packages/core/ | Shared verdict schema + calldata decoder (@warden/core) |
mcp/ | warden402-mcp — stdio MCP server |
sdk/ | warden402-sdk — TypeScript client + LangChain tools |
src/ | Optional standalone Hono API (Node host); a drift test keeps its engine identical to web/ |
tests/ | Vitest: decision engine, calldata decoder, firewall policy, drift guard, web signals |
npm install && npm test # unit tests
cd web && cp .env.example .env.local && npm run dev # site + API on :3000
Deploy notes: DEPLOY.md.
MIT — see LICENSE.