Scam checks for your bot
One call before every buy: honeypot, hidden taxes, mint/freeze authority, whales, liquidity lock. Websites too. Returns red / yellow / green with reasons.
1. Get a key (easiest)
Buy a pack on the home page (100 checks = $1, 500 = $4, USDC on Base). You get a key like sk_…. Send it in the X-API-Key header.
Python
import requests
API = "https://scam-check.safe-or-scam.workers.dev"
KEY = "sk_your_key_here"
def check_token(address, chain="base"):
r = requests.post(f"{API}/api/check/token",
json={"address": address, "chain": chain},
headers={"X-API-Key": KEY}, timeout=30)
r.raise_for_status()
return r.json()
result = check_token("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "base")
if result["verdict"] == "red":
print("Skip, likely scam:", result["red_flags"])
JavaScript / Node
const API = "https://scam-check.safe-or-scam.workers.dev";
const KEY = "sk_your_key_here";
async function checkToken(address, chain = "base") {
const r = await fetch(API + "/api/check/token", {
method: "POST",
headers: { "content-type": "application/json", "X-API-Key": KEY },
body: JSON.stringify({ address, chain }),
});
return r.json();
}
const res = await checkToken("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
if (res.verdict === "red") console.log("Skip:", res.red_flags);
Check a website
curl -X POST https://scam-check.safe-or-scam.workers.dev/api/check/site \
-H "content-type: application/json" -H "X-API-Key: sk_your_key_here" \
-d '{"url": "metamask-wallet-restore.com"}'
2. Pay per call with x402 (no key, no sign-up)
Agents with a USDC wallet can pay 0.01 USDC per call on Base. Call the endpoint without a key, read the PAYMENT-REQUIRED header, sign, and retry with PAYMENT-SIGNATURE. Any x402 client library does this for you, for example Coinbase's x402 packages (@x402/fetch, x402 for Python).
import { wrapFetchWithPayment } from "@x402/fetch"; // pays automatically on HTTP 402
const pay = wrapFetchWithPayment(fetch, yourWallet);
const r = await pay("https://scam-check.safe-or-scam.workers.dev/api/check/token", {
method: "POST", headers: { "content-type": "application/json" },
body: JSON.stringify({ address: "0x…", chain: "base" }),
});
Machine-readable: /openapi.json · /llms.txt · /.well-known/x402
More endpoints (same key, same x402)
Each call uses 1 credit from a key. Pay-per-call prices are shown.
# Wallet safety ($0.01): scam links, risky approvals
POST /api/check/wallet {"address": "0x…", "chain": "base"}
# Blockchain reads on 8 chains
POST /api/chain/balances {"address": "0x…", "chain": "base"} # $0.003
POST /api/chain/tx {"hash": "0x…", "chain": "ethereum"} # $0.003
POST /api/chain/token {"address": "0x…", "chain": "base"} # $0.002
# Web page to clean Markdown for LLMs
POST /api/read {"url": "https://…", "max_chars": 20000} # $0.003
# Email address check: valid / risky / invalid
POST /api/check/email {"email": "someone@example.com"} # $0.002
If a page or node can't be reached you get 502 and are not charged.
3. MCP server (Claude, ChatGPT, Cursor)
Add this URL as a custom connector / MCP server. Tools: check_token, check_website, check_wallet, get_wallet_balances, get_transaction, get_token_info, read_webpage, check_email. 3 free calls per day.
https://scam-check.safe-or-scam.workers.dev/mcp
Chains & response
Chains: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana.
{
"verdict": "red",
"summary": "🔴 High risk. Likely scam or dangerous…",
"red_flags": ["Honeypot: buyers cannot sell", "Sell tax is 99%"],
"warnings": [], "good_signs": [],
"data": { "name": "…", "symbol": "…", "holder_count": 12 },
"credits_left": 99
}
Bad input returns 400 and costs nothing. Out of checks returns 402.
Automated check from public data (GoPlus, honeypot.is, RDAP, public blockchain nodes). Not financial advice. A green result is not a guarantee. Never share your seed phrase.