Is this ERC-20 token safe to buy, hold or sell?
Is this ERC-20 token safe to buy, hold or sell? Token security check for honeypot, rug pull and scam risk: runs the owner's powers (tax hike, blacklist, mint, seize), then sells through OpenSea's swap, as real holders, up to a year after buying and from your wallet, saying what you get back. Names who can pull liquidity or drain supply, and hidden owners of "renounced" tokens. 18 EVM chains. Evidence per finding; nothing unchecked is called safe.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://tokensafetycheck.xyz/api/token-safety-check
| Category | Market data |
|---|---|
| Provider host | tokensafetycheck.xyz |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"address": "0x10c56f005a379f8eafc88ff5c3f40d30f0031ac9",
"chain": "base"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"description": "One token per call. Invalid input is answered 400 before any payment; a check that fails is not charged. The same token, amount and wallet asked again within 20 s reuses that check (within 5 s if it did not finish; meta.cached_seconds_ago).",
"properties": {
"address": {
"description": "Token contract address (ERC-20) on that chain.",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"amount_usd": {
"description": "Size of the planned trade in USD, tested as given. Not given: $100, or 2% of the pool's depth when that is less (at least $10; $50 when the depth is unknown), so price impact stays small. With wallet + sell: the part of your balance to sell (default: all of it).",
"exclusiveMinimum": 0,
"maximum": 10000000,
"type": "number"
},
"chain": {
"description": "OpenSea chain identifier of the token, as returned by OpenSea get_tokens / get_chains (e.g. \"base\", \"ethereum\", \"robinhood\"). EVM chains only.",
"enum": [
"ethereum",
"base",
"arbitrum",
"optimism",
"polygon",
"avalanche",
"sei",
"ape_chain",
"flow",
"soneium",
"bera_chain",
"unichain",
"hyperevm",
"monad",
"megaeth",
"ink",
"robinhood",
"arc"
],
"type": "string"
},
"detail": {
"description": "standard (default, under 9 KB): decision, reasons and key facts. full: also every raw measurement under `evidence` (9\u201336 KB; some agent shells keep only ~10 KB of output).",
"enum": [
"standard",
"full"
],
"type": "string"
},
"intent": {
"description": "What you came for. The check and the verdict are the same for every intent; the summary answers yours first. check (default): is this token safe to deal with. buy: can I buy and get out later, what can the owner do once I hold it. hold: can I (your wallet) sell now, what changed, what threatens holders. sell: what my sale returns and through whom, the slippage to set, the largest sale that goes through.",
"enum": [
"check",
"buy",
"hold",
"sell"
],
"type": "string"
},
"wallet": {
"description": "Your wallet address (hold / sell): its real balance is sold in simulation, which catches a blacklist on that address. Nothing is signed or sent.",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
}
},
"required": [
"chain",
"address"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}