Contract Powers

Who can still change this EVM contract, and what can they do to holders?

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
95%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~717Tokens (tool definitions)
~934 BTypical response size
Moderate attention impact (0.56% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "contract-powers": {
      "url": "https://agent.zbang.net/api/mcp"
    }
  }
}

Remote endpoints

https://agent.zbang.net/api/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_watched_contracts(chain, upgradeable, single_key_admin, limit)

List the EVM contracts in the Contract Powers registry, with a one-line risk shape for each: is the code upgradeable, is the admin a single key (EOA) rather than a contract, how many powers are declared, and is it covered by a bug bounty. Use this to see what is already analysed before spending a lookup. Filters are optional and combine with AND.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "polygon"
      ],
      "description": "Restrict to one chain."
    },
    "upgradeable": {
      "type": "boolean",
      "description": "true = only contracts whose code can still be replaced."
    },
    "single_key_admin": {
      "type": "boolean",
      "description": "true = only contracts whose admin is a plain wallet (EOA), not a contract/multisig/timelock."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Default 200."
    }
  }
}
🟢get_contract_powers(contract, chain)

Full free analysis of one contract that is in the registry: verification, proxy pattern and implementation address, who the admin is and whether it is a single key, every retained power (upgrade / mint / pause / blacklist / fees / sweep / burn-from / ownership transfer / limits) with the evidence and confidence behind it, reachable DELEGATECALL / SELFDESTRUCT / CREATE2 opcodes, and the owner-only functions the classifier could NOT categorise — which is where the unusual powers hide. Accepts an address or a symbol such as USDC or AERO.

Input Schema

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "description": "A 0x address, or a symbol such as USDC."
    },
    "chain": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "polygon"
      ],
      "description": "Required if a symbol is ambiguous."
    }
  },
  "required": [
    "contract"
  ]
}
🟢check_any_contract(address, chain)

Free preview for ANY verified EVM contract on base, ethereum or polygon — including addresses not in the registry. Returns contract type, verification, name, whether it is a proxy, how many powers were found, how many owner-only functions went uncategorised, and whether an owner was found. The decision fields (which powers, the evidence, the admin address, the implementation) are withheld and listed by name. Use get_contract_powers first if the contract is already in the registry — that is free and complete.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "0x-prefixed 20-byte address."
    },
    "chain": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "polygon"
      ],
      "description": "Default base."
    }
  },
  "required": [
    "address"
  ]
}
recent_power_changes(severity, contract, limit)

What actually changed behind the watched contracts: implementation swapped, owner moved, a power appeared or disappeared, verification lost. Each event carries the before and after value and the window it was detected in. Severity is one of critical / material / low. Use this to answer "has anything changed behind this contract recently?".

Input Schema

{
  "type": "object",
  "properties": {
    "severity": {
      "type": "string",
      "enum": [
        "critical",
        "material",
        "low"
      ],
      "description": "Minimum severity to return."
    },
    "contract": {
      "type": "string",
      "description": "Filter to one address or symbol."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Default 25."
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools