关于 Bounty Operator
Bounty Operator 是一个 MCP 服务,用于在提交前审查安全发现和漏洞赏金报告草稿。它结合本地文件与秘密扫描、由模型撰写的审查请求、引用核验和证据包生成,并通过服务提供托管审查配置。
主要功能
- 01准备代码或报告审查
- 02扫描文件中的秘密和警告
- 03核验引用行与参考内容
- 04生成 Markdown 证据包
- 05执行八阶段有序审查
- 06支持本地与远程服务模式
适用场景
- 01对照代码质疑漏洞赏金报告草稿
- 02提交前审查 Solidity 合约
- 03检查安全发现中的证据与引用
- 04分阶段分流安全报告
MCP 相关
向 MCP 客户端提供审查准备、配置列表、流程规划、证据包生成及托管审查工具。本地服务额外提供 `run_gauntlet_plan`;托管审查需要连接令牌和模型提供方密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://bountyoperator.com/api/mcpclaude mcp add --transport http bountyoperator-bounty-operator https://bountyoperator.com/api/mcp{"mcpServers":{"bountyoperator-bounty-operator":{"type":"http","url":"https://bountyoperator.com/api/mcp"}}}在 Cursor 中打开{"servers":{"bountyoperator-bounty-operator":{"type":"http","url":"https://bountyoperator.com/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"bountyoperator-bounty-operator":{"type":"http","url":"https://bountyoperator.com/api/mcp"}}}{"mcpServers":{"bountyoperator-bounty-operator":{"serverUrl":"https://bountyoperator.com/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://bountyoperator.com/api/mcp需要授权工具
5此工具无需参数。
详细介绍
Bounty Operator MCP
提交前,尽可能充分地陈述你的理由。
检查证据,明确影响,并在分诊人员要求之前找出缺失的证据。
这是 Bounty Operator 的 MCP 服务。你的 Agent 指定文件,服务会扫描其中的机密并返回审查请求;你的 Agent 使用自己的模型撰写审查内容,服务则检查所有引用的行并构建证据包。准备审查和构建证据包无需账户或密钥。
这条流程涵盖三个核心配置。其他所有配置以及八个挑战阶段中的七个,都会在 Bounty Operator 服务上作为托管审查运行,并使用你自己的提供商密钥。
安装
有两种方式,现均可使用。
远程端点
无需安装。每个客户端只需一行配置。
Claude Code
claude mcp add --transport http bounty-operator https://bountyoperator.com/api/mcp
Codex
codex mcp add bounty-operator --url https://bountyoperator.com/api/mcp
Cursor,配置在 ~/.cursor/mcp.json 或项目中的 .cursor/mcp.json:
{ "mcpServers": { "bounty-operator": { "url": "https://bountyoperator.com/api/mcp" } } }
本地服务
此软件包会按路径读取文件,在你的机器上完成审查准备,并提供 run_gauntlet_plan。需要 Node 22 或更高版本,无依赖项。npx 会从网站提供的 tarball 安装此软件包。
Claude Code
claude mcp add --transport stdio bounty-operator -- npx -y https://bountyoperator.com/dl/bounty-operator-mcp.tgz
Codex
codex mcp add bounty-operator -- npx -y https://bountyoperator.com/dl/bounty-operator-mcp.tgz
Cursor,配置在 ~/.cursor/mcp.json 或项目中的 .cursor/mcp.json:
{ "mcpServers": { "bounty-operator": { "command": "npx", "args": ["-y", "https://bountyoperator.com/dl/bounty-operator-mcp.tgz"] } } }
其他任何客户端:命令为 npx,参数为 -y https://bountyoperator.com/dl/bounty-operator-mcp.tgz,传输方式为 stdio。
在 WSL 之外的 Windows 上,Claude Code 会通过 cmd 启动 npx:请在命令末尾添加 -- cmd /c npx -y https://bountyoperator.com/dl/bounty-operator-mcp.tgz。
此软件包即将以 bounty-operator-mcp 的名称发布到 npm。在发布之前,请使用上面的 tarball URL 安装。
可以尝试的第一个请求:
Use bounty-operator to prepare a Solidity review of src/Vault.sol. Answer the request it returns, then build the packet.
工具
| 工具 | 何时调用 | 返回内容 | 所需信息 |
|---|---|---|---|
list_profiles | 不确定哪种审查适合时 | 审查配置,每项都包含 hosted(值为 true 或 false)、挑战顺序、判定结果、提供商和模型 | 无 |
prepare_review | 使用自己的模型审查代码或报告草稿之前 | 对于核心配置:SHA-256 清单、隐私发现、审查者说明、输出格式以及待回答的请求 | 无 |
run_gauntlet_plan | 进行完整的提交前检查时 | 按顺序排列的八个阶段、各阶段运行所用的工具、仍为空的 Context 字段,以及结束流程的调用 | 无 |
build_packet | 撰写审查内容之后 | 判定结果、引用检查、Markdown 证据包 | 无 |
account | 进行托管审查之前 | 套餐、今日已使用的审查次数、重置时间 | Token |
run_review | 使用提供商的模型运行审查时 | 审查内容、判定结果、引用检查、剩余额度 | Token 和提供商密钥 |
此处共有六个工具,远程端点上有五个:run_gauntlet_plan 仅限本地使用。
每次调用的限制:50 个文件,每个文件 120 KB,总计 240 KB 和 20,000 行。
核心配置和托管配置
prepare_review 支持三个核心配置:general(代码安全审查)、solidity(Solidity 审查)和 report(审查报告草稿)。这些配置的方法包含在此软件包中,由你的 Agent 使用自己的模型回答请求。
其他所有配置均为托管配置:scope、provenance、prior-art、poc、severity、triage、report-edit 和 scanner。每项都会通过 run_review,使用你自己的提供商密钥,在 Bounty Operator 服务上运行。托管配置的方法会在服务端添加,不包含在此软件包中,也不会由任何工具返回。
对于托管配置:
list_profiles会将其返回,并标记为hosted: true。prepare_review会在读取任何文件之前,以代码hosted_profile失败。run_review会运行该配置,并消耗一次托管审查额度。若提供商根据其使用政策拦截了审查,则不会计入额度。列表中不显示的两个配置verdict和panel,是挑战流程和 panel 审查的最后一步:它们仅在 Operator 上运行。
{
"profile": "triage",
"error": "Triager simulation runs on the server. Call run_review with profile \"triage\": it needs BOUNTY_OPERATOR_TOKEN and the provider key in this server's environment.",
"code": "hosted_profile"
}
按路径指定文件
prepare_review 和 run_review 接受 paths、files,或两者同时使用。
paths由服务从其工作目录中读取:["report.md", "src/Vault.sol"]。Agent 无需发送文件文本。files在请求中直接携带文本:[{ "name": "src/Vault.sol", "content": "..." }]。
路径只能解析到工作目录内,不能指向其他位置。服务会拒绝 ..、指向目录外的绝对路径,以及指向目录外的链接。文件内容会用于审查,且绝不会返回:结果仅包含每个文件的标签、大小、行数和 SHA-256。
如果客户端在项目目录之外启动服务,请将 BOUNTY_OPERATOR_ROOT 设置为项目文件夹。
隐私检查
每次调用都会先扫描文件。发现密钥时会阻止调用,结果会列出每处匹配的文件、行号和类型,但绝不会包含匹配文本。发现电子邮件地址或 IP 地址时,会停止调用,直到你再次使用 acknowledgeWarnings: true 调用。run_review 会先在你的机器上执行此检查,再发送任何内容。
提示词
支持提示词的客户端会将以下三个提示词列为斜杠命令:
| 提示词 | 功能 |
|---|---|
challenge-report | 根据报告引用的代码核查草稿报告中的每项主张,然后构建数据包 |
solidity-review | 梳理你指定合约中的入口点和不变量 |
gauntlet | 按顺序将一个发现依次通过八个阶段,并以一个结论收尾 |
在 Claude Code 中:/mcp__bounty-operator__gauntlet。
Gauntlet
八个阶段按此顺序进行,以便尽早终止薄弱的报告:范围、来源、先前工作、证明、严重性、分诊、报告、结论。run_gauntlet_plan 会返回计划,并指出执行各阶段的工具。七个阶段由托管服务提供,并通过 run_review 运行,因此运行需要连接令牌和提供方密钥。报告阶段属于核心配置:prepare_review 会返回请求,由你的 Agent 自行使用模型回答。每次审查都会作为 stage-<n>-<profile>.md 传递到下一阶段,运行最终以 build_packet 结束。结论为以下之一:submit、rewrite-then-submit、prove-first、hold-duplicate、drop。
一次运行会使用七次托管审查。Free 每个 UTC 日可进行一次托管审查,因此完整运行需要 Operator。计划会在 hosted 下包含次数,account 会在运行开始前返回可用额度。
托管审查
run_review 使用你自己的 API 密钥,在服务商的模型上运行任意配置,并返回经过检查的审查结果。这是在 Agent 中运行托管配置的唯一方式。它使用与网站相同的额度:Free 用户每天(按 UTC 计算)可进行一次托管审查,配置不限;Operator 用户每月支付 10 美元,可无限次使用。
三个结果字段用于说明文本并非审查结果。如果服务商截断了回答,truncated 为 true。如果模型或服务商拒绝了请求,refused 为 true。如果审查被拦截,则会设置 blocked:对于相应服务商的安全防护,值为 anthropic-cyber、anthropic-reasoning 或 openai-cyber;对于密钥或其账户上的防护规则,值为 guardrail;对于其他使用政策拦截,值为 policy。被拦截的审查不会计入次数。遭到拒绝或拦截后,不要使用同一模型再次调用:请改用其他模型或服务商,或者对核心配置使用 prepare_review。
- 登录 bountyoperator.com,并在账户面板中创建连接。令牌以
bok_开头,且只会显示一次。 - 在环境中设置令牌和一个服务商密钥,然后启动服务。
claude mcp add --transport stdio --env BOUNTY_OPERATOR_TOKEN=bok_... --env OPENROUTER_API_KEY=sk-or-... bounty-operator -- npx -y https://bountyoperator.com/dl/bounty-operator-mcp.tgz
Codex 中的 ~/.codex/config.toml:
[mcp_servers.bounty-operator]
command = "npx"
args = ["-y", "https://bountyoperator.com/dl/bounty-operator-mcp.tgz"]
env_vars = ["BOUNTY_OPERATOR_TOKEN", "OPENROUTER_API_KEY"]
tool_timeout_sec = 1200
托管审查会在 270 秒内结束。对于 Bounty Operator 模型,运行时间最长为 15 分钟:安静一段时间后的首次请求可能需要等待最多 10 分钟才能启动模型;等待期间会显示进度消息。Codex 默认会在 60 秒后停止工具调用,因此请保留 tool_timeout_sec 这一行。
令牌和密钥从环境中读取。它们都不是工具参数,也都会从所有结果中移除。
远程端点使用相同的两个值作为标头:Authorization: Bearer <token> 和 X-Provider-Key: <key>。各客户端的命令见 bountyoperator.com/mcp。
对于 Novita AI,在本地设置 NOVITA_API_KEY(并将其加入 Codex 的 env_vars),然后使用 "provider": "novita" 调用 run_review。请在 Novita Key Management 创建密钥。默认模型为 deepseek/deepseek-v4.1-flash;此外还列有 zai-org/glm-5.3-flash。本地和远程的 list_profiles 都会显示该服务商及其模型。在远程端点上,请将 Novita 密钥放入 X-Provider-Key,不要将其作为工具参数传递。Novita 会单独收取模型使用费用;选择它不会更改应用的默认服务商,也不会启用回退机制。推理请求绝不会发送注册归因信息。
对于 Nebius Token Factory,在本地设置 NEBIUS_API_KEY(并将其加入 Codex 的 env_vars),然后使用 "provider": "nebius" 调用 run_review。请在 Nebius Token Factory 创建密钥。默认模型为 deepseek-ai/DeepSeek-V4.1-Flash;此外还列有 zai-org/GLM-5.3-Flash 和 moonshotai/Kimi-K3。请求会要求 Nebius 不存储回答。在远程端点上,请将 Nebius 密钥放入 X-Provider-Key,不要将其作为工具参数传递。Nebius 会单独收取模型使用费用;选择它不会更改应用的默认服务商,也不会启用回退机制。
环境变量
| 变量 | 用途 |
|---|---|
BOUNTY_OPERATOR_TOKEN | 用于 account 和 run_review 的连接令牌 |
BOUNTY_OPERATOR_MODEL | 调用未指定模型时,run_review 使用的模型 ID |
BOUNTY_OPERATOR_ROOT | paths 解析路径所依据的项目文件夹绝对路径。默认值:当前工作目录 |
OPENROUTER_API_KEY、ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY、XAI_API_KEY、DEEPSEEK_API_KEY、MISTRAL_API_KEY、GROQ_API_KEY、NOVITA_API_KEY、NEBIUS_API_KEY、INFRON_API_KEY、ORCAROUTER_API_KEY、BOUNTYOPERATOR_API_KEY | run_review 使用的服务商密钥,每个服务商一个 |
服务端会访问的内容
list_profiles、prepare_review、run_gauntlet_plan和build_packet均在你的计算机上运行,不会发起网络调用。account和run_review会使用你的令牌调用https://bountyoperator.com。run_review会发送文件和你的提供商密钥。该服务会添加配置文件的方法,将请求和密钥传递给提供商以处理这一次请求,然后返回审查结果。它不会存储文件、密钥或审查文本。- 服务端会读取你指定的工作目录下的文件。它不会写入磁盘,也不会运行文件中的代码。
调用失败时
调用失败时会返回 isError,其中包含一个 JSON 对象:error、一条可供 Agent 采取行动的句子,以及 code。
| 代码 | 含义 |
|---|---|
hosted_profile | 使用托管配置文件调用了 prepare_review。没有读取或计数任何内容。请调用 run_review。 |
privacy_block | 隐私检查发现了机密信息。结果会列出文件、行号和类型。 |
privacy_warn | 隐私检查发现了电子邮件地址或 IP 地址。若要照原样发送文件,请使用 acknowledgeWarnings: true 再次调用。 |
token | BOUNTY_OPERATOR_TOKEN 缺失、格式错误、已过期或已撤销。 |
daily_used | 今日的免费审查次数已用完。结果中包含 resetsAt。 |
operator_only | 在没有 Operator 的账户上,使用 verdict 或 panel 调用了 run_review。没有内容发送给提供商,今日的审查次数也未使用。 |
review_running | 账户正在运行的审查数量已达到套餐允许的上限。 |
provider | 提供商拒绝了密钥或模型、没有额度、发生故障或超时。此次审查不计入次数。 |
provider_policy | 提供商根据其使用政策拦截了请求。原因不是密钥问题,此次审查不计入次数。请改用其他模型或提供商再次调用,不要使用同一个。 |
output_withheld | 模型重复了自身的指令,而不是进行审查,因此答案已被拦截,且此次调用消耗了一次审查。请重新运行,或选择更强的模型。 |
bad_path、bad_root | 无法读取工作目录下的某个路径,或工作目录本身不可用。 |
network、timeout、cancelled | 无法连接到服务,或在收到答案前连接已关闭;服务在 300 秒内(使用 Bounty Operator 模型进行审查时为 960 秒)未作出响应;或者客户端取消了调用。 |
验证下载文件
网站上的 tarball 附有 SHA-256 校验值,见 https://bountyoperator.com/dl/SHA256SUMS.txt。
curl -sO https://bountyoperator.com/dl/bounty-operator-mcp-0.9.18.tgz
curl -s https://bountyoperator.com/dl/SHA256SUMS.txt | sha256sum -c --ignore-missing
npx -y file:$PWD/bounty-operator-mcp-0.9.18.tgz --version
使用 file: 前缀和绝对路径启动下载的 tarball。npm 会将不带前缀的路径视为要运行的命令。
开发
审查引擎位于仓库的 web/public 中,并会在每次测试和打包前复制到 lib/。
npm install
npm test
node ../scripts/build-mcp.mjs
build-mcp.mjs 会打包 tarball、根据白名单检查其中的内容、将其安装到空文件夹中、完成 MCP 握手,并写入 web/public/dl/。
源代码:github.com/bountyoperator/bounty-operator。MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。