vetagent について
VetAgent は、トークンの購入・保有・推奨前に AI エージェントが使うリモート MCP サーバーです。オンチェーンリスクの判定と根拠を返し、検査できない場合は安全とみなさず、unknown とデータ不足を示します。
主な機能
- 01対応チェーンのトークンリスク評価
- 02状態を明示する流動性スナップショット
- 03新規・注目プールの検索
- 04失敗時の unknown とデータ不足の提示
活用シーン
- 01エージェントがトークンを推奨する前の確認
- 02取引前の流動性と売却可能性の確認
- 03安全評価と区別した新規プールの発見
MCP 対応
リモート HTTP エンドポイントを通じて、トークンリスク評価、流動性照会、プール検索の 3 つのツールを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://vetagent.dev/mcpclaude mcp add --transport http dev-vetagent-vetagent https://vetagent.dev/mcp{"mcpServers":{"dev-vetagent-vetagent":{"type":"http","url":"https://vetagent.dev/mcp"}}}Cursor で開く{"servers":{"dev-vetagent-vetagent":{"type":"http","url":"https://vetagent.dev/mcp"}}}VS Code で開く{"mcpServers":{"dev-vetagent-vetagent":{"type":"http","url":"https://vetagent.dev/mcp"}}}{"mcpServers":{"dev-vetagent-vetagent":{"serverUrl":"https://vetagent.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| address | string | はい | トークンコントラクトアドレス:ERC-20(0x + 40 桁の 16 進数)または Solana(base58) |
| verbose | boolean | いいえ | 上流の証拠をすべて返します。トークン節約のため、デフォルトでは無効です。 |
| chain_hint | string | いいえ | チェーン名(ethereum / bsc / base / polygon / arbitrum / solana)を指定できます。指定を強く推奨します。PulseChain などの Ethereum フォークはコントラクトアドレスを継承するため、同じアドレスが複数のチェーンに存在し、価格が大きく異なる場合があります。指定しない場合、深度が最も高い 1 つのチェーンのみを対象とし、そのチェーン名を明記します。 |
詳細
VetAgent
AI エージェント向けの取引前安全チェックです。 エージェントがトークンを購入、保有、または推奨する前に、VetAgent を呼び出すと、実用的な判定(low/medium/high/unknown)と、その根拠となる具体的なシグナルが返されます。解釈が必要な大量の数値が返されることはありません。
リモート MCP エンドポイント:https://vetagent.dev/mcp · ランディングページ:https://vetagent.dev
ご利用中に問題があった場合や、トークンの判定が間違っていると思われる場合は、[email protected] までご連絡いただくか、issue を作成してください。
// assess_token_risk("0x…", chain_hint="ethereum")
{
"risk_level": "medium",
"risk_score": 36,
"confidence": "high",
"signals": [
{"severity": "ok", "name": "Liquidity is adequate", "category": "liquidity"},
{"severity": "ok", "name": "Buys and sells normally", "category": "honeypot"},
{"severity": "warn", "name": "Contract is closed source", "category": "contract"}
],
"recommendation": "Medium risk. Real signals fired but none are fatal. Review liquidity, holder distribution and contract permissions before deciding."
}
インストール
インストールは不要です。リモートサーバーのため、パッケージもコンテナも API キーもサインアップも必要ありません。URL を 1 つ追加するだけです。
Claude Code:
claude mcp add --transport http vetagent https://vetagent.dev/mcp
Cline、Cursor、Claude Desktop、その他の MCP クライアントの場合は、MCP 設定に追加してください:
{
"mcpServers": {
"vetagent": {
"type": "http",
"url": "https://vetagent.dev/mcp"
}
}
}
正しく動作することを確認します。3 つのツールが返されます:
curl -s -X POST https://vetagent.dev/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
MCP を使用していませんか?同じエンジンは通常の HTTP 経由でも応答します:
GET https://vetagent.dev/assess/<address>
インストールを行うエージェント向けに書かれたバージョンは llms-install.md を、接続後の出力の使い方は docs/AGENT-INTEGRATION.md をご覧ください。
unknown は low ではありません
出力について知っておくべき、最も重要なことです。
VetAgent はフェイルクローズ方式です。上流サービスの停止、売買シミュレーションの失敗、流動性データの未取得などによりチェックを実行できない場合、unknown を返し、不足していた情報を evidence.data_gaps に正確に列挙します。楽観的な中間値で代用することはなく、ポジションサイズを決めることもありません。
confidence が示すのは、入力データがどれだけ揃っていたかであり、トークンがどれだけ安全かではありません。
「わかりません」と正直に伝えるリスク評価ツールは役に立ちます。推測するツールは役に立ちません。
ツール
| ツール | 機能 |
|---|---|
assess_token_risk(address, chain_hint?, verbose?) | リスクプロファイル全体を評価します。8 つのチェーンにおける流動性の深さ、ペアの経過時間、同じティッカーを使ったなりすましを確認します。Ethereum、BSC、Base では、売却可能性のシミュレーション、税金、コントラクトの権限、上流サービスの総合判定も確認します。Solana では、ミント/凍結権限と Token-2022 の拡張機能も確認します。現時点では、どのチェーンでも保有者の集中度は確認しません |
get_token_liquidity(address, chain_hint?) | メインペアの流動性スナップショットを返します。status が明示されるため、「上流サービスの失敗」と「プールが存在しない」を区別できます |
find_new_hot_pools(chain?, limit?) | チェーン上で新しい、または注目度の高いプールを返します。検出のみを目的としており、安全性を保証するものではありません |
チェーンがわかっている場合は、必ず chain_hint を指定してください。PulseChain などの Ethereum フォークではコントラクトアドレスが引き継がれるため、同じアドレスが価格の大きく異なる複数のチェーン上に存在します。ヒントを指定すると、この曖昧さを解消できます。(指定しない場合、VetAgent は正規チェーンを優先します。src/risk.py の _CHAIN_RANK をご覧ください。)
エージェント向けの完全な仕様は、docs/AGENT-INTEGRATION.md をご覧ください。
精度ベンチマーク
ほとんどのトークンリスクツールは機能一覧を公開しています。私たちは、エラー率とその測定方法を公開します。まだ機能していない部分も含め、エンジンが参照しないデータソースが作成したラベルと照合します。
現在測定している内容:健全なトークン162件での誤検知率1.9%、誤ブロック率13.0%(流動性があり健全なトークン154件のうち20件が中または高と評価されており、エージェントもこれらを拒否します)、不明率20.7%、そしてGoPlusが中央集権型とタグ付けしたトークンのうち**21.2%**が高リスクと評価されています。そのほとんどは、USDTではなく数セントを保有する放棄されたプールです。USDTは低リスクと評価されます。
まだ測定していない内容:信頼できる再現率です。サンプリングでは576件中30件の無効なトークンが見つかっています。公開ソースはすべて流動性順にランキングするため、ラグプールはリストから完全に消えてしまいます。また、敵対的なコホートは17件のコントラクトで構成されています。これら2つの小規模なコホートでの再現率は、コントラクトシグナルのみの列とともにbench/results.mdで公開しています。検出されるものの大半は悪意のあるコントラクトではなく、空のプールだからです。母集団全体の検出率を公表するには、実際のコホートを提供できるだけの日次スナップショットアーカイブの蓄積を待つ必要があります。このセクションの以前のバージョンでは「測定済みの再現率」と記載していましたが、ベンチマークファイル自体の内容と矛盾していました。
→ bench/results.md — 現在の数値、測定方法、既知の制限事項。
このような設計にしている理由:
- 独立したラベル。 エンジンが参照するhoneypot.isを使ってベンチマークのトークンにラベルを付けると、VetAgentがhoneypot.isの結果を中継できるかどうかを測るだけになってしまいます。ラベルには、実際の市場結果(価格/出来高の履歴)と、意図的にエンジンから除外しているGoPlusを使用しています。
- 約束ではなく、実行時のアサーション。 ベンチマークは、各側がアクセスしたすべてのエンドポイントを記録し、両方の集合が交差すると実行を失敗させます。循環的なベンチマークは、ベンチマークがないよりも悪いため、文書に記載するだけでなく、構造上実現できないようにしています。
- アブレーション列。 すでに崩壊したトークンは、現在の流動性がほぼゼロなので、それを検出することはほとんど同語反復です。そのため、結果はすべてのシグナルを使った場合と、コントラクトシグナルのみを残した場合(流動性、ライフサイクル、プール経過期間、なりすましシグナルを除外)の2通りで報告しています。この差が、明白な情報を超えてエンジンが実際に付加する価値です。
- 再現率とあわせて
unknown率を報告。 すべての質問にunknownと答えるツールは、再現率が完璧でも価値はありません。
ベンチマークでは、固定された論理クロック2026-09-21T02:00:00Zを使用します。再現するには、作業用コピーと一致するローカルキャッシュを用意してください。
python bench/run_benchmark.py --replay
リプレイではネットワークリクエストは発生しません。回答が欠落している場合は終了コード4を返し、欠落しているURLを一覧表示し、既存の結果ファイルは変更しません。すべてそろった状態でリプレイを実行すると、bench/results.jsonとbench/results.mdを書き込めます。キャッシュはこのリポジトリでは追跡も公開もされていないため、新しくクローンした環境で公開済みの数値を再現できるとは限りません。
通常の実行モードでは、欠落している回答を取得し、日付付きのキャッシュエントリを書き込めます。意図的に更新する場合は、レビュー済みの明示的なHTTPS URLリストを使ってpython bench/run_benchmark.py --fill missing-urls.txtを実行します。URLリストの重複は除去され、利用可能な記録済みエントリはスキップされます。その後、別途--replayを実行してください。固定された論理クロックは、上流の状態を過去にさかのぼって測定したものではありません。新しい回答によって結果が変わる可能性があります。
テスト
python tests/test_risk.py # engine regressions, offline, real upstream snapshots
python tests/test_mcp.py # MCP protocol conformance
python tests/test_upstream_contract.py # live: every path risk.py reads, against a measured baseline
tests/の各ケースは、実際に本番環境に到達した不具合に紐付けられています。
コントラクトテストには大きな意義があります。VetAgentの最悪のバグは、honeypot.isではフラグがhoneypotResultに格納されているのに、simulationResult.isHoneypotを読み取っていたことでした。そのキーは存在せず、参照結果はNoneになり、Falseとして扱われ、ハニーポットチェックは問い合わせられたすべてのトークンを気付かれずに通過させていました。モックを使ったテストでは、このバグを検出できませんでした。実際のAPIを呼び出して、レスポンスの構造をアサートするテストだけが検出できました。
**このリポジトリのルール:**何かを修正したと主張するコミットには、その修正前に失敗していたテストを必ず含めてください。
アーキテクチャ
Cloudflare Python Worker を使用し、重い依存関係はありません。
src/
entry.py HTTP routing (entry class must be named Default)
risk.py risk engine — assess / liquidity / new_pools
mcp_server.py hand-written streamable-http MCP endpoint (JSON-RPC 2.0)
landing.html landing page
bench/ accuracy benchmark (independent labels + ablation)
tests/ regression, protocol, and upstream-contract suites
docs/ agent integration guide, handoff, MCP registry manifest
MCP エンドポイントは、公式の mcp パッケージを使用せず、手書きで実装しています。このパッケージは pydantic の C 拡張を取り込みますが、Cloudflare Python Workers にはインストールできないためです。プレーンな JSON-RPC のほうが軽量で、すべてのクライアントと完全に互換性があることがわかりました。
データソース
| ソース | 用途 |
|---|---|
| DexScreener | ペア、価格、流動性、取引量、ペアの経過時間 |
| GeckoTerminal | 流動性のフォールバック、新規/トレンド中のプール |
| honeypot.is | 売買シミュレーション、税、総合リスク、コントラクトの公開状況 — Ethereum、BSC、Base のみ |
| RugCheck | Solana のラグスコア、ミント/凍結権限、Token-2022 拡張機能。保有者の集中度は含まれません。2026-09-19 以降、レポートに保有者情報が含まれていないためです |
GoPlus はエンジンでは使用しません。ベンチマークの保留済みオラクルとして確保されています。エンジンに追加するには、まずベンチマークに新たな独立したラベラーを用意する必要があります。そうしなければ、精度の数値が意味をなさなくなります。
ドキュメントの記載内容
ドキュメントは 4 つあり、それぞれ役割は 1 つです。同じ内容が 2 つに書かれていたら、どちらかが間違っています。
| ドキュメント | 答える内容 |
|---|---|
README.md(このファイル) | これは何か、どう呼び出すか |
docs/DECISIONS.md | なぜこのように構築されているのか、そして各ルールを何が適用するのか |
docs/STRATEGY.md | 誰が費用を負担するのか、競争優位性は何か、いつ終了するのか |
変更した理由はコミットメッセージに記録されています。コミットメッセージは変更差分に紐付けられ、変更できません。コード行が一見不自然な理由は、その行の隣にあるコメントに記載されています。どちらもドキュメントには転記しません。転記した内容は、誰にも気づかれないまま古くなるためです。
対象範囲
VetAgent はオンチェーンで観測できるリスクを報告します。投資助言ではなく、ポジションサイズも決めません。また、チームの行動、ソーシャルエンジニアリング、ガバナンスを通じて実行されるラグなど、オフチェーンのリスクを把握することもできません。low は「実行されたチェックで致命的な兆候が見つからなかった」という意味であり、「安全に購入できる」という意味では決してありません。
ライセンス
MIT — LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。