Eligibility rules

Each cycle, the bot snapshots holders, picks a market-cap tier, and builds the list of wallets that receive a proportional airdrop. Every rule below must pass in the same cycle.

Hold cycles vs hold fund: holdCycles in the tier table is an eligibility streak for holders. Hold fund transparency is separate - it explains the creator's fee-split hold % reserve (dashboard / token page / Stream Studio), not wallet eligibility.
eligibility calculator. Same logic as the engine, no auth, no login. Source on GitHub.

1. Holder snapshot (Helius DAS)

On each mainnet cycle the bot calls getTokenAccounts on your RPC (Helius DAS) with pagination (up to 50 pages, 1000 accounts per page). Balances are aggregated per wallet owner.

All token thresholds in the dashboard and the tier table are expressed in whole tokens - the numbers you would see on Pump.fun or in a wallet UI. The bot converts to base units internally before comparing on-chain balances.

2. Hard exclusions

These addresses never receive a public airdrop:

3. Market-cap tiers

Market cap (USD) is fetched from DexScreener:

GET https://api.dexscreener.com/latest/dex/tokens/{mint}

No API key. Results are cached about 30 seconds. Pump.fun pair is preferred; PumpSwap pair is used after graduation.

The bot picks the tier with the highest mcUsd that is still less than or equal to the current market cap. That tier's minTokens is the floor for this cycle.

If market cap is unknown, the bot falls back to minHolderBalance.

Default tier table (new projects)

MC ≥ (USD)Min tokensHold cycles
0500,0005
50,000450,0006
100,000400,0008
250,000300,00010
500,000220,00012
1,000,000150,00015
2,500,000110,00022
5,000,00075,00030
10,000,00055,00040
15,000,00040,00050
25,000,00030,00060
50,000,00022,00080
100,000,00015,000100

Edit rows in the dashboard Eligibility tiers table (MC, min tokens, hold cycles), then click Save tiers. Tiers are sorted by MC; duplicate MC values are deduplicated. The legacy global holdCyclesRequired field is ignored.

4. Anti-whale cap

maxHolderBalance (default 20,000,000 tokens) excludes wallets that hold more than the cap. Set to 0 to disable.

This only affects the public proportional drop, not dev or program accounts.

5. Hold cycles (per tier)

Each tier row has holdCycles. A wallet must meet the active tier minimum for that many consecutive cycles before it receives tokens. Higher MC tiers require longer streaks (anti-sybil).

History is stored per project in the cloud database between cycles.

6. Proportional split

After buyback, 100% of bought tokens (cloud) are split across final eligible holders in proportion to their balance. Larger bags receive larger drops.

Very small allocations may be skipped when below rent-exempt ATA creation cost.

7. Holder perks (optional)

These features are opt-in per project. They do not replace tiers, hold streaks, or anti-whale rules unless noted.

Holder reward choice

When holderRewardChoiceEnabled is on, eligible holders may save a payout preference (project token, SOL, or USDC) on the token page. Eligibility is unchanged - snapshots and weights still use your project mint. At payout time the engine splits the cycle budget across cohorts by saved preference; wallets without a preference use the dev default from rewardAsset.

X post boost

When socialClaimEnabled is on, anyone can claim a 1-hour boost (default socialBoostDurationMin: 60) by posting on X and submitting the post URL plus one wallet on the token page. Full rules: X post boost configuration.

Claim rules

Effect after hold-cycle gate

Social boost never changes eligibility_history or hold streaks. It only adjusts who receives tokens in cycles while the boost is active:

A holder who holds enough tokens but has not finished the hold streak is not treated as a full eligible holder for boost math until the streak passes - they follow the intro path until then. Payouts use the same creator-fee pool as normal drops.

API: Holder perks API.

Worked example

Market cap = $400k, tier at $250k applies (min 300,000 tokens, hold cycles = 10). Wallet A holds 400,000 tokens and has been in band for 10+ cycles - A receives a share. Wallet A with only 3 consecutive cycles is gated until the streak reaches 10. Wallet B holds 1,000,000 tokens but max holder is 20,000,000 - B is still under cap. Wallet C holds 25,000,000 tokens - excluded by anti-whale.

Configuration reference