Risk check of a Base ERC-20 token from live chain state
Risk check of a Base ERC-20 token from live chain state: a buy, wallet transfer and sell simulated from fresh wallets through its pool router (honeypot flag, buy/sell/transfer tax), owner and renouncement, proxy and upgrade admin, mint/blacklist/pause/tax functions in the bytecode, Uniswap and Aerodrome pools with depth and USD price, and a 0–100 score listing each deduction, with a verdict. For pre-trade checks of a Base token. Facts and templates, not financial advice.
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://jotowl.com/v1/base/token-check
| Category | Market data |
|---|---|
| Provider host | jotowl.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 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": {
"tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"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": {
"properties": {
"chain": {
"description": "Base only (the default)",
"enum": [
"base"
],
"type": "string"
},
"requestKey": {
"description": "Optional caller key, as ax1 q-verdict takes it; an identical request within 2 minutes is answered from cache",
"maxLength": 128,
"type": "string"
},
"tokenAddress": {
"description": "The token contract on Base (token or address are read the same way)",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
}
},
"required": [
"tokenAddress"
],
"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": {
"properties": {
"blacklist_capable": {
"type": "boolean"
},
"block": {
"description": "The Base block every fact was read at",
"type": "integer"
},
"buy_tax_pct": {
"type": [
"number",
"null"
]
},
"cannot_buy": {
"type": [
"boolean",
"null"
]
},
"chain": {
"const": "base",
"type": "string"
},
"contract": {
"description": "Code size, ERC-20 conformance, owner, proxy slots, functions found",
"type": "object"
},
"deductions": {
"items": {
"properties": {
"points": {
"type": "integer"
},
"reason": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"disclaimer": {
"type": "string"
},
"grade": {
"description": "The verdict on ax1 q-verdict's scale, in the same order",
"enum": [
"BASED",
"MID",
"COOKED",
"RADIOACTIVE"
],
"type": "string"
},
"is_honeypot": {
"type": [
"boolean",
"null"
]
},
"known_gaps": {
"items": {
"type": "string"
},
"type": "array"
},
"liquidity": {
"description": "Pools against WETH and USDC with reserves, depth, price and LP burned",
"type": "object"
},
"mintable": {
"type": "boolean"
},
"one_liner": {
"maxLength": 60,
"type": "string"
},
"ownership_renounced": {
"type": [
"boolean",
"null"
]
},
"roast": {
"description": "The summary within 220 characters",
"maxLength": 220,
"type": "string"
},
"score": {
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"sell_tax_pct": {
"type": [
"number",
"null"
]
},
"sellable": {
"type": [
"boolean",
"null"
]
},
"simulation": {
"description": "The simulated buy, transfer and sell, or why none ran",
"type": "object"
},
"summary": {
"description": "Sentences templated from the facts",
"type": "string"
},
"supply": {
"description": "Burned, owner's, token contract's and pooled %",
"type": "object"
},
"taxes_changeable": {
"type": "boolean"
},
"token": {
"description": "name, symbol, decimals, total supply, USD price",
"type": "object"
},
"tokenAddress": {
"type": "string"
},
"transfer_pausable": {
"type": "boolean"
},
"transfer_tax_pct": {
"type": [
"number",
"null"
]
},
"upgradeable": {
"type": "boolean"
},
"verdict": {
"enum": [
"low risk",
"caution",
"high risk",
"likely honeypot"
],
"type": "string"
}
},
"required": [
"tokenAddress",
"block",
"token",
"verdict",
"grade",
"score",
"deductions",
"one_liner",
"summary",
"is_honeypot",
"contract",
"liquidity",