mcpField
H
Haris Guardian - Solana Token Risk Check

Haris Guardian - Solana Token Risk Check

Remote
harisguardian.netlify.appFinance0Updated 1w ago

About Haris Guardian - Solana Token Risk Check

Haris Guardian provides read-only risk checks for Solana SPL and Token-2022 tokens. It is for users assessing token risks and returns a 0–100 score, verdict, and plain-language reasons based on authorities, holder concentration, liquidity, and simulated trades.

Key features

  1. 01Risk score and verdict from 0 to 100
  2. 02Mint and freeze authority checks
  3. 03Token-2022 risk feature checks
  4. 04Holder concentration and liquidity analysis
  5. 05Simulated buy and sell honeypot test
  6. 06Single, batch, and change checks

Use cases

  1. 01Review risk signals for a Solana token
  2. 02Compare changes between token checks
  3. 03Screen multiple mint addresses in a batch
  4. 04Inspect authorities and liquidity before a trade

MCP support

A streamable HTTP MCP endpoint provides token check, deep check, batch check, and diff tools. Checks are read-only and do not sign, trade, or hold keys.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://haris-api.vercel.app/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README
Haris Guardian logo

Haris Guardian — Solana token risk check (MCP + REST + x402)

Read-only scam/rug-risk checks for Solana SPL and Token-2022 tokens. Give it a mint address; get a 0–100 risk score (higher = riskier), a verdict, and plain-English reasons. It never signs, trades, or holds keys.

What it checks

  • Mint and freeze authority
  • Token-2022 traps: permanent delegate, transfer hooks, transfer fees
  • Holder concentration
  • Liquidity, LP burn/lock %, Streamflow locks
  • Simulated buy + sell (honeypot test)

Endpoints

InterfaceURL
MCP (streamable-http)https://haris-api.vercel.app/mcp — tools check_solana_token, diff_solana_token, deep_check_solana_token, batch_check_solana_tokens
REST (free, 3/day)GET https://haris-api.vercel.app/v1/check/{mint}
REST (paid, x402)POST https://haris-api.vercel.app/v1/paid/check · GET /v1/paid/check/{mint}
Deep check (x402)POST https://haris-api.vercel.app/v1/paid/deep-check {"mint"}
Batch check (x402)POST https://haris-api.vercel.app/v1/paid/batch-check {"mints": [up to 20]}
Watch/diff (x402)POST https://haris-api.vercel.app/v1/paid/diff {"mint", "previous"}
OpenAPIhttps://haris-api.vercel.app/openapi.json
Docshttps://haris-api.vercel.app/docs
llms.txthttps://haris-api.vercel.app/llms.txt
A2A agent cardhttps://haris-api.vercel.app/.well-known/agent.json

Pricing

  • 3 free checks per day per IP.
  • After that: $0.01 USDC per check via x402, on Solana or Base (HTTP 402 → pay → retry). Every 402 lists both options; pay with whichever chain you hold USDC on:
    • Base (eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, exact / EIP-3009): pays 0xCf2187a039c9ac286Ee43ECc46cBc6DaEB4Fa633
    • Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v): pays 7ZpBTGZ7mBm81esAq77FFm293zAuGM3Hi249fKPnVDfJ
    • The facilitator pays network fees on both chains, so you need USDC only.
  • Deep check $0.10: holder concentration (top1/top5/top10 %), top wallets linked by a shared funder (bundles/insiders), creator-funded and fresh wallets, LP lock/burn, authorities, score + reasons.
  • Batch check $0.10 per batch of up to 20 mints (charged only if at least one mint is checked).
  • Watch/diff $0.02: send a previous result, get alerts on what changed (authority re-enabled, LP unlocked, liquidity pulled, sell blocked). Stateless.
  • Failed calls are never charged. See docs/API.md.

Quick start

1. Free, no wallet (3 checks per UTC day per IP):

curl https://haris-api.vercel.app/v1/check/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263

2. Paid, $0.01 USDC per check via x402 on Solana or Base. Unpaid calls get HTTP 402 with one accepts[] entry per chain; an x402 client signs a USDC payment and retries. Your wallet needs USDC only (the facilitator pays network fees), and a check that fails is never charged.

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
ChainNetwork (CAIP-2)AssetpayTo
Baseeip155:8453USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130xCf2187a039c9ac286Ee43ECc46cBc6DaEB4Fa633
Solanasolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpUSDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v7ZpBTGZ7mBm81esAq77FFm293zAuGM3Hi249fKPnVDfJ

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());

Other paid endpoints work the same way (POST JSON): /v1/paid/deep-check {"mint"} $0.10, /v1/paid/batch-check {"mints": [...]} (up to 20) $0.10, /v1/paid/diff {"mint", "previous"} $0.02. MCP: https://haris-api.vercel.app/mcp (streamable HTTP), tools check_solana_token, diff_solana_token (free tier), deep_check_solana_token, batch_check_solana_tokens. Full runnable examples: https://github.com/fitness9991/haris-guardian/tree/main/examples

MCP client config:

{ "mcpServers": { "haris-guardian": { "type": "http", "url": "https://haris-api.vercel.app/mcp" } } }

Cline: use "type": "streamableHttp" (see llms-install.md).

LLM-friendly summary: https://haris-api.vercel.app/llms.txt

Limits / honesty

A score is a heuristic signal, not financial advice or a guarantee. A low score does not mean a token is safe or will go up.

Links

Website https://harisguardian.netlify.app · X @HarisGuard_SOL · Telegram bot: Haris Guardian · Contact [email protected]

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.