Modify the claim card layout, add your own data points, and adjust what triggers notifications.
All claim cards are built in packages/monitor/src/formatters.ts (or packages/channel/src/formatters.ts for the channel bot). The formatter receives a ClaimFeedContext object and returns HTML for Telegram.
| Field | Type | Source |
|---|---|---|
event |
FeeClaimEvent |
On-chain transaction data |
solUsdPrice |
number |
CoinGecko/Jupiter price API |
githubUser |
GitHubUserInfo |
GitHub API (from social fee PDA user ID) |
xProfile |
XProfile |
X/Twitter API (from GitHub profile) |
tokenInfo |
TokenInfo |
PumpFun API (MC, price, status, image) |
creatorProfile |
CreatorProfile |
PumpFun API (creator's other launches) |
repoInfo |
GitHubRepoInfo |
GitHub API (linked repo stars, language) |
holders |
HolderDetails |
PumpFun API (top 10, concentration) |
trades |
TokenTradeInfo |
PumpFun API (recent volume, buy/sell counts) |
devWallet |
DevWalletInfo |
Solana RPC (SOL balance, token holdings) |
liquidity |
PoolLiquidityInfo |
DexScreener API (pool liquidity, MC/Liq ratio) |
bundle |
BundleInfo |
Trench API (bundled early buys) |
allLinkedTokens |
TokenInfo[] |
All tokens this PDA earns fees from |
sameNameTokens |
SameNameToken[] |
Copycat detection (same name, higher MC) |
The card is built top-to-bottom:
- Badge — FIRST CLAIM / REPEAT / FAKE
- CA — Contract address (monospace)
- Token Info — Name, MC, price, status, ATH, liquidity
- All Linked Coins — Every token this user earns fees from
- Claim Stats — Amount, lifetime total, claim number
- Claimed By — Wallet address + pump.fun profile link
- Transaction — Solscan link
- Linked Dev — GitHub profile, repos, followers, X handle
- Repo Claimed — GitHub repo details (if token has GitHub URL)
- Token Creator — Pump.fun creator profile + recent launches
- Dev Wallet — SOL balance
- Market Data — Holders, concentration, bundle info
- Trust Signals — Warnings (rugs, copycats, bundles)
- Same Name Tokens — Copycat detection
- Chart — pump.fun link
- Socials — X, GitHub, website
- Trade Links — Axiom, GMGN, Padre (with referral codes)
- The data is already available in
tokenInfo.createdTimestamp - Find the TOKEN INFO section in
formatters.ts - Add your line:
// In the TOKEN INFO section
if (tokenInfo.createdTimestamp > 0) {
const ageMs = Date.now() - tokenInfo.createdTimestamp * 1000;
const ageDays = Math.floor(ageMs / 86_400_000);
L.push(`📅 Age: ${ageDays} days`);
}In packages/monitor/src/index.ts, find the claim handler and add:
// Skip small claims
if (event.amountSol < 0.01) return;if (!isFirstClaim) return;if (tokenInfo && !tokenInfo.complete) return;Edit the trade links section in formatters.ts:
const axiomUrl = `https://axiom.trade/t/${mint}?ref=YOUR_REF`;
const gmgnUrl = `https://gmgn.ai/sol/token/${mint}?ref=YOUR_REF`;
const padreUrl = `https://trade.padre.gg/rk/YOUR_REF`;Or set them via environment variables:
AXIOM_REF=your_axiom_ref
GMGN_REF=your_gmgn_ref
PADRE_REF=your_padre_ref