Haris Guardian - Solana Token Risk Check について
Haris Guardian は、Solana SPL と Token-2022 トークンを読み取り専用でリスク検査します。リスクを評価するユーザー向けに、権限、保有集中度、流動性、売買シミュレーションに基づく 0~100 のスコア、判定、理由を返します。
主な機能
- 010~100 のリスクスコアと判定
- 02ミント権限と凍結権限の確認
- 03Token-2022 のリスク要素検査
- 04保有集中度と流動性の分析
- 05売買シミュレーションによるハニーポット検査
- 06単件、バッチ、差分チェック
活用シーン
- 01Solana トークンのリスク要因の確認
- 02トークン検査結果の変化の比較
- 03複数のミントアドレスの一括検査
- 04取引前の権限と流動性の確認
MCP 対応
Streamable HTTP の MCP エンドポイントから、トークン検査、詳細検査、バッチ検査、差分検査のツールを利用できます。読み取り専用で、署名、取引、鍵の保管は行いません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://haris-api.vercel.app/mcpclaude mcp add --transport http fitness9991-haris-guardian https://haris-api.vercel.app/mcp{"mcpServers":{"fitness9991-haris-guardian":{"type":"http","url":"https://haris-api.vercel.app/mcp"}}}Cursor で開く{"servers":{"fitness9991-haris-guardian":{"type":"http","url":"https://haris-api.vercel.app/mcp"}}}VS Code で開く{"mcpServers":{"fitness9991-haris-guardian":{"type":"http","url":"https://haris-api.vercel.app/mcp"}}}{"mcpServers":{"fitness9991-haris-guardian":{"serverUrl":"https://haris-api.vercel.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Haris Guardian — Solana トークンのリスクチェック(MCP + REST + x402)
Solana SPL および Token-2022 トークンを対象に、読み取り専用で詐欺・ラグプルのリスクをチェックします。ミントアドレスを指定すると、0~100 のリスクスコア(数値が高いほどリスクが高い)、判定結果、分かりやすい理由を返します。署名、取引、鍵の保管は一切行いません。
チェック項目
- ミント権限と凍結権限
- Token-2022 の落とし穴:永続的なデリゲート、転送フック、転送手数料
- 保有者の集中度
- 流動性、LP のバーン/ロック率、Streamflow のロック
- 購入と売却のシミュレーション(ハニーポットテスト)
エンドポイント
| インターフェース | URL |
|---|---|
| MCP(streamable-http) | https://haris-api.vercel.app/mcp — ツール check_solana_token、diff_solana_token、deep_check_solana_token、batch_check_solana_tokens |
| REST(無料、1日3回) | GET https://haris-api.vercel.app/v1/check/{mint} |
| REST(有料、x402) | POST https://haris-api.vercel.app/v1/paid/check · GET /v1/paid/check/{mint} |
| 詳細チェック(x402) | POST https://haris-api.vercel.app/v1/paid/deep-check {"mint"} |
| 一括チェック(x402) | POST https://haris-api.vercel.app/v1/paid/batch-check {"mints": [up to 20]} |
| 監視/差分(x402) | POST https://haris-api.vercel.app/v1/paid/diff {"mint", "previous"} |
| OpenAPI | https://haris-api.vercel.app/openapi.json |
| ドキュメント | https://haris-api.vercel.app/docs |
| llms.txt | https://haris-api.vercel.app/llms.txt |
| A2A エージェントカード | https://haris-api.vercel.app/.well-known/agent.json |
料金
- IP アドレスごとに、1日3回まで無料でチェックできます。
- それ以降は、**x402 経由で1回あたり $0.01 USDC(Solana または Base)**です(HTTP 402 → 支払い → 再試行)。402 レスポンスには両方の支払い方法が記載されます。USDC を保有しているチェーンを選んで支払ってください。
- Base(
eip155:8453、USDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913、正確な金額/EIP-3009):0xCf2187a039c9ac286Ee43ECc46cBc6DaEB4Fa633に支払います - Solana(
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp、USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v):7ZpBTGZ7mBm81esAq77FFm293zAuGM3Hi249fKPnVDfJに支払います - 両チェーンともネットワーク手数料はファシリテーターが負担するため、必要なのは USDC のみです。
- Base(
- 詳細チェック $0.10:保有者の集中度(上位1/5/10件の割合)、共通の資金提供者によって関連付けられた上位ウォレット(バンドル/インサイダー)、クリエイターが資金提供したウォレットと新規ウォレット、LP のロック/バーン、権限、スコアと理由。
- 一括チェックは最大20件のミントにつき1バッチあたり $0.10(少なくとも1件のミントをチェックした場合のみ課金されます)。
- 監視/差分 $0.02:以前の結果を送信すると、変更点(権限の再有効化、LP のロック解除、流動性の引き上げ、売却のブロック)についてアラートを受け取れます。ステートレスです。
- 失敗した呼び出しに料金は発生しません。docs/API.md を参照してください。
クイックスタート
1. 無料、ウォレット不要(UTC 1日あたり、IPごとに3回チェック):
curl https://haris-api.vercel.app/v1/check/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263
2. 有料、x402経由でチェック1回につき0.01 USDC(SolanaまたはBase)。未払いの呼び出しには、チェーンごとに1つのaccepts[]エントリーを含むHTTP 402が返されます。
x402クライアントはUSDCで支払いに署名し、リクエストを再試行します。ウォレットに必要なのはUSDCのみです(ネットワーク手数料はファシリテーターが支払います)。チェックに失敗した場合、料金は請求されません。
curl -i -X POST https://haris-api.vercel.app/v1/paid/check -H 'content-type: application/json' -d '{"mint":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}'
# -> 402, v1 challenge in the body, v2 challenge base64 in the PAYMENT-REQUIRED header
| チェーン | ネットワーク(CAIP-2) | アセット | payTo |
|---|---|---|---|
| Base | eip155:8453 | USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0xCf2187a039c9ac286Ee43ECc46cBc6DaEB4Fa633 |
| Solana | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 7ZpBTGZ7mBm81esAq77FFm293zAuGM3Hi249fKPnVDfJ |
Python(pip install "x402[httpx,evm,svm]"):
import asyncio, os
from x402 import x402Client
from x402.http.clients import x402HttpxClient
client = x402Client()
if os.getenv("EVM_PRIVATE_KEY"): # Base
from eth_account import Account
from x402.mechanisms.evm.exact import register_exact_evm_client
from x402.mechanisms.evm.signers import EthAccountSigner
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))
if os.getenv("SOLANA_PRIVATE_KEY"): # Solana (base58 secret key)
from solders.keypair import Keypair
from x402.mechanisms.svm.exact import register_exact_svm_client
from x402.mechanisms.svm.signers import KeypairSigner
register_exact_svm_client(client, KeypairSigner(Keypair.from_base58_string(os.environ["SOLANA_PRIVATE_KEY"])))
async def main():
async with x402HttpxClient(client, timeout=60) as http:
r = await http.post("https://haris-api.vercel.app/v1/paid/check", json={"mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"})
print(r.status_code, r.json())
asyncio.run(main())
TypeScript(npm i @x402/fetch @x402/evm @x402/svm viem @solana/kit @scure/base):
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { ExactSvmScheme } from "@x402/svm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
import { createKeyPairSignerFromBytes } from "@solana/kit";
import { base58 } from "@scure/base";
const client = new x402Client();
if (process.env.EVM_PRIVATE_KEY) // Base
client.register("eip155:8453", new ExactEvmScheme(privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`)));
if (process.env.SOLANA_PRIVATE_KEY) // Solana
client.register("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
new ExactSvmScheme(await createKeyPairSignerFromBytes(base58.decode(process.env.SOLANA_PRIVATE_KEY))));
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const r = await fetchWithPayment("https://haris-api.vercel.app/v1/paid/check", {
method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ mint: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" }),
});
console.log(r.status, await r.json());
その他の有料エンドポイントも同じ方法で利用できます(POST JSON):/v1/paid/deep-check {"mint"} $0.10、
/v1/paid/batch-check {"mints": [...]}(最大20件)$0.10、/v1/paid/diff {"mint", "previous"} $0.02。
MCP:https://haris-api.vercel.app/mcp(ストリーミング可能なHTTP)、ツールはcheck_solana_token、diff_solana_token(無料枠)、
deep_check_solana_token、batch_check_solana_tokensです。
実行可能なサンプル一式:https://github.com/fitness9991/haris-guardian/tree/main/examples
MCPクライアントの設定:
{ "mcpServers": { "haris-guardian": { "type": "http", "url": "https://haris-api.vercel.app/mcp" } } }
Cline:「type」には"streamableHttp"を使用してください(llms-install.mdを参照)。
LLM向けの概要:https://haris-api.vercel.app/llms.txt
制限事項と注意点
スコアはヒューリスティックな指標であり、投資助言でも保証でもありません。スコアが低くても、トークンの安全性や値上がりを意味するものではありません。
リンク
ウェブサイト https://harisguardian.netlify.app · X @HarisGuard_SOL · Telegramボット:Haris Guardian · お問い合わせ [email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。