Comprehensive reference for the aignt-mint-scoring scoring system: categories, hard stops, platform detection, and the JSON output schema.
- Categories
- Risk Levels
- Detailed Scoring Rules
- Hard Stops
- Platform Detection
- API Endpoints Used
- JSON Output Schema
- Example Output
- Limitations
100 points total across five categories:
| Category | Max | Key Checks |
|---|---|---|
| Authority Controls | 25 | Mint revoked (+15), Freeze revoked (+10) |
| Holder Distribution | 20 | Top 10 concentration (+12), Creator holdings (+8) |
| Liquidity | 25 | LP lock % (+15), Rugcheck risk score (+7), No DANGER risks (+3) |
| Metadata & Flags | 15 | Immutable metadata (+8), No transfer fees (+5), Token type (+2) |
| Trust Signals | 15 | Jupiter strict list (+10), Not fake (+3), Validated (+2) |
| Score | Level | Meaning |
|---|---|---|
| 93–100 | Excellent | Very safe, all best practices met |
| 81–92 | Good | Generally safe with minor concerns |
| 70–80 | Moderate | Acceptable but exercise caution |
| 55–69 | Poor | High risk, investigate thoroughly |
| 0–54 | Critical | Very high risk / likely scam |
- Mint authority (
ownerAddress): null/empty = revoked → +15 pts. Active = 0 pts + CRITICAL warning. - Freeze authority (
freezeAuthority): null/empty = revoked → +10 pts. Active = 0 pts + warning. - Non-transferable: If true, Authority Controls score forced to 0 (token cannot be traded).
- Top 10 holders <20% → +12 pts; 20–30% → +10; 30–50% → +6; 50–70% → +3; ≥70% → 0.
- Creator <1% → +8 pts; 1–5% → +6; 5–10% → +4; 10–25% → +2; ≥25% → 0.
- On known bonding curve platforms (Pump.fun etc.) the protocol contract holds unsold supply — this looks like extreme concentration but is not a rug risk. A neutral override score of 10/20 is applied instead of falsely penalising the token.
Data source: rugcheck.xyz /v1/tokens/{id}/report/summary (public, no auth required).
LP lock % (15 pts)
| LP Locked | Points |
|---|---|
| 0% | 0 pts + Critical hard stop (score capped at 5) |
| >0% and <25% | 3 |
| 25–49% | 7 |
| 50–74% | 10 |
| 75–94% | 13 |
| ≥95% | 15 |
Rugcheck risk score (7 pts) — lower raw score = safer
Rugcheck score |
Points |
|---|---|
| None (unavailable) | 0 + warning |
| ≥ 500 | 0 |
| 350–499 | 2 |
| 200–349 | 5 |
| < 200 | 7 |
No DANGER-level risks (3 pts)
DANGER risks in risks[] |
Points |
|---|---|
| 0 | 3 |
| 1 | 1 |
| ≥ 2 | 0 |
When rugcheck data is unavailable (fetch failed), the full 25 pts are granted.
- Immutable metadata → +8 pts. Mutable → 0 + warning.
- No transfer fees → +5 pts. Transfer fee active → 0 + warning.
- Standard SPL token → +2 pts. Token2022 → 0 (noted, not penalised beyond score).
- Jupiter strict list → +10 pts.
- Not flagged as fake → +3 pts. Flagged as fake → Trust score forced to 0.
- Birdeye
isTrueTokenvalidated → +2 pts.
Hard stops are evaluated before normal scoring. When triggered, the final score is capped at the hard stop limit regardless of the category scores. When multiple hard stops trigger, the worst severity determines the cap.
| Severity | Score Cap | Conditions |
|---|---|---|
| 🛑 Critical | 5/100 | Non-transferable token; Fake token flag; Mint authority NOT revoked |
| 🔴 Severe | 20/100 | Creator holds >50%; Top 10 holders >90% |
| 34/100 | Creator holds 30–50%; Top 10 holders 70–90%; Freeze authority NOT revoked | |
| ℹ️ Warning | none | Launch platform not identified (token flagged, score not capped) |
Unknown launch origin is a Warning-level hard stop. Tokens that cannot be attributed to a known launchpad are flagged in the output — but since it is a Warning the score is not capped, allowing the rest of the checks to reflect the token's real quality.
| Condition | Severity | Cap |
|---|---|---|
lp_locked_pct = 0% (or missing) |
🛑 Critical | 5/100 |
Zero locked liquidity means the creator can pull the entire LP at any moment — immediate disqualification regardless of other scores.
The scorer detects the token's launch platform and adjusts scoring to avoid false positives from bonding curve mechanics:
| Platform | Detection Method | Trust Level | Holder Override |
|---|---|---|---|
| Pump.fun | Mint ends with pump |
Audited | 10/20 (neutral) |
| Bonk Launchpad | creatorOwner matches program address |
Community | 10/20 (neutral) |
| Moonshot | creatorOwner matches program address |
Community | 10/20 (neutral) |
| LetsBonk | creatorOwner matches program address |
Community | 10/20 (neutral) |
| Unknown | Fallback | Unknown | Full checks applied |
Detection priority: Pump.fun (mint suffix) → Bonk Launchpad → Moonshot → LetsBonk → Unknown.
The detected platform and trust level are included in the score struct (launch_platform, platform_trust_level) and in the JSON output.
Both endpoints send x-api-key: YOUR_KEY and x-chain: solana headers. The base URL defaults to https://api.uniblock.dev/direct/v1/Birdeye and is configurable via BirdeyeClient::with_base_url or the BIRDEYE_BASE_URL environment variable.
- Token Security:
GET {base_url}/defi/token_security?address=<MINT>
- Token Report Summary:
GET https://api.rugcheck.xyz/v1/tokens/<MINT>/report/summary
Key fields used: lpLockedPct, score, risks[].level.
{
"overall_score": 92.0,
"hard_stop_triggered": false,
"launch_platform": "Unknown",
"platform_trust_level": "Unknown",
"authority_score": 25.0,
"holder_distribution_score": 18.0,
"liquidity_score": 25.0,
"metadata_score": 15.0,
"trust_score": 15.0,
"risk_level": "Excellent",
"warnings": [],
"positive_signals": [
"✓ Mint authority revoked (no inflation risk)",
"✓ Freeze authority revoked (no account freeze risk)"
],
"details": {
"mint_authority_revoked": true,
"freeze_authority_revoked": true,
"mutable_metadata": false,
"top10_holder_percent": 15.2,
"creator_percentage": 0.1,
"is_token2022": false,
"has_transfer_fee": false,
"non_transferable": false,
"jup_strict_list": true,
"is_fake_token": false,
"launch_platform": "Unknown",
"platform_trust_level": "Unknown"
}
}When hard stops are triggered a hard_stop_violations array is included:
{
"overall_score": 5.0,
"hard_stop_triggered": true,
"hard_stop_violations": [
{
"severity": "Critical",
"category": "Authority Control",
"message": "🛑 HARD STOP: Mint authority is NOT revoked",
"description": "The token creator retains mint authority..."
}
]
}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛑 HARD STOP VIOLATIONS DETECTED 🛑
This token has CRITICAL security issues that are deal-breakers:
🛑 HARD STOP: Mint authority is NOT revoked [CRITICAL]
The token creator retains mint authority, allowing them to create
unlimited new tokens at any time...
⚠️ Investment in this token is NOT RECOMMENDED ⚠️
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OVERALL SECURITY SCORE: 5.0/100
(Score capped due to hard stop violations)
LAUNCH PLATFORM: Pump.fun (Audited)
RISK LEVEL: CRITICAL
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OVERALL SECURITY SCORE: 92.0/100
LAUNCH PLATFORM: Unknown (Unknown)
RISK LEVEL: EXCELLENT
Category Breakdown:
Authority Controls: 25.0/25
Holder Distribution: 18.0/20
Metadata & Flags: 15.0/15
Trust Signals: 15.0/15
Liquidity: 25.0/25
Positive Signals:
✓ Mint authority revoked (no inflation risk)
✓ Freeze authority revoked (no account freeze risk)
✓ Excellent distribution: Top 10 holders own 15.2%
✓ Listed on Jupiter strict list (manually verified)