Bounty Operator について
Bounty Operatorは、提出前にセキュリティ上の指摘やバグ報奨金レポートの草稿を確認するMCPサーバーです。ローカルでのファイル・シークレット検査、モデルが作成するレビュー依頼、引用検証、証拠パケット作成を組み合わせ、サービス経由のホスト型プロファイルも利用できます。
主な機能
- 01コードやレポートのレビュー準備
- 02ファイル内のシークレットと警告の検査
- 03引用行と参照内容の検証
- 04Markdown証拠パケットの作成
- 058段階の順次レビュー
- 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 サーバーです。エージェントがファイル名を指定すると、サーバーがファイルをスキャンして秘密情報を検出し、レビュー依頼を返します。エージェント自身のモデルがレビューを作成し、サーバーが引用されたすべての行を確認して証拠パケットを作成します。レビューの準備とパケットの作成には、アカウントもキーも必要ありません。
この方法で対応できるのは、3つのコアプロファイルです。それ以外のすべてのプロファイルと、8つのガントレットステージのうち7つは、独自のプロバイダーキーを使い、Bounty Operatorサービス上でホスト型レビューとして実行されます。
インストール
方法は2つあります。どちらも今すぐ利用できます。
リモートエンドポイント
インストールは不要です。クライアントごとに1行設定します。
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にしてください。
このパッケージは、npmでbounty-operator-mcpとして公開予定です。公開されるまでは、上記の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 | 提出前の一連の実行を行うとき | 8つのステージと、各ステージを実行するツール、空欄のままのContextフィールド、実行を終了する呼び出し | なし |
build_packet | レビューの作成後 | 判定結果、参照チェック、Markdown形式の証拠パケット | なし |
account | ホスト型レビューの前 | プラン、本日のレビュー使用数、リセット時刻 | トークン |
run_review | プロバイダーのモデルでレビューを実行するとき | レビュー、その判定結果、参照チェック、残りの利用枠 | トークンとプロバイダーキー |
ここには6つのツールがあり、リモートエンドポイントには5つあります。run_gauntlet_planはローカルのみで利用できます。
1回の呼び出しあたりの上限:ファイル50個、1ファイルあたり120 KB、合計240 KBかつ20,000行。
コアプロファイルとホスト型プロファイル
prepare_reviewが対応するコアプロファイルは、general(コードセキュリティレビュー)、solidity(Solidityレビュー)、report(レポート草稿の検証)の3つです。これらの手法はこのパッケージに含まれており、エージェント自身のモデルがリクエストに回答します。
それ以外のプロファイルはすべてホスト型です。scope、provenance、prior-art、poc、severity、triage、report-edit、scannerが該当します。いずれも独自のプロバイダーキーを使い、run_reviewを通じてBounty Operatorサービス上で実行されます。ホスト型プロファイルの手法はサービス上に追加されます。このパッケージには含まれておらず、どのツールからも返されません。
ホスト型プロファイルの場合:
list_profilesはhosted: trueを付けて返します。prepare_reviewは、ファイルを読み取る前にhosted_profileコードで失敗します。run_reviewはプロファイルを実行し、ホスト型レビューを1回分使用します。プロバイダーが利用ポリシーに基づいてブロックしたレビューは、利用回数に含まれません。一覧にない2つのプロファイル、verdictと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"]。エージェントがファイルのテキストを送信する必要はありません。filesでは、テキストをインラインで渡します。例:[{ "name": "src/Vault.sol", "content": "..." }]。
パスの解決先は作業ディレクトリ配下に限られます。サーバーは、..、ディレクトリの外を指す絶対パス、ディレクトリの外に出るリンクを拒否します。ファイルの内容はレビューに渡されますが、返されることはありません。結果には各ファイルのラベル、サイズ、行数、SHA-256 が含まれます。
サーバーをプロジェクトの外から起動するクライアントは、BOUNTY_OPERATOR_ROOT にプロジェクトフォルダーを設定します。
プライバシーチェック
すべての呼び出しで、まずファイルがスキャンされます。秘密情報が見つかると呼び出しはブロックされ、結果には該当箇所のファイル、行、種類が表示されますが、一致したテキストは表示されません。メールアドレスまたは IP アドレスが見つかった場合は、acknowledgeWarnings: true を指定して再実行するまで呼び出しが停止します。run_review は、何かが送信される前にお使いのマシン上でこのチェックを実行します。
プロンプト
スラッシュコマンドとして対応クライアントに表示されるプロンプトは 3 つです。
| プロンプト | 機能 |
|---|---|
challenge-report | 下書きレポートのすべての主張を、引用されているコードと照合して確認し、その後パケットを作成します |
solidity-review | 指定したコントラクトのエントリーポイントと不変条件を整理します |
gauntlet | 発見事項を 8 つのステージに順番に通し、最後に 1 つの判定を出します |
Claude Code では、/mcp__bounty-operator__gauntlet です。
Gauntlet
弱いレポートを早期に終わらせるため、8 つのステージを順番に実行します。スコープ、出典、先行事例、証明、深刻度、トリアージ担当者、レポート、判定の順です。run_gauntlet_plan はプランと、各ステージを実行するツール名を返します。7 つのステージはホスト環境で実行され、run_review を介するため、実行には接続トークンとプロバイダーキーが必要です。レポートステージはコアプロファイルです。prepare_review がリクエストを返し、エージェント自身のモデルがそれに回答します。各レビューは stage-<n>-<profile>.md として次のステージに渡され、実行の最後に build_packet が呼び出されます。判定は submit、rewrite-then-submit、prove-first、hold-duplicate、drop のいずれかです。
1 回の実行で、ホスト環境のレビューを 7 回行います。Free では UTC の 1 日あたりホスト環境のレビューを 1 回利用できるため、すべてのステージを実行するには Operator が必要です。プランには hosted の下に回数が表示され、account は実行開始前に利用可能な回数を返します。
ホステッドレビュー
run_review は、独自の API キーを使ってプロバイダーのモデルで任意のプロファイルを実行し、チェック済みのレビューを返します。エージェントからホステッドプロファイルを実行する唯一の方法です。ウェブサイトと同じ利用枠が適用されます。Free では UTC 日ごとに任意のプロファイルでホステッドレビューを 1 回実行でき、Operator では月額 US$10 で無制限に利用できます。
3 つの結果フィールドで、テキストがレビューではない場合を示します。プロバイダーが回答を途中で打ち切った場合は、truncated が true になります。モデルまたはプロバイダーが応答を拒否した場合は、refused が true になります。レビューがブロックされた場合は、blocked が設定されます。プロバイダーのセーフガードによる場合は anthropic-cyber、anthropic-reasoning、または openai-cyber、キーまたはそのアカウントのガードレールによる場合は guardrail、利用ポリシーに基づくその他のブロックの場合は policy です。ブロックされたレビューがカウントされることはありません。拒否またはブロックの後、同じモデルでもう一度呼び出さないでください。別のモデルまたはプロバイダーを使うか、コアプロファイルには prepare_review を使ってください。
- bountyoperator.com にサインインし、アカウントパネルで接続を作成します。トークンは
bok_で始まり、一度だけ表示されます。 - トークンとプロバイダーキー 1 つを環境変数に設定して、サーバーを起動します。
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 の行は残してください。
トークンとキーは環境変数から読み込まれます。どちらもツールの引数ではなく、すべての結果から削除されます。
リモートエンドポイントには、同じ 2 つの値をヘッダーとして渡します。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 のモデル利用料金は別途請求されます。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 のモデル利用料金は別途請求されます。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 用のプロバイダーキー。プロバイダーごとに 1 つ |
サーバーが接続する先
list_profiles、prepare_review、run_gauntlet_plan、build_packetは、ネットワークに接続せず、お使いのマシン上で実行されます。accountとrun_reviewは、お使いのトークンを使ってhttps://bountyoperator.comを呼び出します。run_reviewはファイルとプロバイダーキーを送信します。このサービスはプロファイルの手法を追加し、リクエストとキーをそのリクエストに限ってプロバイダーに渡し、レビューを返します。ファイル、キー、レビューのテキストは保存しません。- サーバーは、作業ディレクトリ内で指定したファイルを読み取ります。ディスクには何も書き込まず、ファイル内のコードを実行することもありません。
呼び出しに失敗した場合
呼び出しに失敗すると、isError とともに、エージェントが対応できる文面の error と code を含むJSONオブジェクトが返されます。
| コード | 意味 |
|---|---|
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 | モデルがレビューせずに指示を繰り返したため、回答は停止され、呼び出しはレビュー1回分として使用されました。再度実行するか、より強力なモデルを選んでください。 |
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
ダウンロードした tarball を起動するには、file: プレフィックスと絶対パスを指定してください。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。