Formula
5000 is the calibration target — a raw contribution sum of 5,000 normalizes to 10.0. Real-world rug setups often reach raw sums of 20,000+; they all clip to 10.0.
Level bands
Thelevel field bands the numeric score into four categories for UI:
Status
A
partial_data score is a true lower bound — every signal in missing_signals[] is one that could have added to the score had its input been available.
Signals
Twelve signals across six categories. “Graded” signals scale their contribution with the magnitude of the underlying value (e.g.dev_held_high contributes more when the creator holds 30% vs 6%).
Holder concentration (graded)
LP + authority (boolean)
Sniper concentration (graded)
Insider concentration (graded)
Creator behavior (graded)
Metadata (boolean)
Total maximum raw contribution: 53,500 (every signal triggered at full strength).
Why this design
Glass-box so you can audit our judgment. If you disagree with a weight or threshold, you can subtract that signal’scontribution from the raw score and renormalize. The value field on each signal is the concrete measurement, not an opaque score — verifiable against the underlying on-chain data.
Stacking thresholds (e.g. top10_high + top10_very_high) compound penalties for severe concentration without making any single threshold a cliff.
Graded contribution keeps small differences in the underlying data from causing large score jumps. A token at 51% top-10 concentration doesn’t suddenly leap past one at 49%.
Phase 0 strict precedence for dev_held_*: we only fire these when tokens.creator_source is populated. We never fall back to “largest holder is probably the creator” — that produced false positives in pre-Phase-0 testing on tokens where the largest holder was a CEX hot wallet or the AMM pool itself.
Re-computing the score
The response is glass-box on purpose. If you want to weight signals differently:signals[*].value, ignore the weight/contribution, and feed the raw values into whatever you’d prefer.
See also
GET /tokens/{mint}/risk— the dedicated risk endpointGET /tokens/{mint}/intel— slim risk summary embedded in the dashboard payload- Quotas & errors —
/riskis Free-tier rate-limited; no per-endpoint cap

