approval-guardian
Provides tools to check active ERC-20 token approvals on Ethereum, identify risky allowances (unlimited, EOA spenders, upgradeable contracts), and generate revoke calldata.
Provides tools to check active ERC-20 token approvals on Polygon, identify risky allowances (unlimited, EOA spenders, upgradeable contracts), and generate revoke calldata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@approval-guardiancheck approvals for 0xabc... on ethereum"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
approval-guardian π‘οΈ
Find the token approvals draining your wallet β and get the revoke calldata.
approval-guardian is an MCP server and a pay-per-call x402 HTTP API. Give it a wallet address + chain and it returns a CLEAN / REVIEW / AT_RISK verdict listing every active ERC-20 approval, worst first, with the exact approve(spender, 0) calldata to revoke each one.
Unlimited token approvals are the #1 way DeFi wallets get drained β a single bad approve() lets a spender move your entire balance of that token, forever, in one transaction.
β οΈ Read-only risk screen, not financial advice. approval-guardian never holds a key and never moves funds. Revoking is a transaction you sign. Absence of findings is not proof of safety.
Why it exists (the moat)
To know what a wallet has approved, an agent that "just reads the chain" must:
Pull every ERC-20
Approvallog the wallet ever emitted (paginatedeth_getLogswith the righttopic0+ owner topic, respecting per-RPC block-range caps).For each
(token, spender)pair, read the LIVEallowance()β because a laterapprove(0)or a spend may have changed it. Stale logs lie.Read each token's
decimals/symbolto turn a raw allowance into a human amount.Classify the spender: is it a contract at all? a plain wallet (EOA)? an EIP-1967 upgradeable proxy whose code can be swapped behind your approval? a recognised router/permit/locker?
Score the blast radius and order the revokes.
approval-guardian batches all of that over public RPCs and returns one prioritized report. That live aggregation β not a static answer β is what an agent pays for.
Related MCP server: chain-signer
What it catches
β»οΈ Live allowances | only approvals with |
π» EOA spenders | approving a token to a plain wallet (not a contract) is the signature of a drainer phishing scam β flagged critical |
βΎοΈ Unlimited | infinite ( |
π Upgradeable | spender is an EIP-1967 proxy whose implementation can be replaced |
β Known routers | recognises Uniswap / Permit2 / 1inch / 0x / PancakeSwap so you aren't scared off safe infra |
π§Ύ Revoke calldata | every finding ships the exact |
Use as an MCP server (free)
{
"mcpServers": {
"approval-guardian": { "command": "npx", "args": ["-y", "approval-sentinel-mcp"] }
}
}Tools:
check_approvalsβ full approval-risk report. Params:chain,wallet,deep(optional, full history).revoke_planβ just the ordered list of risky approvals + revoke calldata. Params:chain,wallet,minRisk.
Or connect over HTTP at POST /mcp.
Free HTTP API
GET /check?chain=base&wallet=0xYourWallet
GET /check?chain=ethereum&wallet=0x...Returns the active approvals worst-first, each with revokeCalldata.
Pay-per-call (x402)
The /pro/* routes are gated by x402. Your agent pays $0.20 USDC per call automatically β no sign-up, no API key. The pro scan covers full on-chain history; settles on-chain (Base) to the operator wallet.
GET /pro/check?chain=base&wallet=0x... # 402 β pay β deep report
GET /pro/revoke_plan?chain=base&wallet=0x...Chains
Ethereum Β· Base Β· BSC Β· Polygon Β· Arbitrum β all via public, key-free RPCs.
Part of the guardian set
npm-guardian Β· contract-auditor Β· rug-check Β· approval-guardian
Source & docs: github.com/Baneado98/approval-guardian Β· MIT
Available Tools
2 toolscheck_approvalsA
Audit a wallet's ACTIVE ERC-20 token approvals (allowances) for drain risk β the #1 way DeFi wallets get emptied. Pulls every Approval event the wallet ever emitted, reads the LIVE allowance for each (token, spender) pair, classifies the spender (EOA / unknown contract / upgradeable proxy / known router) and returns a prioritized CLEAN / REVIEW / AT_RISK verdict listing exactly which approvals to revoke first β with the approve(spender,0) revoke calldata ready to sign. Read-only; never moves funds, never holds a key. Use this before/after a wallet interacts with unfamiliar dApps, when a user fears a drainer, or to harden any wallet. Chains: ethereum, base, bsc, polygon, arbitrum.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain: ethereum, base, bsc, polygon or arbitrum. | |
| wallet | Yes | The wallet address to audit (0x...). | |
| deep | No | If true, scan full on-chain history (slower) instead of just the recent window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully bears the burden. It explicitly states the tool is read-only, never moves funds, and never holds a key, and describes its operation in detail (pulling history, reading live allowances, classifying).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but every sentence adds value. It front-loads the core purpose and includes necessary detail. Minor redundancy could be trimmed, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the output format (prioritized verdict with revoke calldata). It also lists supported chains and explains the deep parameter's effect, making the tool's behavior fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no new parameter information beyond what's in the schema. The explanation of each parameter is already present in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits ERC-20 token approvals for drain risk, specifying it pulls Approval events, reads live allowances, classifies spenders, and returns a verdict. It distinguishes itself from the sibling revoke_plan by focusing on audit rather than execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage scenarios: before/after interacting with unfamiliar dApps, when a user fears a drainer, or to harden any wallet. It does not explicitly mention when not to use, but the context is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_planA
Return ONLY the revoke action plan for a wallet: the ordered list of risky approvals to cancel, each with the token, spender and the exact approve(spender,0) calldata the user signs to revoke it. Use after check_approvals to get a clean, signable to-do list. Read-only; the user signs each revoke themselves.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain: ethereum, base, bsc, polygon or arbitrum. | |
| wallet | Yes | The wallet address (0x...). | |
| minRisk | No | Only include approvals at or above this risk: low | medium | high | critical (default: medium). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly states 'Read-only' and that the user signs themselves, which are key behavioral traits. However, it omits any mention of idempotency or caching, which are minor gaps for a read-only plan generator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the main purpose and then providing usage guidance. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, no output schema), the description fully explains what is returned (ordered list with token, spender, calldata), the prerequisite relationship, and the read-only nature. It is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a descriptive comment. The description does not add new information beyond what the schema provides, so it is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the revoke action plan for a wallet, listing risky approvals with details. It uses specific verbs like 'Return' and specifies the output fields (token, spender, calldata). It distinguishes from the sibling tool by stating 'Use after check_approvals'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after check_approvals' and indicates the tool is read-only and the user signs each revoke, providing clear when-to-use and what-not-to-expect context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have distinct and complementary purposes: check_approvals performs an audit and provides a verdict, while revoke_plan generates a list of revoke actions. There is no overlap in functionality.
Both tool names follow a consistent verb_noun pattern: check_approvals and revoke_plan, making them predictable and easy to understand.
With only 2 tools, the server is minimal but well-scoped for its specific purpose of auditing and planning revocations. It covers the essential operations without unnecessary bloat.
The tools cover the core workflow of auditing approvals and generating a revocation plan. The lack of a tool for executing revocations is intentional (read-only design), so the surface is complete for its stated domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only crypto safety: token honeypot checks, EIP-712 signature decode, approval scans.
Instant rug-check for any EVM or Solana token, distilled to one clear 0-10 risk verdict.
Solana address risk grades and token scans for AI agents. Pay-per-call via x402 (USDC on Base).
Rug pull risk and on-chain forensics for tokens on Solana, Ethereum, Base and Robinhood.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive smart contract analysis for EVM tokens, including proxy contract detection, ownership chain discovery, and OpenZeppelin AccessControl role management across multiple blockchain networks.
- AlicenseAqualityBmaintenanceNon-custodial agent wallet with a transaction preflight that decodes an unsigned EVM tx and flags drain patterns (unlimited/large approval, approve-all, token & NFT transferFrom, proxy upgrade, on-chain permit, approvals hidden in multicall) before signing.91MIT
- FlicenseAqualityCmaintenanceFetches verified EVM smart contract source code, scans for vulnerabilities, analyzes token holder distribution, and generates audit reports.5
- AlicenseNot gradedqualityBmaintenanceEvaluates on-chain risk for Pharos agents before executing transactions, providing verdicts (safe/caution/dangerous) and risk-bounded execution plans via Foundry cast reads.MIT No Attribution
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Baneado98/approval-guardian'
If you have feedback or need assistance with the MCP directory API, please join our Discord server