Risk Scoring
How the screener computes token safety ratings
Risk Scoring
The Base Screener actively evaluates smart contracts against multiple safety parameters to shield trading agents from malicious deployments.
Score range
Tokens are scored from 0 (safe) to 100 (extremely risky). A higher score indicates more danger.
Evaluation criteria
| Check | Risk points | How it works |
|---|---|---|
| Honeypot | +50 | Simulates buy/sell constraints through the Honeypot.is engine to detect if tokens can actually be sold after buying |
| Mintable | +20 | Parses contract bytecode for mint(address,uint256) function selector (0x40c10f19), indicating the owner can inflate supply |
| Unverified | +15 | Checks Basescan API for verified source code — unverified contracts score higher risk |
| Liquidity unlocked | +10 | Checks if LP tokens are locked in a locker contract (Unicrypt, Team.finance) |
| Concentrated holders | up to +20 | Calculates top 10 wallet concentration: >80% = +20, >50% = +10 |
Risk score examples
| Token profile | Score | Meaning |
|---|---|---|
| Verified, liquid, distributed | 0–10 | Low risk — safe for agents |
| Unverified, moderate concentration | 25–35 | Medium risk — proceed with caution |
| Honeypot detected | 50+ | High risk — avoid |
| Honeypot + mintable + concentrated | 90+ | Critical risk — do not trade |
Update frequency
Risk scores are computed by the risk-worker cron job running every 5 minutes. New tokens without a risk score are prioritized — up to 20 unscored tokens are processed per cycle.
Using risk data in queries
graphql{ newTokens(maxAgeSeconds: 3600, limit: 20) { tokens { symbol risk { score isHoneypot isMintable isVerified liquidityLocked top10HolderPct } } } }
Agent-side filtering
typescriptconst safe = tokens.filter(t => t.risk.score < 40 && !t.risk.isHoneypot && !t.risk.isMintable )