SOLANA FsV9…pump 70 /100 · SOLANA 7oyD…pump 0 /100 · SOLANA EJov…pump 25 /100 · SOLANA B6VR…pump 20 /100 · SOLANA ARWh…pump 0 /100 · SOLANA 22PM…FpaN 0 /100 · SOLANA EL8z…XHx5 0 /100 · SOLANA FVWB…pump 0 /100 · SOLANA F2T3…pump 0 /100 · SOLANA Bq9q…yYNv 10 /100 · SOLANA CAHn…hZpF 0 /100 · SOLANA CWYs…Lb4N 20 /100 · SOLANA 7Ydt…BPhB 5 /100 · SOLANA BxwT…pump 0 /100 · SOLANA JB9J…18YB 15 /100 · SOLANA 3vWQ…eL1U 20 /100 · SOLANA Bmrj…pump 0 /100 · SOLANA CScm…pump 0 /100 · SOLANA 6oRN…pump 55 /100 · SOLANA 8Xgw…pump 0 /100 · SOLANA FsV9…pump 70 /100 · SOLANA 7oyD…pump 0 /100 · SOLANA EJov…pump 25 /100 · SOLANA B6VR…pump 20 /100 · SOLANA ARWh…pump 0 /100 · SOLANA 22PM…FpaN 0 /100 · SOLANA EL8z…XHx5 0 /100 · SOLANA FVWB…pump 0 /100 · SOLANA F2T3…pump 0 /100 · SOLANA Bq9q…yYNv 10 /100 · SOLANA CAHn…hZpF 0 /100 · SOLANA CWYs…Lb4N 20 /100 · SOLANA 7Ydt…BPhB 5 /100 · SOLANA BxwT…pump 0 /100 · SOLANA JB9J…18YB 15 /100 · SOLANA 3vWQ…eL1U 20 /100 · SOLANA Bmrj…pump 0 /100 · SOLANA CScm…pump 0 /100 · SOLANA 6oRN…pump 55 /100 · SOLANA 8Xgw…pump 0 /100 ·
Methodology

How the score is built.

Every token starts at 100. Each risk vector deducts points. The remaining number is the overall score; the classification (Safe / Risky / Rejected) follows fixed thresholds. Nothing is hidden — the rubric below is the rubric used in production.

01 · The math

100 minus every
red flag.

Score = 100 − Σ penalties. Tier-based vectors (liquidity, holders, tax, unlock window) pick the first matching bucket from the lowest threshold up. Binary vectors (mint, freeze, proxy, etc.) deduct a flat penalty when the condition is true. The final number is clamped to [0, 100].

Risk vectors
21
Starting score
100
Safe
≥ 75

Verified contract, locked or burned LP, dispersed holders, real metadata.

Risky
40–74

Mixed signals — usually OK contract but thin liquidity or short LP lock.

Rejected
< 40

Multiple structural issues — typically unverified, unlocked LP, top-10 dominate.

02 · Contract

Contract
vectors.

6 checks grouped under contract. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/contract.log
  • Contract not verified contract_not_verified

    Source code is not published — internal logic cannot be inspected.

    −10
  • Mint function exposed has_mint_function

    Owner can issue new tokens at will, diluting holders.

    −20
  • Freeze authority has_freeze_function

    Token transfers can be paused unilaterally.

    −15
  • Blacklist function has_blacklist_function

    Specific addresses can be blocked from trading.

    −15
  • Ownership not renounced ownership_not_renounced

    Deployer still controls the contract owner role.

    −15
  • Proxy contract is_proxy

    Implementation can be swapped, breaking trust assumptions.

    −10
03 · Liquidity

Liquidity
vectors.

5 checks grouped under liquidity. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/liquidity.log
  • Low liquidity low_liquidity

    Pool depth too thin — high slippage and easy rug.

    Tiered
    ≤ $1,000
    −30
    ≤ $10,000
    −15
    ≤ $50,000
    −5
    ≤ ∞
    0
    Liquidity (USD) bucket — first match wins.
  • Liquidity not locked liquidity_not_locked

    LP tokens are still in the deployer wallet.

    −15
  • Liquidity not burned liquidity_not_burned

    LP supply is locked rather than permanently destroyed.

    −5
  • Liquidity unlocks soon liquidity_unlocks_soon

    Active LP lock expires within hours — sell pressure incoming.

    Tiered
    ≤ 1h
    −30
    ≤ 24h
    −15
    ≤ 168h
    −5
    ≤ ∞
    0
    Hours until unlock bucket — first match wins.
  • LP already unlocked liquidity_unlocked_already

    Lock has already expired — deployer can pull liquidity any time.

    −30
