RugCheck AI — Developer docs
RugCheck reads a token's OKX Onchain OS security data and turns it into a plain-English safety report: a verdict, a 0–100 risk score, the risk flags found, and an optional AI explanation. The deterministic engine produces the facts and the verdict; the AI layer only explains them and never invents data.
Two ways to integrate:
- REST — a simple
GET /rugcheckJSON endpoint. Best for scripts, backends, and quick tests. - MCP (A2MCP) — an
POST /mcpModel Context Protocol tool. Best for AI agents and the OKX.AI marketplace.
Base URL & authentication
https://rugcheck-asp.onrender.com
All endpoints are served from this host. There is no authentication — the service is
public and free. CORS is open (Access-Control-Allow-Origin: *), so browser clients
can call it directly.
Scan a token (REST)
Returns the deterministic safety report for one token. Add ai=1 to attach the AI
analyst section.
| Param | Required | Description |
|---|---|---|
address | required | Token contract address — an EVM 0x… address or a Solana base58 address. |
chain | optional | Chain name (default ethereum). See supported chains. |
ai | optional | Set to 1 to include the AI analysis (ai object). Omit for the deterministic report only. |
mode | optional | AI lens: beginner (default), trader, or developer. |
curl "https://rugcheck-asp.onrender.com/rugcheck?address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&chain=ethereum&ai=1&mode=beginner"
{
"ok": true,
"token": {
"name": "USD Coin", "symbol": "USDC",
"address": "0xa0b8…eb48", "chainIndex": "1",
"logo": "https://…/usdc.png"
},
"market": {
"priceUsd": 1, "liquidityUsd": 2118990968981.7,
"marketCapUsd": 50285230401.6, "holders": 3222383,
"priceChange24H": 0.04
},
"verdict": "OK",
"score": 24,
"headline": "Looks clean, minor notes.",
"found": true,
"riskLevel": "LOW",
"chainSupported": true,
"concerns": [ { "label": "Supply is mintable (owner can dilute)", "weight": "medium" } ],
"positives": [ "No buy/sell tax", "Top 10 holders own 9.9%" ],
"ai": {
"executiveSummary": "USD Coin shows a strong security posture …",
"verdictReason": "…",
"confidence": 88,
"risks": [ { "title": "Mintable supply", "tier": "minor",
"whatItMeans": "…", "whyItMatters": "…", "consequence": "…" } ],
"scamPattern": "",
"keyTakeaway": "…",
"model": "anthropic/claude-opus-4.8"
},
"aiError": null,
"aiAvailable": true,
"disclaimer": "RugCheck reports factual on-chain data from OKX Onchain OS. It is not investment advice."
}
Without ai=1, the ai field is null and the deterministic
report is returned in full — the AI layer is additive and never blocks a scan.
MCP tool (A2MCP)
RugCheck is also a Model Context Protocol server, so AI agents can call it as a tool. The
transport is Streamable HTTP, operated statelessly: send a JSON-RPC 2.0 request with
Content-Type: application/json and read the JSON-RPC response. This is the endpoint
registered on the OKX.AI marketplace (A2MCP).
Methods
initialize— handshake; returns protocol version + capabilities.tools/list— lists the available tools.tools/call— runs a tool.ping— health check.
Tool: rugcheck
| Argument | Type | Description |
|---|---|---|
address | string required | Token contract address (EVM or Solana). |
chain | string | Default ethereum. |
include_ai | boolean | Include the AI explanation (default true). |
mode | string | beginner | trader | developer. |
The result carries the report both as a text block (content[0].text, JSON) and as
structuredContent for clients that support it.
curl -X POST https://rugcheck-asp.onrender.com/mcp \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"my-agent","version":"1.0"}}}'
curl -X POST https://rugcheck-asp.onrender.com/mcp \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"rugcheck",
"arguments":{"address":"0x6982508145454Ce325dDbE47a25d4ec3d2311933",
"chain":"ethereum","include_ai":true,"mode":"trader"}}}'
{
"jsonrpc": "2.0", "id": 2,
"result": {
"content": [ { "type": "text", "text": "{ …the full report as JSON… }" } ],
"structuredContent": { "verdict": "…", "score": 0, "token": { }, "ai": { } },
"isError": false
}
}
https://rugcheck-asp.onrender.com/mcp. A bad
address or unreachable token returns a tool result with isError: true and a plain
message rather than a protocol error.Utility endpoints
{ "ok": true, "service": "rugcheck" }
Reports whether the AI layer is enabled and which model backs it.
{ "enabled": true, "model": "anthropic/claude-opus-4.8" }
Conversational follow-up grounded in a report. Body: { report, messages, mode },
where messages is an array of { role, content }. Used by the web UI's
chat and Explain features.
Response fields
| Field | Meaning |
|---|---|
verdict | OK · CAUTION · AVOID · UNKNOWN. The overall call. |
score | 0–100 risk score (higher = riskier). null when indeterminate. |
riskLevel | OKX's authoritative risk level (LOW/MEDIUM/HIGH/CRITICAL). |
found | false when the token has no data on that chain (wrong chain / bad address) — treat as "check the address and chain". |
concerns[] | Risk flags, each { label, weight } where weight is critical · high · medium. |
positives[] | Reassuring signals confirmed in the data. |
ai | AI analysis (only when ai=1 / include_ai): executiveSummary, verdictReason, confidence, risks[] (tiered critical/important/minor), scamPattern, keyTakeaway, model. |
Supported chains & modes
Chains
ethereumbscbase arbitrumpolygonoptimism avalanchesolana
Modes
- beginner — simple language and analogies.
- trader — liquidity, whale concentration, market/exit risk.
- developer — ownership, mint authority, verification, freeze authorities.
Deep link into the web UI to auto-run a scan:
/?address=0x…&chain=bsc&mode=trader
Errors
Errors return { "ok": false, "error": "…" } with an appropriate status:
| Status | When |
|---|---|
400 | Missing or malformed address. |
502 | Upstream OKX lookup failed. |
503 | /chat called while the AI layer is not configured. |
A valid token with no on-chain data is not an error — it returns 200 with
found: false and an UNKNOWN verdict.