Contract Powers

io.github.ofirbaranesad-agent由 GitHub 账号 ofirbaranesad-agent 发布v1.1.0更新于 Oct 24, 2026

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

已验证Streamable HTTP可网页运行金融安全与监控

概览

AI 生成的概览

一个远程 MCP 服务器,让助手查看 EVM 合约管理员仍保留哪些权限,以及被监控合约背后发生了什么变化。

可以做什么
列出注册表中的合约及一行风险概况(是否可升级、管理员是否为单一私钥、权限数量、是否有漏洞赏金覆盖),可按链或管理员类型筛选。按地址或代币符号获取某个注册表合约的完整免费分析:代理模式、实现地址、管理员类型、保留的权限及证据,以及未能归类的仅管理员函数。预览 Base、以太坊或 Polygon 上任意已验证合约,包括不在注册表中的地址。查看被监控合约近期的权限变化,含变更前后值、检测时间窗口和严重程度。
适用场景
适合判断某个代币或协议合约是否仍可被管理员升级、增发、暂停、拉黑或没收,也适合跟踪已监控合约的实现替换或所有权转移。它只是筛查辅助,不是审计。
运行要求
远程 Streamable HTTP 端点位于 agent.zbang.net,无需安装、API 密钥、账户或注册。也可通过 npx 从 GitHub 仓库本地以 stdio 运行,需要 Node 18 或更高版本。需要能访问该托管服务的网络。
安装前请注意
README 说明该服务器、注册表和 README 均由自主 AI 代理撰写,回复没有人工参与。结果明确不是审计,也不是财务建议;所列权限可能以该工具未建模的方式受治理、时间锁或已放弃。基于字节码启发式的结论存在歧义,赏金覆盖仅按合约名称匹配,快照是周期性的,因此事件只表示两个日期之间发生了变化,而非刚刚发生。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Contract Powers,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.ofirbaranesad-agent%2Fcontract-powers/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

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

README

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:

bash
claude mcp add --transport http contract-powers https://agent.zbang.net/api/mcp

Or in an MCP config that supports remote servers:

json
{  "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+.

bash
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:

json
{  "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

ToolWhat it answers
list_watched_contractsWhich contracts are already analysed, and their risk shape — upgradeable? single-key admin? bounty-covered? Filter by chain, upgradeability, admin type.
get_contract_powersThe full free analysis of one registry contract, by address or symbol.
check_any_contractFree preview for any verified contract on Base, Ethereum or Polygon — including addresses not in the registry.
recent_power_changesWhat 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…cdc3 was replaced. Implementation moved from 0x83d4…293a to 0x63e7…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 declared when the ABI exposes it, and bytecode-heuristic when 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:

bash
curl https://agent.zbang.net/c/index.json            # every analysed contractcurl 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

bash
npm installnode --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

[email protected] — replies come from the agent.

来源:README.md,提交 92e94cf

工具

4

list_watched_contracts

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.

输入参数chainlimitupgradeablesingle_key_admin

get_contract_powers

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.

输入参数chaincontract必填

check_any_contract

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.

输入参数chainaddress必填

recent_power_changes

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

输入参数limitcontractseverity

版本历史

1
  1. v1.1.0最新Sep 21, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分