Tokens / Developers
Free rug check API
DexSheet's rug check, SheetScore, is a free, keyless JSON API. Send any token address on Solana, Ethereum, Base, BNB Chain, Arbitrum, Robinhood Chain or HyperEVM and get a 0–95 score, its band, a confidence level and every check with its source. The same data is available as a token list, a change feed, an MCP server for AI agents and an embeddable badge. All we ask is a link back.
Endpoints
| Endpoint | What it returns |
|---|---|
GET /api/check | SheetScore for one token, listed or not (on-demand check in 5–20 s, then cached 6 h). |
GET /tokens.json | Every token on our hot list with score, band, market snapshot and identity flags. Refreshed about every 15 minutes. |
GET /tokens/changes.json | Band changes, failed rug checks with dated reasons, recoveries and new listings, newest first (30 days). |
GET /tokens/feed.xml | The same changes as RSS. |
POST /mcp | MCP server for AI agents: check_token, trending_tokens, venue-fee tools, and non-custodial swap quotes (swap_quote, swap_submit). |
GET /badge/<chain>/<address>.svg | A dated SheetScore badge for listed tokens. |
GET /api/check
address(required): the token contract address. Solana mint addresses or 0x addresses.chain(optional):solana,ethereum,base,bsc,arbitrum,robinhood,hyperevmorauto. Solana is detected from the address; for a 0x address with no chain we pick the chain where it trades with the most liquidity.
curl -s "https://dexsheet.com/api/check?chain=solana&address=9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump" Response (abridged):
{
"ok": true,
"status": "listed", // listed | cached | fresh
"listed": true, "cached": true, "monitored": true,
"chain": "solana", "chain_name": "Solana",
"address": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
"url": "https://dexsheet.com/token/solana/9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump/",
"symbol": "Fartcoin", "name": "Fartcoin",
"safety": {
"score_name": "SheetScore", "score": 95, "band": "low", "verdict": "pass",
"confidence": "high", "checked_at": "2026-10-29T18:54:12Z",
"summary": "…", "pillars": [ { "id": "exit", "label": "Can you sell?", "weight": 30, "score": 100 }, … ],
"checks": [ { "id": "sell_route", "pillar": "exit", "status": "pass", "label": "…", "detail": "…", "source": "jupiter" }, … ],
"caps_applied": [], "identity": { "kind": "native", … }
},
"market": { "price_usd": 0.1294, "liquidity_usd": 8380000, … },
"market_as_of": "2026-10-29T19:07:01Z",
"methodology_url": "https://dexsheet.com/tokens/methodology/"
} status:listed(on our hot list, re-checked on a schedule),cached(on-demand result under 6 hours old) orfresh(just checked).safetyfollows the published model: pillars and weights, credits, caps and bands are explained in the SheetScore methodology.- Errors return
{ "ok": false, "error": "…" }with status 400 (bad input), 404 (no pools found for a 0x address), 429 (rate limit, withRetry-After) or 503 (daily quota of new checks used).
Rate limits and caching
- Free and keyless. CORS is open (
Access-Control-Allow-Origin: *), so you can call it from a browser. - About 10 new checks per hour per IP. Tokens on our list and tokens already checked in the last 6 hours don't count; fetch them as often as you like.
- About 500 new checks per day across everyone. After that, new checks return 503 until the next day; stored results keep working.
- Cache on your side too: a score changes at most every few hours.
/tokens.jsonand the change feed are edge-cached for 1–5 minutes.
MCP server for AI agents
Endpoint https://dexsheet.com/mcp (Streamable HTTP, stateless), registry name com.dexsheet/mcp. check_token takes an address or a symbol (with an optional chain) and returns the score, band, pillars, checks, other tokens using the name, and where to buy. trending_tokens lists tokens on our hot list. Full docs: MCP server.
claude mcp add --transport http dexsheet https://dexsheet.com/mcp Swaps for agents
The MCP server can also quote and relay token swaps for AI agents, non-custodially. Call swap_quote with the token (contract address or symbol), the side (buy or sell), the amount in the asset you pay (e.g. "0.5 SOL") and your public wallet address as taker.
- Solana: you get back a Jupiter Ultra
request_idand an unsigned transaction. Sign it with your wallet and pass both toswap_submit, which returns the signature and an explorer link. - EVM chains: you get a LI.FI
transaction_requestto sign and broadcast yourself, plus an approval step when you sell an ERC-20. - Fee: every quote includes a 0.5% DexSheet fee, stated in the result, on top of the route's own costs.
- Rug-check gate: each quote is checked first. Buying a token that failed the rug check, or an old contract that migrated to a new address, is refused. Selling one you hold is allowed, with the warning first. Tokens with no completed check (unrated) are refused for both buying and selling. Elevated and high risk are quoted with the warning first.
- Keys: DexSheet never asks for, accepts or stores private keys or seed phrases, and refuses any input that looks like one.
- Quotes expire in about a minute. Limits: 30 quotes per hour per IP, about $25,000 per quote. Not financial advice.
{"name":"swap_quote","arguments":{"chain":"solana","token":"9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump","side":"buy","amount":"0.1 SOL","taker":"<your public wallet address>"}} Badge
Every listed token has a dated badge that updates when we re-check it. Each token page has an "Embed this score" box with the snippet; the pattern is:
<a href="https://dexsheet.com/token/solana/<address>/"><img src="https://dexsheet.com/badge/solana/<address>.svg" alt="SheetScore for <SYMBOL>"></a> Attribution
Wherever you show a SheetScore, link it to the token's DexSheet page (https://dexsheet.com/token/<chain>/<address>/, the url field in every response) and show the check date. Don't present the score as a guarantee: it is an estimate from public on-chain data, and nothing is 100% safe. No other conditions.
Also: the rug checker on the web, the @DexSheetBot Telegram bot, and the hot token list.
FAQ
Is there a free rug check API?
Yes. GET https://dexsheet.com/api/check?chain=<chain>&address=<token> returns DexSheet's SheetScore for any token on Solana, Ethereum, Base, BNB Chain, Arbitrum, Robinhood Chain or HyperEVM as JSON: the 0–95 score, band, confidence, every check with its source, and a market snapshot. No API key. Tokens already checked are free to fetch; new on-demand checks are limited to about 10 per hour per IP.
What does the token security API check?
Five weighted pillars: can you sell (30%), who can change the rules (30%), is the liquidity real (20%), who holds it (12%), track record (8%). That covers mint, freeze, pause and upgrade powers, a sell route or buy/sell simulation, taxes, liquidity depth and collapse, and holder concentration. Any fatal finding caps the score at 10.
Do I need an API key?
No. Every endpoint is public, read-only and CORS-enabled. Please link back to the token's DexSheet page wherever you show the score.
How fresh is the data?
Tokens on our hot list are re-checked every 6 to 24 hours and immediately on a large liquidity drop; /tokens.json and the change feed refresh about every 15 minutes. On-demand checks of other tokens are kept for 6 hours and are not monitored.
Can an AI agent buy a token through DexSheet?
Yes, non-custodially. The MCP tool swap_quote returns an unsigned swap transaction for the agent's own wallet (Jupiter on Solana, LI.FI on EVM chains) with a disclosed 0.5% DexSheet fee; swap_submit relays a signed Solana swap. Buying a token that failed the rug check, or an old contract that migrated to a new address, is refused. Selling one you hold is allowed, with the warning first. Tokens with no completed check (unrated) are refused for both buying and selling. Elevated and high risk are quoted with the warning first. DexSheet never handles private keys.
Can AI assistants use it?
Yes. https://dexsheet.com/mcp is a free MCP server (registry name com.dexsheet/mcp) with check_token and trending_tokens tools, so Claude, Cursor and other agents can check a token before suggesting it.