Skip to main content
Glama
Baneado98

approval-guardian

by Baneado98

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:

  1. Pull every ERC-20 Approval log the wallet ever emitted (paginated eth_getLogs with the right topic0 + owner topic, respecting per-RPC block-range caps).

  2. For each (token, spender) pair, read the LIVE allowance() β€” because a later approve(0) or a spend may have changed it. Stale logs lie.

  3. Read each token's decimals/symbol to turn a raw allowance into a human amount.

  4. 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?

  5. 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 allowance > 0 right now count β€” stale Approval logs are filtered out

πŸ‘» EOA spenders

approving a token to a plain wallet (not a contract) is the signature of a drainer phishing scam β€” flagged critical

♾️ Unlimited

infinite (2^256-1 / 2^96-1) allowances stay exploitable forever, in one call

πŸ”— 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 approve(spender, 0) calldata to sign

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 tools
check_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain: ethereum, base, bsc, polygon or arbitrum.
walletYesThe wallet address to audit (0x...).
deepNoIf true, scan full on-chain history (slower) instead of just the recent window.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain: ethereum, base, bsc, polygon or arbitrum.
walletYesThe wallet address (0x...).
minRiskNoOnly include approvals at or above this risk: low | medium | high | critical (default: medium).

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A4.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: check_approvals and revoke_plan, making them predictable and easy to understand.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Non-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.
    9
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Evaluates 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

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