Who can still change this EVM contract, and what can they do to holders?
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
0x-prefixed 20-byte address.
Default base.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| chain | string | Default base. |
| address* | string | 0x-prefixed 20-byte address. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"polygon"
],
"type": "string",
"description": "Default base."
},
"address": {
"type": "string",
"description": "0x-prefixed 20-byte address."
}
}
}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 / grant-minter / pause / blacklist / seize / 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.
| Argument | Type | Description |
|---|---|---|
| chain | string | Required if a symbol is ambiguous. |
| contract* | string | A 0x address, or a symbol such as USDC. |
{
"type": "object",
"required": [
"contract"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"polygon"
],
"type": "string",
"description": "Required if a symbol is ambiguous."
},
"contract": {
"type": "string",
"description": "A 0x address, or a symbol such as USDC."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| chain | string | Restrict to one chain. |
| limit | integer | Default 200. |
| upgradeable | boolean | true = only contracts whose code can still be replaced. |
| single_key_admin | boolean | true = only contracts whose admin is a plain wallet (EOA), not a contract/multisig/timelock. |
{
"type": "object",
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"polygon"
],
"type": "string",
"description": "Restrict to one chain."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Default 200."
},
"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."
}
}
}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?".
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 25. |
| contract | string | Filter to one address or symbol. |
| severity | string | Minimum severity to return. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 25."
},
"contract": {
"type": "string",
"description": "Filter to one address or symbol."
},
"severity": {
"enum": [
"critical",
"material",
"low"
],
"type": "string",
"description": "Minimum severity to return."
}
}
}