04 · Distribution

Distribution
vectors.

3 checks grouped under distribution. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/distribution.log
  • Top 10 holders concentration high_top10_concentration

    A few wallets hold most of the supply.

    Tiered
    ≤ 30%
    0
    ≤ 50%
    −10
    ≤ 70%
    −20
    ≤ 100%
    −30
    Top 10 holders bucket — first match wins.
  • High deployer holdings high_deployer_holdings

    Deployer kept a large slice — exit risk.

    Tiered
    ≤ 5%
    0
    ≤ 15%
    −10
    ≤ 30%
    −20
    ≤ 100%
    −30
    Deployer holdings bucket — first match wins.
  • Coordinated bundling at launch bundling_detected

    First buys came from related wallets in tight time windows.

    −25
05 · Trading

Trading
vectors.

3 checks grouped under trading. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/trading.log
  • Wash trading pattern wash_trading_detected

    Volume looks artificially manufactured between related addresses.

    −20
  • Low holder count low_holder_count

    Too few unique holders — easy to manipulate.

    Tiered
    ≤ 50
    −15
    ≤ 200
    −5
    ≤ ∞
    0
    Holders bucket — first match wins.
  • High transfer tax high_tax

    Buy / sell tax eats positions and signals extractive design.

    Tiered
    ≤ 0%
    0
    ≤ 5%
    −5
    ≤ 10%
    −15
    ≤ 100%
    −25
    Transfer tax bucket — first match wins.
06 · Metadata

Metadata
vectors.

2 checks grouped under metadata. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/metadata.log
  • No website no_website

    No public landing page or whitepaper to reference.

    −5
  • No social media no_social_media

    No X / Telegram presence backing the launch.

    −5
07 · Deployer reputation

Deployer reputation
vectors.

2 checks grouped under deployer reputation. Each one either deducts a flat penalty when triggered, or picks a bucketed penalty from the tier table below.

/flags/deployer_reputation.log
  • Serial rugger deployer deployer_serial_rugger

    Same deployer address has shipped multiple rejected tokens.

    −30
  • Clean deployer history deployer_clean_record

    Past launches from this address mostly hold up — informational, no penalty.

    Info
08 · Deployer reputation

How a deployer
is graded.

Every Solana deployer address gets a separate reputation score (0–100), aggregated from every token they've shipped. The pipeline reads this and either pins a serial-rugger flag or surfaces a clean-record badge — informational, no penalty.

/reputation_formula.txt
base       = 100 × (safe + risky × 0.5) / total_tokens
reputation = clamp( base − rejected × 4, 0, 100 )
Serial rugger
≥ 5 rejected tokens AND reputation ≤ 30
→ flag deployer_serial_rugger (−30)
Clean record
≥ 3 tokens AND reputation ≥ 80
→ flag deployer_clean_record (informational)
09 · Bundling detection

Coordinated
launches.

Roughly five minutes after detection, a separate job pulls the first ~15 buy transactions from the pool, builds three signals, and produces a bundling score (0–1). Threshold 0.4 flips the binary bundling_detected flag (−25).

  • a
    Timing density

    7+ buys landing within 30 seconds contributes most of the score.

  • b
    Amount uniformity

    Coefficient of variation across buy sizes; clustered buys signal automation.

  • c
    Wallet diversity

    Five or more distinct buyers in the cluster bumps the score; sock-puppet heuristic.

Tokens already classified as Rejected are skipped to save RPC budget — bundling won't change their classification anyway.

Disclosure

What this score is, and isn’t.

The score is heuristic and open. It doesn't predict price. It doesn't replace your own due diligence.

It is
  • · A heuristic over public on-chain + metadata signals.
  • · Deterministic given the same inputs.
  • · Re-computed when new data arrives (bundling, unlock state, deployer history).
  • · Open — every threshold lives in config/scoring.php.
It isn’t
  • · Financial advice — trade decisions are yours.
  • · A guarantee — heuristics produce false positives and false negatives.
  • · A price prediction — the score does not measure expected return.
  • · Static — vectors and thresholds evolve as we see new attack patterns.
The radar is on

See your first honest score in two minutes.

Register, build a profile, start scanning. Every signal in the panel matches the rubric you just read.