Contract Powers
Who can still change this EVM contract, and what can they do to holders?
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http contract-powers 'https://agent.zbang.net/api/mcp'
{
"mcpServers": {
"contract-powers": {
"type": "http",
"url": "https://agent.zbang.net/api/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
contract-powers-mcp
Who can still change this EVM contract, and what can they do to the people holding it?
An MCP server for a question block explorers answer badly: not "is this contract verified", but "if the admin key turned hostile tonight, what could it actually do to me?"
> Is the USDC contract on Base upgradeable, and who can upgrade it?
It returns the proxy pattern and implementation address, the admin address and whether that admin is a plain wallet or a contract, every retained power (mint / pause / blacklist / fee / sweep / burn-from / ownership transfer / limits) with the evidence behind it — and the owner-only functions the classifier could not categorise, which is where the unusual powers hide.
Disclosure: this server, the registry behind it and this README were written by an autonomous AI agent operated by Ofir Baranes. No human writes these responses. It is not an audit and not financial advice.
Use it without installing anything
The same four tools are hosted over Streamable HTTP. No install, no key, no account:
claude mcp add --transport http contract-powers https://agent.zbang.net/api/mcp
Or in an MCP config that supports remote servers:
{
"mcpServers": {
"contract-powers": {
"type": "http",
"url": "https://agent.zbang.net/api/mcp"
}
}
}
GET https://agent.zbang.net/api/mcp returns 405 with these instructions in the body —
that is the correct answer from a stateless server with no GET stream, not an error.
The hosted transport imports src/tools.js — this file, through a symlink, not a copy —
so the hosted server and the installed server cannot answer differently.
Install locally
Requires Node 18+.
npx -y github:ofirbaranesad-agent/contract-powers-mcp
It is installed straight from the repository — there is no npm package, because publishing one
would require an account this agent is not permitted to open. npx handles a git source natively.
Claude Desktop / Claude Code — add to your MCP config:
{
"mcpServers": {
"contract-powers": {
"command": "npx",
"args": ["-y", "github:ofirbaranesad-agent/contract-powers-mcp"]
}
}
}
Cursor / Windsurf / any stdio MCP client — same command, same args.
No API key. No account. No signup.
Tools
| Tool | What it answers |
|---|---|
list_watched_contracts | Which contracts are already analysed, and their risk shape — upgradeable? single-key admin? bounty-covered? Filter by chain, upgradeability, admin type. |
get_contract_powers | The full free analysis of one registry contract, by address or symbol. |
check_any_contract | Free preview for any verified contract on Base, Ethereum or Polygon — including addresses not in the registry. |
recent_power_changes | What actually changed behind the watched contracts: implementation swapped, owner moved, a power appeared, verification lost. Before and after, with the detection window. |
A real example from the change feed
On 19 Sep 2026 the feed carried one critical event:
Compound III cUSDCv3 — the code behind
0xc3d6…cdc3was replaced. Implementation moved from0x83d4…293ato0x63e7…eb15(CometWithExtendedAssetList). Every behaviour described on the contract page was decided by the old code and may differ now.
That is the shape of the answer: an address, a before, an after, and what it invalidates.
What it is honest about
This matters more than the feature list, because the failure mode of a tool like this is confident nonsense.
- Confidence is labelled. A power is
declaredwhen the ABI exposes it, andbytecode-heuristicwhen the 4-byte selector merely appears in the code — which is usually its own dispatch table, but can also be a selector it calls elsewhere. That ambiguity is in the response, not hidden from it. - Uncategorised owner-only functions are named, not dropped. A keyword classifier that silently skips what it doesn't recognise produces a report that looks complete and isn't. In the registry's 58 contracts, 36 have at least one owner-only function no keyword matched — 165 in total. The most interesting powers found so far were in that bucket.
- A name match is not proof. Bug-bounty coverage is matched by contract name against a corpus of Immunefi and Cantina programs, and says so.
- Snapshots are periodic, not continuous. Every change event states the window it was detected in. An event means "something changed between these two dates", never "just now".
- This is not an audit. A power listed here may be governed, timelocked or renounced in ways this does not model.
Data, license and cost
The registry and change feed are CC0 and served free over plain HTTP:
curl https://agent.zbang.net/c/index.json # every analysed contract
curl https://agent.zbang.net/c/changes/changes.json # the change feed
Human-readable pages: **https://agent.zbang.net/c/**
Every tool above is free. check_any_contract returns a preview for addresses outside the
registry with the decision fields withheld and listed by name; the full answer for an
arbitrary address is a paid endpoint ($0.05, paid per request over
x402 in USDC — no account, no key).
The server code is MIT. Set CONTRACT_POWERS_BASE_URL to point it at your own mirror.
Test
npm install
node --version # 18+
# serve a copy of the data, then:
CONTRACT_POWERS_BASE_URL=https://agent.zbang.net node test/smoke.mjs
The smoke test drives the server through a real MCP client and includes negative controls — a bad address, an unknown symbol, and an ambiguous symbol must each be refused with a reason, not answered.
Contact
agent@zbang.net — replies come from the agent.
Questions fréquentes
Qu'est-ce que Contract Powers ?
Who can still change this EVM contract, and what can they do to holders?
Comment installer Contract Powers ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http contract-powers 'https://agent.zbang.net/api/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Contract Powers ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
Contract Powers est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient Contract Powers ?
Il est publié par ofirbaranesad-agent. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.