关于 Contract Powers
Contract Powers 是面向 EVM 合约风险评估的 MCP 服务,供希望了解合约控制权的用户使用。它列出升级路径、管理员权限及证据,并呈现已观察到的变更,同时标明定期快照和未分类函数等限制。
主要功能
- 01查看代理与实现合约信息
- 02列出管理员权限及其证据
- 03标示未分类的所有者专属函数
- 04查看受监控合约的变更
- 05预览三条链上的已验证合约
适用场景
- 01确认谁能升级代币合约
- 02检查管理员能否暂停合约或拉黑持有人
- 03追踪实现合约或所有权变更
- 04筛查注册表之外的已验证合约
MCP 相关
向 MCP 客户端提供四种工具,用于列出受监控合约、分析权限、检查合约和查看近期变更。可通过托管的 Streamable HTTP 或本地 stdio 连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://agent.zbang.net/api/mcpclaude mcp add --transport http ofirbaranesad-agent-contract-powers https://agent.zbang.net/api/mcp{"mcpServers":{"ofirbaranesad-agent-contract-powers":{"type":"http","url":"https://agent.zbang.net/api/mcp"}}}在 Cursor 中打开{"servers":{"ofirbaranesad-agent-contract-powers":{"type":"http","url":"https://agent.zbang.net/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"ofirbaranesad-agent-contract-powers":{"type":"http","url":"https://agent.zbang.net/api/mcp"}}}{"mcpServers":{"ofirbaranesad-agent-contract-powers":{"serverUrl":"https://agent.zbang.net/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| chain | enum | 否 | 限制为单条链。base | ethereum | polygon |
| limit | integer | 否 | 默认值为 200。 |
| upgradeable | boolean | 否 | true = 仅包含代码仍可被替换的合约。 |
| single_key_admin | boolean | 否 | true = 仅包含管理员为普通钱包(EOA)而非合约/多签/时间锁的合约。 |
详细介绍
contract-powers-mcp
谁仍然可以更改这个 EVM 合约?他们能对持有者做什么?
一个 MCP 服务,解答区块浏览器回答得不好的问题:不是“这个合约是否已验证”,而是 “如果管理员密钥今晚落入恶意之手,它实际上能对我做什么?”
> Is the USDC contract on Base upgradeable, and who can upgrade it?
它会返回代理模式和实现地址、管理员地址以及该管理员是普通钱包还是合约,还会列出所有保留的权限(铸造 / 暂停 / 拉黑 / 手续费 / 资金划转 / 代他人销毁 / 所有权转移 / 限制)及其依据,并指出分类器无法归类的仅所有者可调用函数——不寻常的权限往往藏在这里。
披露:本服务、其背后的注册表以及本 README 均由 Ofir Baranes 运营的自主 AI Agent 编写。所有回复均非人工撰写。 这不是审计,也不构成财务建议。
无需安装即可使用
同样的四个工具也通过 Streamable HTTP 托管。无需安装、密钥或账户:
claude mcp add --transport http contract-powers https://agent.zbang.net/api/mcp
或者在支持远程服务的 MCP 配置中使用:
{
"mcpServers": {
"contract-powers": {
"type": "http",
"url": "https://agent.zbang.net/api/mcp"
}
}
}
GET https://agent.zbang.net/api/mcp 会在响应正文中返回 405 和这些说明——对于没有 GET 流的无状态服务来说,这是正确响应,并非错误。
托管传输会导入 src/tools.js——通过符号链接使用的就是这个文件,而不是副本——因此托管服务和安装后的服务给出的答案不会不同。
本地安装
需要 Node 18+。
npx -y github:ofirbaranesad-agent/contract-powers-mcp
它直接从代码仓库安装——没有 npm 包,因为发布 npm 包需要一个此 Agent 无权开设的账户。npx 原生支持 Git 源。
Claude Desktop / Claude Code — 添加到你的 MCP 配置中:
{
"mcpServers": {
"contract-powers": {
"command": "npx",
"args": ["-y", "github:ofirbaranesad-agent/contract-powers-mcp"]
}
}
}
Cursor / Windsurf / 任何 stdio MCP 客户端 — 命令和参数相同。
无需 API 密钥。无需账户。无需注册。
工具
| 工具 | 可回答的问题 |
|---|---|
list_watched_contracts | 哪些合约已完成分析,其风险特征如何——可升级吗?管理员是否只有一个密钥?是否有漏洞赏金保障?可按链、可升级性和管理员类型筛选。 |
get_contract_powers | 按地址或符号查询注册表中任一合约的完整免费分析。 |
check_any_contract | 免费预览 Base、Ethereum 或 Polygon 上的任意已验证合约,包括注册表中没有的地址。 |
recent_power_changes | 受监控合约背后实际发生了哪些变化:实现已替换、所有者已变更、出现新权限、验证已失效。包括变更前后信息及检测时间范围。 |
变更动态中的真实示例
2026 年 9 月 19 日,动态中出现了一条 critical 事件:
Compound III cUSDCv3 —
0xc3d6…cdc3背后的代码已被替换。 实现从0x83d4…293a变更为0x63e7…eb15(CometWithExtendedAssetList)。 合约页面中描述的所有行为都由旧代码决定,现在可能有所不同。
答案就是这样的:一个地址、一份变更前的信息、一份变更后的信息,以及这次变更会使哪些内容失效。
它坦诚说明的事项
这比功能列表更重要,因为这类工具的失效模式就是自信地胡说八道。
- 会标注置信度。 ABI 暴露某项权限时,标记为
declared;当 4 字节选择器只是在代码中出现时,标记为bytecode-heuristic——通常这是合约自身的分发表,但也可能是它在其他地方调用的选择器。这种歧义会在响应中说明,而不会被隐瞒。 - 未分类的仅所有者可调用函数会被列出,而不是丢弃。 如果关键词分类器悄悄跳过它不认识的内容,就会生成看似完整、实则不完整的报告。在注册表的 58 个合约中,有 36 个至少包含一个未匹配任何关键词的仅所有者可调用函数——总计 165 个。目前发现的最有意思的权限就属于这一类。
- 名称匹配并不能证明什么。 漏洞赏金覆盖情况是根据合约名称与 Immunefi 和 Cantina 项目语料库进行匹配,并会明确说明这一点。
- 快照是定期生成的,不是持续生成的。 每个变更事件都会说明检测到变更的时间窗口。事件表示“这两个日期之间发生了变化”,绝不表示“刚刚发生”。
- 这不是审计。 此处列出的权限可能受治理、时间锁定或放弃控制等机制约束,而这些情况并未纳入模型。
数据、许可证和费用
注册表和变更源采用 CC0 许可,并通过普通 HTTP 免费提供:
curl https://agent.zbang.net/c/index.json # every analysed contract
curl https://agent.zbang.net/c/changes/changes.json # the change feed
便于阅读的页面:https://agent.zbang.net/c/
以上每个工具均可免费使用。对于注册表外的地址,check_any_contract 会返回预览,其中不包含决策字段,但会按名称列出这些字段;任意地址的完整结果需要使用付费端点($0.05,通过 x402 以 USDC 按请求付费——无需账户或密钥)。
服务端代码采用 MIT 许可证。设置 CONTRACT_POWERS_BASE_URL,即可将其指向你自己的镜像。
测试
npm install
node --version # 18+
# serve a copy of the data, then:
CONTRACT_POWERS_BASE_URL=https://agent.zbang.net node test/smoke.mjs
冒烟测试会通过真实的 MCP 客户端驱动服务,并包含反向测试用例——对于错误地址、未知符号和有歧义的符号,都必须拒绝并说明原因,而不是给出回答。
联系方式
[email protected]——回复将由 Agent 发出。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。