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 分