{"protocol":"x402","x402Version":2,"schema_version":"2.0","service":"loophole tape","version":"0.9.0","base_url":"https://api.loopholetape.com","payment":{"mode":"x402","protocol":"x402","x402Version":2,"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","asset_symbol":"USDC","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","label":"Solana mainnet","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","asset_symbol":"USDC","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402"},{"network":"eip155:8453","label":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","asset_symbol":"USDC","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402"},{"network":"eip155:4663","label":"Robinhood Chain","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","asset_symbol":"USDG","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","facilitator":"https://facilitator.naven.network"},{"network":"eip155:196","label":"X Layer","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","asset_symbol":"USDT0","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","facilitator":"https://facilitator.payai.network"}],"facilitators":["https://api.cdp.coinbase.com/platform/v2/x402","https://facilitator.naven.network","https://facilitator.payai.network"],"prices_usd":{"keys":2.0,"keys_trial":0.1,"dataset":5.0,"launches_since":0.001,"risk":0.005,"risk_batch":0.01,"verdict":0.01,"launches_screened":0.01,"check_batch":0.04,"mint":0.025,"launches":0.01,"rugs":0.02,"graduations":0.02,"creator":0.02,"wallet":0.02,"rhc_launches":0.01,"rhc_curve":0.02,"rhc_trades":0.02,"mint_holders":0.01,"mint_flow":0.01,"outcome":0.001,"outcome_batch":0.01,"alerts_subscribe":0.1},"how":"Call a priced route; a 402 with a PAYMENT-REQUIRED header comes back listing four accepts entries, USDC on Solana mainnet, USDC on Base, USDG on Robinhood Chain or USDT0 on X Layer (eip155:196); sign the transfer for the network your wallet supports with any x402 v2 client (python `x402[httpx,svm]` / `x402[httpx,evm]`, `@x402/fetch` + `@x402/svm` / `@x402/evm`) and retry with PAYMENT-SIGNATURE; the facilitator pays the network fee on every chain, you need only the stablecoin. USDG and USDT0 are not default assets in the x402 SDKs: allow the one you pay with in the client's spend controls and pick the eip155:4663 or eip155:196 entry. USDT0 on X Layer signs with the EIP-712 domain name \"USD₮0\" (the Tether sign U+20AE), version \"1\"."},"source":"our own real-time capture of every pump.fun / PumpSwap on-chain event, joined with the launch history we observed ourselves","resources":[{"resource":"https://api.loopholetape.com/v1/mint/{mint}","route_template":"GET /v1/mint/:mint","method":"GET","mimeType":"application/json","summary":"Solana token safety card: holders, creator and rug flags for a pump.fun memecoin; authorities and Token-2022 extensions for any SPL mint ($0.025)","description":"Use to check one Solana token in full: every measured field and calibrated odds for a pump.fun memecoin, a thin card for an older mint or any other SPL mint; for a quick pre-trade check use the $0.005 compact check (GET /v1/check/mint). Risk card for ONE pump.fun mint, always HTTP 200 for a valid base58 mint. coverage=full when the mint is in our live window: holders (count, top-5 share, HHI, create-slot bundle / insider / creator shares), rug/close flags with first-seen times, curve truth (graduation = curve witnessed >= 84 SOL), demand (unique buyers, buys/sells 60 s, net SOL), the creator's record at launch (no look-ahead), warm-launch (observed creator-funding links) label, exit signals, calibrated P(rug within 5 min) for young mints and P(true graduation). coverage=thin otherwise: our resolved launch record if any + current bonding-curve state and mint / freeze authority from RPC + creator prior. Any Solana SPL mint, not only pump.fun, gets the thin card: mint / freeze authority and the Token-2022 extensions that let someone seize, block or tax holders' tokens (permanent delegate, transfer hook, transfer fee). Every card carries status, risk_label, confidence, a why[] list and market base rates. Nulls carry a reason; nothing is guessed. Every card also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD, the SOL/USD used and its time) and authorities (mint, freeze and metadata mutability: the pump.fun program rule on live mints, read on-chain on thin cards). A full card also carries the cohorts block: the supply held by the dev, bundlers and snipers with their wallets and SOL in and out of the curve, and top-1 and top-10 share (/v1/labels, cohorts), with the holders' reputation across tokens: the share held by known dumpers, repeat bundlers and wallets new to our tape (/v1/labels, reputation).","price":"$0.025","price_usd":0.025,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"25000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"25000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"25000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"25000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"base58 SPL mint address (32-44 chars); pump.fun mints usually end in 'pump'","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"mint":"So11111111111111111111111111111111111111112","name":"Example","symbol":"EXM","creator":"…","created_at":1788671800.2,"age_s":41.9,"coverage":"full","status":"live_curve","risk_label":"concentrated","confidence":"medium","quote":{"asset":"sol","mint":"11111111111111111111111111111111","modelled":true,"is_sol":true,"holder_rewards":false,"basis":"curve_account","evidence":null,"reason":null},"why":["top-5 holders own 62.1% of supply","create-slot bundle: 4 wallets hold 31.0%","curve 12.4 SOL (14.6% of the way to graduation), 3 buys / 1 sell in the last 60 s"],"curve":{"rs_sol":12.4,"peak_rs_sol":18.9,"progress":0.146,"drawdown_from_peak":0.34,"complete":false,"migrated":false,"graduated":null,"is_mayhem":false,"dev_buy_sol":1.5,"virtual_sol_reserves_sol":42.4,"virtual_token_reserves":759198113207547},"market":{"price_sol":5.58484e-08,"price_usd":1.11697e-05,"market_cap_sol":55.8484,"market_cap_usd":11169.68,"curve_liquidity_sol":12.4,"curve_liquidity_usd":2480.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"demand":{"unique_buyers":41,"buys_60s":13,"sells_60s":7,"net_sol_60s":1.9,"inflow_stalled":false},"holders":{"n_holders":38,"top5_share":0.621,"hhi":0.12,"dev_share":0.0,"bundle_share":0.31,"insider_share":0.03,"n_bundle_wallets":4,"bundle_dumped":false},"exit_signals":{"creator_sold":false,"top5_holder_sold_recent":true,"inflow_stalled":false,"progress_reversed":true},"creator_prior_at_launch":{"n_launches":12,"n_resolved":12,"grad_rate":0.0,"rug_rate":0.58,"median_dev_sell_s":14.2,"is_first_time":false},"warm_launch":null,"rug_flags":[],"flags":{},"base_rates":{"window_days":7,"launches":192354,"grad_rate":0.024,"rug_rate":0.652,"dev_sold_rate":0.645,"reached_5_sol_rate":0.195},"next":{"creator":"/v1/creator/…","regime":"/v1/market/regime","rugs":"/v1/rugs/recent?window_s=600"},"cohorts":{"version":"cohorts-1","top1_share":0.1502,"top10_share":0.7043,"union_share":0.3512,"slot_windows":{"bundlers":[0,1],"snipers":[2,8]},"basis":{"slot_ms":250,"slot_ms_measured":266.9,"regime_from_slot":447984000,"regime_from":"2026-09-18T05:06:43Z","regime_by":"create_slot","bundle_max_offset":1,"sniper_window_s":2.0,"sniper_max_offset":8,"sniper_window_measured_s":2.135},"unbooked_sol":0.0,"shares_complete":true,"sol_complete":true,"sol_reason":null,"dev":{"share_of_supply":0.0,"n_wallets":1,"n_holding":0,"buy_sol":1.5,"sell_sol":1.62,"net_sol":-0.12,"wallets":[{"wallet":"…","share_of_supply":0.0,"first_slot_offset":0,"net_sol":-0.12,"history":{"mints":14,"bundled":0,"quick_sells":9,"settled":11,"rugged":8,"graduated":0}}],"source":"tape+funding_capture","reason":null,"n_funded_by_creator":0},"bundlers":{"share_of_supply":0.31,"n_wallets":4,"n_holding":4,"buy_sol":8.8,"sell_sol":0.0,"net_sol":8.8,"wallets":[{"wallet":"…","share_of_supply":0.1502,"first_slot_offset":0,"net_sol":3.4,"history":{"mints":41,"bundled":38,"quick_sells":37,"settled":30,"rugged":21,"graduated":1}},{"wallet":"…","share_of_supply":0.0791,"first_slot_offset":0,"net_sol":2.6,"history":{"mints":0,"bundled":0,"quick_sells":0,"settled":0,"rugged":0,"graduated":0}},{"wallet":"…","share_of_supply":0.0544,"first_slot_offset":1,"net_sol":1.9,"history":{"mints":6,"bundled":5,"quick_sells":4,"settled":4,"rugged":3,"graduated":0}},{"wallet":"…","share_of_supply":0.0263,"first_slot_offset":1,"net_sol":0.9,"history":{"mints":0,"bundled":0,"quick_sells":0,"settled":0,"rugged":0,"graduated":0}}],"source":"tape","reason":null},"snipers":{"share_of_supply":0.0412,"n_wallets":2,"n_holding":1,"buy_sol":1.95,"sell_sol":0.9,"net_sol":1.05,"wallets":[{"wallet":"…","share_of_supply":0.0412,"first_slot_offset":3,"net_sol":1.1,"history":{"mints":212,"bundled":2,"quick_sells":190,"settled":160,"rugged":101,"graduated":4}},{"wallet":"…","share_of_supply":0.0,"first_slot_offset":4,"net_sol":-0.05,"history":{"mints":57,"bundled":0,"quick_sells":55,"settled":44,"rugged":30,"graduated":1}}],"source":"tape","reason":null},"fresh_wallets":{"share_of_supply":null,"n_wallets":null,"n_holding":null,"buy_sol":null,"sell_sol":null,"net_sol":null,"wallets":null,"source":"unavailable","reason":"not served: no store of ours records a wallet's first-ever activity; reputation.new_wallets_share is the share held by wallets new to our own tape (see /v1/labels, cohorts.fresh_wallets)"},"omitted":{"insiders":"not served: buying before the token was publicly visible is not observable from our capture beyond the create transaction itself (see /v1/labels, cohorts.insiders)"},"reputation":{"version":"reputation-1","status":"ready","known_dumpers_share":0.2731,"repeat_bundlers_share":0.2046,"new_wallets_share":0.221,"n_known_dumpers":5,"n_repeat_bundlers":2,"n_new_wallets":14,"n_holders":38,"basis":{"tape_since":"2026-09-27T00:18:34Z","history_from":"2026-09-27T00:19:00Z","history_to":"2026-09-28T07:43:11Z","history_hours":31.4,"gaps":0,"store_lag_s":0.8,"quick_sell_s":60,"min_prior_mints":3,"retention":"history since tape_since; a wallet seen on one mint is forgotten 14 days after it was last seen; wallets on 2+ mints are kept (cap 2,000,000, least recently seen first)","labels":"/v1/labels (reputation)"},"reason":null}}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.025,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"thin","data":{"mint":"…pump","coverage":"thin","coverage_reason":"not in the live window; history + on-chain state only","status":"onchain_only","risk_label":"unknown","confidence":"low","quote":{"asset":"sol","mint":"11111111111111111111111111111111","modelled":true,"is_sol":true,"holder_rewards":false,"basis":"curve_account","evidence":null,"reason":null},"why":["no live tape for this mint","bonding curve open: 5.42 SOL real, 20.7% of tokens sold","creator prior: 3 launches, 0 graduations, 2 rugged"],"history":null,"history_reason":"mint not in the available launch history","onchain":{"slot":445629740,"exists":true,"is_token_mint":true,"token_program":"spl-token-2022","decimals":6,"supply_ui":1000000000.0,"mint_authority":null,"freeze_authority":null,"token2022_risks":[],"metadata":{"source":"token2022","update_authority":null,"pointer_authority":null,"mutable":false},"pump_fun":{"is_pump_fun":true,"bonding_curve":"…","complete":false,"real_sol_reserves_sol":5.417,"virtual_sol_reserves_sol":35.417,"progress":0.207,"price_sol_per_token":3.9e-08,"market_cap_sol":38.97,"creator":"…","cashback_enabled":false,"is_mayhem_supply":false,"is_mayhem_mode":false}},"market":{"price_sol":3.9e-08,"price_usd":7.8e-06,"market_cap_sol":39.0,"market_cap_usd":7800.0,"curve_liquidity_sol":5.417,"curve_liquidity_usd":1083.4,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"onchain"},"creator_prior":{"n_launches":3,"grad_rate":0.0,"rug_rate":0.667},"base_rates":{"window_days":7,"launches":192354,"grad_rate":0.024,"rug_rate":0.652},"next":{"creator":"/v1/creator/…","regime":"/v1/market/regime"},"cohorts":null,"cohorts_reason":"not in the live window: the cohort block needs our holder ledger and trade tape from the launch"},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.025,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"latency_ms":{"full":15,"thin":300},"freshness_s":{"full":2,"thin":1},"mcp_tool":"mint_risk_card","query_form":"https://api.loopholetape.com/v1/mint?mint={mint}","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"mint":"…","coverage":"full","status":"live_curve","risk_label":"concentrated","confidence":"medium","why":["top-5 holders own 62.1% of supply"],"curve":{"rs_sol":12.4,"progress":0.146,"graduated":null},"demand":{"unique_buyers":41,"buys_60s":13},"holders":{"top5_share":0.621,"bundle_share":0.31},"creator_prior_at_launch":{"n_launches":12,"rug_rate":0.58},"rug_flags":[],"base_rates":{"grad_rate":0.024,"rug_rate":0.652}}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/launches/recent","route_template":"GET /v1/launches/recent","method":"GET","mimeType":"application/json","summary":"New Solana tokens: pump.fun memecoins launched in the last hour, with holder, creator and rug-flag labels","description":"Use to screen the new Solana tokens launched on pump.fun in the last hour in one call; to poll continuously use the $0.001 delta feed (GET /v1/launches/since, MCP launches_since), and for one mint the $0.005 rug check. Recent pump.fun launches (default: last hour, mayhem excluded, newest first) as compact cards: curve SOL and progress, unique buyers, holder concentration, create-slot bundle/insider/dev shares, the creator's record at launch (launches, grad rate, rug rate; no look-ahead), warm-launch label, rug flags with first-seen times. The funnel for a screener: filter by min_rs / only_alive and then buy full cards for the survivors. Each item also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD) and authorities (mint, freeze, metadata; the pump.fun program rule).","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":100,"description":"max items"},"max_age_s":{"type":"number","default":3600,"minimum":30,"maximum":21600,"description":"only mints created within this many seconds"},"exclude_mayhem":{"type":"boolean","default":true,"description":"drop mayhem-class (2B supply, AI walker) launches"},"min_rs":{"type":"number","default":0,"minimum":0,"description":"minimum curve SOL right now"},"only_alive":{"type":"boolean","default":false,"description":"drop mints with any rug/close flag"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":2,"items":[{"mint":"…","age_s":412.3,"curve":{"rs_sol":3.2,"progress":0.04},"holders":{"bundle_share":0.31,"top5_share":0.44},"demand":{"unique_buyers":12},"creator_prior_at_launch":{"n_launches":0,"is_first_time":true},"rug_flags":[],"market":{"price_sol":3.42417e-08,"price_usd":6.84834e-06,"market_cap_sol":34.2417,"market_cap_usd":6848.34,"curve_liquidity_sol":3.2,"curve_liquidity_usd":640.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"}}]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":25},"freshness_s":{"full":2},"mcp_tool":"pumpfun_recent_launches","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"mint":"…","age_s":412.3,"curve":{"rs_sol":3.2},"holders":{"bundle_share":0.31},"rug_flags":[]}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/rugs/recent","route_template":"GET /v1/rugs/recent","method":"GET","mimeType":"application/json","summary":"Recent pump.fun memecoin rug and close flags with mechanism labels","description":"Use to see which Solana memecoins fired rug or close flags in a recent window and by which mechanism; not a check on a mint you hold (use the $0.005 rug check, GET /v1/check/mint). Rug and close flags fired in the window (newest first), each with its mechanism (creator_sold, bundle_dumped, curve_drained, pool_drained, curve_closed_low, migrate_below_grad), the flag time, the mint's age at the flag, peak and current curve SOL, name/symbol/creator. Use it to review observed risk events and their frequency. `window` says how much of the window the feed saw (covered_from, complete); rugs from before the live feed's start come from our launch table (flag rug_label, source launch_table, window.table_fill).","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":200,"description":"max items"},"window_s":{"type":"number","default":3600,"minimum":60,"maximum":21600,"description":"look-back window in seconds"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":1,"items":[{"t":1788671846.0,"mint":"…","flag":"curve_drained","detail":{"peak_rs":18.97,"rs":0.23},"mint_age_at_flag_s":7.3,"creator":"…"}]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":10},"freshness_s":{"full":2},"mcp_tool":"recent_rugs","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"t":1788671846.0,"mint":"…","flag":"curve_drained","mint_age_at_flag_s":7.3}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/graduations/recent","route_template":"GET /v1/graduations/recent","method":"GET","mimeType":"application/json","summary":"Recent pump.fun graduations labelled true graduation vs below-threshold close","description":"Use to list recent pump.fun memecoin migrations and tell true graduations from below-threshold closes; not a live pre-trade rug check on one mint (use the $0.005 compact check, GET /v1/check/mint). Migrations to PumpSwap in the window (default 6 h), each labelled graduated=true only when we witnessed the curve at >= 84 SOL, otherwise a below-threshold close (mayhem or operator pools). Each item is a compact card with the migrate time, pool, peak curve SOL and the holder/creator labels. A true graduation carries seconds_to_graduation and graduation_label: instant_bundle (migrated within 2 s of launch, never enterable) or organic, the rule of /graduations. `window` says how much of the window the feed saw (covered_from, complete); true graduations the live feed missed come from our launch table (source launch_table, window.table_fill). Every item carries pool_30m: what the PumpSwap pool did in its first 30 minutes (collapsed and when, or the price against the open), null with the reason while they are not over.","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":100,"description":"max items"},"window_s":{"type":"number","default":21600,"minimum":60,"maximum":86400,"description":"look-back window in seconds"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":1,"items":[{"mint":"…","migrate_t":1788671128.2,"graduated":true,"seconds_to_graduation":152.6,"graduation_label":"organic","curve":{"peak_rs_sol":85.005,"pool":"…"}}]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":15},"freshness_s":{"full":2},"mcp_tool":"recent_graduations","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"mint":"…","migrate_t":1788671128.2,"graduated":true,"curve":{"peak_rs_sol":85.0}}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/creator/{address}","route_template":"GET /v1/creator/:address","method":"GET","mimeType":"application/json","summary":"Creator reputation for a pump.fun dev wallet: past launches, graduations and rugs","description":"Use to judge a new memecoin by its creator's earlier pump.fun launches on Solana (graduated or rugged) before buying; for the launch's own live evidence use the compact check (GET /v1/check/mint) or the full card (GET /v1/mint/{mint}). Creator stats over every launch we have seen from this wallet, counting only outcomes known at request time: n_launches, resolved, graduations witnessed at >= 84 SOL, rugs by drain or dev dump, median seconds to the dev's first sell, total dev buys; the last 25 launches with outcomes; the creator's live mints right now; and whether the wallet was funded in the last 30 min (warm launch). Empty stats (is_first_time=true) for a wallet we never saw launch.","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"address":{"type":"string","description":"base58 wallet address","example":"11111111111111111111111111111111"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"creator":"…","stats":{"n_launches":63,"n_resolved":60,"grad_rate":0.0,"rug_rate":0.71,"median_dev_sell_s":14.2,"is_first_time":false},"pumpfun_recent_launches":[{"mint":"…","t0":1788600000.0,"graduated":0,"rugged":1,"rug_dt_s":22.0,"peak_rs":6.1}],"live_mints":[],"funded_recently_by":null},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":20},"freshness_s":{"full":2},"mcp_tool":"creator_reputation","query_form":"https://api.loopholetape.com/v1/creator?address={address}","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"creator":"…","stats":{"n_launches":63,"grad_rate":0.0,"rug_rate":0.71},"live_mints":[]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/wallet/{address}","route_template":"GET /v1/wallet/:address","method":"GET","mimeType":"application/json","summary":"Solana wallet profile: class and realised PnL from our pump.fun leaderboard, plus holdings","description":"Use to classify a wallet buying a pump.fun memecoin (insider, latency_bot or skilled) and read its realised PnL when it ranks on our leaderboard; it describes the wallet, not a mint's rug risk (use GET /v1/check/mint). An unranked wallet gets a null class and no PnL. A ranked wallet carries its class and rank with stats (realised PnL in SOL, win rate, positions) from our realised-PnL leaderboard over the pump.fun trades we captured (window and build time in the response); every wallet gets its holdings among the last 3000 mints (token share, first-buy slot, curve SOL now), creator stats if it ever launched, and its recent funding source. Use it to weight the buyers on a curve.","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"address":{"type":"string","description":"base58 wallet address","example":"11111111111111111111111111111111"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"wallet":"…","leaderboard":{"class":"skilled","rank":17,"stats":{"n_positions":120,"realized_pnl_sol":14.2,"win_rate":0.62}},"as_creator":null,"live_holdings_recent_mints":[{"mint":"…","tokens_share":0.012,"first_buy_slot":445600000,"rs_sol":4.1}]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":20},"freshness_s":{"full":2},"mcp_tool":"wallet_profile","query_form":"https://api.loopholetape.com/v1/wallet?address={address}","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"wallet":"…","leaderboard":{"class":"skilled","rank":17},"live_holdings_recent_mints":[]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/rhc/launches/recent","route_template":"GET /v1/rhc/launches/recent","method":"GET","mimeType":"application/json","summary":"Robinhood Chain (pons) new memecoin launches with holder, creator-tax and ring structure","description":"Use to screen or poll new pons memecoin launches on Robinhood Chain (4663), optionally ring-shaped ones only; one token's full risk card is GET /v1/rhc/curve/{address}. Not for Solana. Recent pons memecoin launches on Robinhood Chain (chain 4663; default last hour, newest first) as compact structure cards: raised (ETH), progress to the 4.2 ETH graduation, price multiple vs launch (exact curve reserves), the launch's trade fee and creator tax in bps (fees.creator_tax_bps: 0-1000 under the current on-chain cap, chosen by the creator, charged on every buy and sell), snipe-tax activity, holder concentration (top-1 / top-5 / HHI), same-block direct-buy cluster share (matching timing, not proof of coordination), terminal-vs-direct route mix with the terminal router transactions joined to their wallets, inflow (new buyers in the last 2 / 6 s), lifecycle (live / complete / graduated). Every card carries a ring block: the RING SCREEN flags the same-block direct-buy cluster structure our own capture measured (unique_buyers >= 8 and same-block direct-buy cluster share >= 0.5; on pons v2 such a cluster is often the team's own opening bundle, exempt from the snipe tax at launch); ring_only=true returns just those curves, and the response carries the rule with its measured base rates (14.5% of launches, 47% dumped, median 0.37x terminal in the 2026-09-06/07 window) so you can price the flag yourself. Matching timing is not proof of coordination. Filter pair=eth for ETH-paired curves or min_buys for a minimum observed activity count. Poll with since=<next_cursor> to receive only launches you have not seen, oldest first. Each item also carries verdict (avoid / caution / no_flags_observed) and basis, the rule ids of the fixed public rule (LABELS rhc_verdict at /v1/labels) that fired; the curve card gives each reason with its evidence and base rate.","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":200,"description":"max items"},"max_age_s":{"type":"number","default":3600,"minimum":30,"maximum":21600,"description":"only launches within this many seconds"},"pair":{"type":"string","default":"any","enum":["any","eth"],"description":"eth = only ETH-paired curves (price multiple defined)"},"only_live":{"type":"boolean","default":false,"description":"drop completed / graduated curves"},"min_buys":{"type":"integer","default":0,"minimum":0,"description":"minimum curve buys observed"},"ring_only":{"type":"boolean","default":false,"description":"ring screen: only curves matching the measured same-block direct-buy cluster structure (unique_buyers >= 8 and same_block_direct_cluster_share >= 0.5)"},"since":{"type":"number","minimum":0,"example":1789228000.0,"description":"polling cursor, unix seconds: only launches after it, oldest first, with next_cursor and truncated in the answer (pass next_cursor back; max_age_s is ignored); a cursor older than the 6 h launch index gets the newest page instead, with cursor.clamped=true and cursor.skipped_before_page"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":1,"items":[{"curve":"0x1d63…a855","token":"0x57b4…97db","age_s":52.5,"status":"live_curve","coverage":"full","raised":{"eth":0.120987,"progress":0.0288,"price_multiple_vs_launch":1.1492},"fees":{"trade_fee_bps":100,"creator_tax_bps":200},"structure":{"n_holders":6,"top1_share":0.6777,"same_block_direct_cluster_share":0.0834,"direct_buy_share":0.9062,"terminal_holdings_share":0.1987},"ring":{"ring_class":false,"unique_buyers":31,"same_block_direct_cluster_share":0.0834},"flow":{"n_buys":32,"n_sells":30,"unique_buyers":31,"new_buyers_last_6s":0,"last_trade_age_s":33.1},"verdict":"caution","basis":["top1_concentrated"]}],"ring_rule":{"name":"ring_class","rule":"unique_buyers >= 8 and structure.same_block_direct_cluster_share >= 0.5","base_rates":{"share_of_launches":0.145,"p_dump":0.47,"median_terminal_multiple":0.37},"measured_on":"our own pons v2 event capture, 2026-09-06/07"}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":60},"freshness_s":{"full":3},"mcp_tool":"rhc_recent_launches","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"curve":"0x…","age_s":52.5,"status":"live_curve","raised":{"eth":0.12,"progress":0.029},"structure":{"top1_share":0.68,"same_block_direct_cluster_share":0.08,"terminal_holdings_share":0.2},"flow":{"n_buys":32,"unique_buyers":31},"verdict":"caution","basis":["top1_concentrated"]}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/rhc/curve/{address}","route_template":"GET /v1/rhc/curve/:address","method":"GET","mimeType":"application/json","summary":"Robinhood Chain token risk card for one pons v2 memecoin: verdict, holders, tax, sell check","description":"Use when you hold or are about to trade one pons v2 token on Robinhood Chain and need a verdict by a fixed public rule, its holders, creator tax, deployer record, ring screen and an exact sell check; to find launches use GET /v1/rhc/launches/recent. Not for Solana mints. The verdict (avoid / caution / no_flags_observed, the fixed public rule LABELS rhc_verdict at /v1/labels, with basis, reason and up to three reasons carrying their evidence and measured base rate): avoid while a charged buy pays >= 618 bps of snipe tax or when the 3 s holder structure matched the ring rule; caution on a creator tax >= 500 bps, a top holder >= 50%, a deployer with >= 3 earlier launches and no graduation, a curve at <= 50% of its peak price 30 min after launch without graduating, a missing or pending 3 s snapshot, or a completed or graduated curve. deployer_record: the deployer's earlier launches on our tape, how many graduated or matched the ring rule at 3 s, the median peak and terminal multiples. sell_check: buy and sell tax in bps, the exact quote for selling 1% of supply and a 0.01 ETH round trip in bps from the recorded reserves (graduated tokens: the pool's taxes, no quote). Full structure card for ONE pons v2 curve on Robinhood Chain, addressed by curve or token address (0x…): launch facts (block, deployer, pair token, graduation threshold), raised / progress / price multiple vs launch (exact curve reserves, ETH-paired curves), the launch's trade fee and creator tax in bps (fees block; the creator tax is charged on every buy and sell and is invisible to three-word event parsers), snipe-tax activity, holder ledger concentration (top-1 / top-5 / HHI / deployer share), same-block direct-buy cluster share and wallets, max direct buys in one 100 ms block, terminal-vs-direct route mix with terminal holdings share, flow (buys / sells / unique buyers / new buyers in the last 2 and 6 s / last trade age / volumes), lifecycle (completed / graduated blocks and delays, refunds), the trade_cost block (for a 0.01 and a 0.05 ETH clip at the curve's reserves now, exact with fee and creator tax on both legs and own impact: fill price vs marginal, the immediate round trip, and the price rise from now needed to break even), and the ring block: the same-block direct-buy cluster screen (unique_buyers >= 8 and same-block direct-buy cluster share >= 0.5) our own capture measured at 14.5% of launches, 47% dumped, median 0.37x terminal; matching timing is not proof of coordination, and on pons v2 such a cluster is often the team's own opening bundle, exempt from the snipe tax at launch. coverage=full for curves launched inside our event window (last ~2 h, trades observed from block 0); thin = launch facts + lifecycle only, with a reason. Always 200 for a valid address.","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"address":{"type":"string","format":"evm-address","description":"0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain","example":"0x1d63d24f2d6e726fa53c45cefcbee2c1b8ffa855"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"curve":"0x1d63…a855","token":"0x57b4…97db","deployer":"0x5e52…7c97","pair_token":"0x0000000000000000000000000000000000000000","pair_kind":"eth","launch_block":58633592,"launched_at":1788965713.3,"age_s":52.5,"coverage":"full","status":"live_curve","raised":{"quote_units":"120987126950004875","eth":0.120987,"progress":0.0288,"price_multiple_vs_launch":1.1492},"fees":{"trade_fee_bps":100,"creator_tax_bps":200},"snipe_tax":{"in_tax_window":false,"n_taxed_buys":10,"tax_total_eth":0.014421},"trade_cost":{"clips":[{"clip_eth":0.01,"fits_before_graduation":true,"tokens_out":"4348418913940199952844446","entry_vs_marginal_pct":3.648,"round_trip_now_eth":0.009409,"round_trip_now_pct":-5.91,"break_even_price_move_pct":7.447,"break_even_needs_graduation":false},{"clip_eth":0.05,"fits_before_graduation":true,"tokens_out":"21285971757591692929420684","entry_vs_marginal_pct":5.869,"round_trip_now_eth":0.047045,"round_trip_now_pct":-5.91,"break_even_price_move_pct":12.175,"break_even_needs_graduation":false}],"reason":null,"creator_tax_bps":200,"trade_fee_bps":100},"structure":{"n_holders":6,"top1_share":0.6777,"top5_share":0.9744,"hhi":0.5026,"deployer_holding_share":0.0,"same_block_direct_cluster_share":0.0834,"same_block_direct_cluster_wallets":26,"max_direct_buys_in_one_block":16,"direct_buy_share":0.9062,"terminal_buy_share":0.0938,"terminal_holdings_share":0.1987,"routes":{"direct":29,"gmgn":2,"pons_launchbuy":1},"router_join_resolved_share":0.9062},"ring":{"ring_class":false,"unique_buyers":31,"same_block_direct_cluster_share":0.0834,"rule":"unique_buyers >= 8 and structure.same_block_direct_cluster_share >= 0.5"},"flow":{"n_buys":32,"n_sells":30,"unique_buyers":31,"unique_sellers":29,"buys_last_6s":0,"sells_last_6s":0,"new_buyers_last_2s":0,"new_buyers_last_6s":0,"first_buy_after_s":0.0,"last_trade_age_s":33.1,"buy_volume_eth":1.001847,"sell_volume_eth":0.88086},"lifecycle":{"completed_block":null,"graduated_block":null,"graduated_after_s":null,"n_refunds":0},"verdict":"caution","basis":["top1_concentrated"],"reason":"No avoid rule fired, but one wallet holds 68% of the tokens bought on the curve (6 holders); selling them now would move the price -9.1%.","reasons":[{"code":"top1_concentrated","word":"caution","text":"one wallet holds 68% of the tokens bought on the curve (6 holders); selling them now would move the price -9.1%","evidence":{"top1_share":0.6777,"n_holders":6,"is_deployer":false,"price_move_if_sold_pct":-9.09},"base_rate":"at 3 s, 82% of ETH launches 2026-09-19..25 with a holder snapshot had a top holder at 50% or more, and 0.89% of those graduated against 2.84% of the rest (n=22,947 / 5,042)"}],"reasons_total":1,"not_evaluated":[],"verdict_rules":"/v1/labels","deployer_record":{"address":"0x5e52…7c97","shared_contract":null,"prior_launches":4,"prior_graduated":1,"history_since":"2026-09-06","as_of_block":58633600,"recent_priors":{"read":4,"in_record_index":4,"with_3s_snapshot":4,"ring_class_3s":1,"not_graduated_eth_final":3,"median_peak_multiple":1.84,"median_terminal_multiple":1.02}},"sell_check":{"status":"ok","venue":"bonding_curve","sellable":true,"buy_tax_bps":300,"sell_tax_bps":300,"creator_tax_bps":200,"snipe_tax_bps_now":0,"sell":{"tokens":"10000000000000000000000000","share_of_supply":0.01,"capped_at_tokens_out_of_curve":false,"quote_out_wei":"18529032402763262","quote_out_eth":0.018529032,"gross_wei":"19102095260580681","fee_wei":"191020952605806","creator_tax_wei":"382041905211613","avg_price_vs_marginal_pct":-1.0606,"price_after_vs_now_pct":-2.11},"round_trip":{"clip_eth":0.01,"fits_before_graduation":true,"tokens":"4997203015900077957338776","quote_back_wei":"9409000000000001","quote_back_eth":0.009409,"cost_bps":591.0,"snipe_tax_bps":0},"reserves":{"Q":"1800987126950004875","T":"932821770272784709919533564","last_block":58633617}}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"thin","data":{"address":"0x…","coverage":"thin","known":false,"status":"unknown","coverage_reason":"not a pons v2 curve/token launched in the last 6 h"},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"latency_ms":{"full":20},"freshness_s":{"full":3},"mcp_tool":"rhc_curve_card","query_form":"https://api.loopholetape.com/v1/rhc/curve?address={address}","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"curve":"0x…","status":"live_curve","coverage":"full","raised":{"eth":0.12,"progress":0.029,"price_multiple_vs_launch":1.15},"structure":{"n_holders":6,"top1_share":0.68,"same_block_direct_cluster_share":0.08,"direct_buy_share":0.91,"terminal_holdings_share":0.2},"flow":{"n_buys":32,"n_sells":30,"unique_buyers":31,"new_buyers_last_6s":0},"verdict":"caution","basis":["top1_concentrated"],"sell_check":{"status":"ok","buy_tax_bps":300,"sell_tax_bps":300}}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/rhc/curve/{address}/trades","route_template":"GET /v1/rhc/curve/:address/trades","method":"GET","mimeType":"application/json","summary":"Robinhood Chain pons memecoin curve: reserves and price after every trade","description":"Use when you index or price a pons curve and need the reserves after each trade, which the deployed curves do not emit; check your own numbers first on the free sample GET /v1/rhc/sample/trades?address=. Reserves of one Robinhood Chain memecoin curve rebuilt to the wei with the exact four-word pons v2 model from its public events in our own capture. Per buy, sell and fee-sweep buyback in block order: amounts, fee, snipe and creator tax, Q and T after it (getReserves()), price Q/T, multiple vs launch, share of the 4.2 ETH graduation raised, a check against the prior state, next_cursor. ETH-paired curves up to 90 min old.","price":"$0.02","price_usd":0.02,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"20000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"20000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"address":{"type":"string","format":"evm-address","description":"0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain","example":"0x1d63d24f2d6e726fa53c45cefcbee2c1b8ffa855"}},"query":{"type":"object","properties":{"since":{"type":"string","maxLength":40,"example":"70746901:1","description":"optional start, exclusive: next_cursor 'block:log_index' of the previous page, a block number, or unix seconds (values >= 1e9); omitted = from the curve's first trade"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500,"description":"events per page (1-500)"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"curve":"0x…","token":"0x…","status":"live_curve","fees":{"trade_fee_bps":100,"creator_tax_bps":200,"snipe_tax_blocks":30},"count":2,"items":[{"block":70746901,"log_index":1,"tx":"0x…","block_ts":1790190110,"side":"buy","sender":"0x65050a9b7e5075a2ba5ced7b1b64ee66262c40dc","recipient":"0x4444444444444444444444444444444444444444","route":"gmgn","quote_in":"100000000000000000","quote_out":null,"tokens_in":null,"tokens_out":"54586381541924592009003939","fee":"1000000000000000","snipe_tax":"0","creator_tax":"2000000000000000","reserves_after":{"Q":"1777000000000000000","T":"945413618458075407990996061","real_quote":"97000000000000000"},"price_after":1.879600595238095e-09,"price_multiple":1.11881,"raised_fraction":0.023095,"check":"exact"},{"block":70746955,"log_index":3,"tx":"0x…","block_ts":1790190115.4,"side":"sell","sender":"0x4444444444444444444444444444444444444444","recipient":"0x4444444444444444444444444444444444444444","route":"direct","quote_in":null,"quote_out":"48365036158518949","tokens_in":"27293190770962296004501969","tokens_out":null,"fee":"498608620190916","snipe_tax":"0","creator_tax":"997217240381833","reserves_after":{"Q":"1727139137980908302","T":"972706809229037703995498030","real_quote":"47139137980908302"},"price_after":1.7756009535389494e-09,"price_multiple":1.056905,"raised_fraction":0.011224,"check":"exact"}],"next_cursor":"70746955:3","more":false,"next_url":"/v1/rhc/curve/{address}/trades?since=70746955:3","replay":{"events_checked":2,"status":"all_events_checked","unverified_event":null}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.02,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":30},"freshness_s":{"full":3},"mcp_tool":"rhc_curve_trades","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"curve":"0x…","count":1,"next_cursor":"70746901:1","more":false,"items":[{"block":70746901,"log_index":1,"side":"buy","reserves_after":{"Q":"1777000000000000000","T":"945413618458075407990996061"},"price_after":1.8796e-09,"check":"exact"}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/keys/new","route_template":"GET /v1/keys/new","method":"GET","mimeType":"application/json","summary":"Buy a prepaid API key: $2.00 of credit, then a plain X-API-Key header on every paid HTTP route","description":"Use when your client cannot sign an x402 payment on every call, or to pay many calls (rug checks, launch polls, wallet and creator cards) from one purchase; not needed if your client already pays x402. Each new payment here buys a new $2.00 key. One x402 payment of $2.00 (USDC on Solana or Base; by header, or in a browser with a wallet) returns a key lt_... holding $2.00 of credit. Send it as the X-API-Key header on any paid HTTP route and that route's price is deducted; no x402 client is needed after the purchase (the same header on POST /mcp pays the MCP tools). Free balance: GET /v1/keys/balance with the header. Credit does not expire; the key is a bearer secret. The key activates when the same request settles; the same signed payment retried before it settles returns the same key; the store keeps only a hash of the key, so a delivered key is shown once.","price":"$2","price_usd":2.0,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"2000000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"key":"lt_exampleexampleexampleexample","credit_usd":2.0,"status":"active_on_settlement","use":{"header":"X-API-Key: lt_...","balance":"/v1/keys/balance","routes":"every paid HTTP route and every paid MCP tool (the same header on POST /mcp)"}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":2.0,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":50},"freshness_s":{"full":null},"mcp_tool":"buy_api_key","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"key":"lt_exampleexampleexampleexample","credit_usd":2.0,"status":"active_on_settlement","use":{"header":"X-API-Key: lt_...","balance":"/v1/keys/balance","routes":"every paid HTTP route and every paid MCP tool (the same header on POST /mcp)"}}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/keys/trial","route_template":"GET /v1/keys/trial","method":"GET","mimeType":"application/json","summary":"Buy a $0.10 trial key: twenty pump.fun rug checks, then a plain X-API-Key header","description":"Use to try the prepaid-key path with a small budget before the $2.00 key; each new payment here buys a new $0.10 key. The same prepaid key as /v1/keys/new with $0.10 of credit (about twenty $0.005 rug checks or a hundred $0.001 launch polls): one x402 payment, then X-API-Key on any paid HTTP route. For trying the header path with a small agent budget. Free balance: GET /v1/keys/balance.","price":"$0.1","price_usd":0.1,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"100000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"key":"lt_exampleexampleexampleexample","credit_usd":0.1,"status":"active_on_settlement","use":{"header":"X-API-Key: lt_...","balance":"/v1/keys/balance","routes":"every paid HTTP route and every paid MCP tool (the same header on POST /mcp)"}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.1,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":50},"freshness_s":{"full":null},"mcp_tool":"buy_trial_key","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"key":"lt_exampleexampleexampleexample","credit_usd":0.1,"status":"active_on_settlement","use":{"header":"X-API-Key: lt_...","balance":"/v1/keys/balance","routes":"every paid HTTP route and every paid MCP tool (the same header on POST /mcp)"}}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/launches/since","route_template":"GET /v1/launches/since","method":"GET","mimeType":"application/json","summary":"New Solana tokens as they launch on pump.fun: a cursor feed of new memecoin launches with rug probability and graduation odds ($0.001 per poll)","description":"Use when a bot polls for newly launched Solana tokens on pump.fun with their calibrated odds; for a one-off screen of the last hour use GET /v1/launches/recent, and for one mint the $0.005 rug check. The polling feed for bots: every covered launch created after `since` (unix seconds; default the last 60 s, at most the last hour), oldest first, up to 100 per call, each with creator, reserve, buys, buyer inflow, top-5 holder and creator shares, first-observed flags, the calibrated P(rug within 300 s) for young mints and P(true graduation), and the paid check URL. Returns next_cursor to pass back as since. An empty page costs the same call, so poll at the launch rate you need (about 20 launches per minute). Each item also carries its verdict word by the /v1/verdict rule with p_rug_300s and p_true_graduation; no_avoid=1 drops avoid items and min_p_grad keeps items at or above that P(true graduation), and next_cursor still advances past what they drop.","price":"$0.001","price_usd":0.001,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"since":{"type":"number","description":"unix seconds of the last launch you saw (next_cursor of the previous call); a cursor older than 1 h gets the newest page (cursor.clamped, cursor.skipped_before_page)","example":1789228000.0},"limit":{"type":"integer","description":"1-100 launches per call","default":100,"minimum":1,"maximum":100},"no_avoid":{"type":"boolean","default":false,"description":"true or 1: leave out items whose verdict is avoid"},"min_p_grad":{"type":"number","default":0,"minimum":0,"maximum":1,"description":"keep items whose P(true graduation) is at least this (0 = no floor)"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"since":1789228000.0,"next_cursor":1789228058.4,"count":2,"truncated":false,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","name":"Memestock","symbol":"MEME","created_at":1789228058.4,"age_s":1.6,"rs_sol":30.9,"n_buys":2,"unique_buyers_60s":2,"top5_share":0.61,"dev_share":0.03,"flags":[],"probabilities":{"rug_within_300s":0.41,"true_graduation":0.006},"verdict":"caution","p_rug_300s":0.41,"p_true_graduation":0.006,"check_url":"https://api.loopholetape.com/v1/check/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.001,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":30},"freshness_s":{"full":5},"mcp_tool":"launches_since","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"since":1789228000.0,"next_cursor":1789228058.4,"count":2,"truncated":false,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","name":"Memestock","symbol":"MEME","created_at":1789228058.4,"age_s":1.6,"rs_sol":30.9,"n_buys":2,"unique_buyers_60s":2,"top5_share":0.61,"dev_share":0.03,"flags":[],"probabilities":{"rug_within_300s":0.41,"true_graduation":0.006},"verdict":"caution","p_rug_300s":0.41,"p_true_graduation":0.006,"check_url":"https://api.loopholetape.com/v1/check/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/datasets/pumpfun_launches/{day}","route_template":"GET /v1/datasets/pumpfun_launches/:day","method":"GET","mimeType":"application/octet-stream","summary":"One UTC day of pump.fun memecoin launches with creator, outcomes and early features, as parquet ($5.00)","description":"Use to backtest or train a rug or graduation model on one full UTC day of Solana token launches on pump.fun; not for live decisions (use the compact check or the delta feed). Every pump.fun launch our capture saw on that UTC day (about 15k-35k rows) with creator, dev buy and share, name/symbol/uri, outcomes as our label rules define them (graduated with migration delay, rugged with rug delay, creator first-sell delay, peak and terminal reserve) and the first feature snapshot under 10 s and between 10 and 60 s of age where sampled (dev/insider/bundle shares, creator prior, reserve, buys). Free 200-row sample and schema at /v1/datasets. HTTP returns the parquet bytes; the MCP tool returns a one-hour download URL. The last three days are rebuilt nightly as outcomes settle.","price":"$5","price_usd":5.0,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"5000000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"5000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"5000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"5000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"day":{"type":"string","format":"date","description":"UTC day YYYY-MM-DD listed by GET /v1/datasets","example":"2026-09-11"}},"query":null},"output_example":{"content_type":"application/octet-stream","format":"parquet","filename":"pumpfun_launches_YYYY-MM-DD.parquet","schema":"/v1/datasets/schema/pumpfun_launches","mcp_tool_returns":{"day":"…","rows":28530,"sha256":"…","download_url":"…","expires_in_s":3600}},"output_example_thin":null,"latency_ms":{"full":200},"freshness_s":{"full":86400},"mcp_tool":"buy_dataset","output_schema":null},{"resource":"https://api.loopholetape.com/v1/check/mint/{mint}","route_template":"GET /v1/check/mint/:mint","method":"GET","mimeType":"application/json","summary":"Is this Solana token safe? Solana token safety check (rug check) for one pump.fun memecoin: calibrated rug probability and observed flags, not a safety guarantee ($0.005)","description":"Use to check one Solana token for rug risk right before a swap or while holding a pump.fun memecoin; not for finding new mints (use the free /v1/radar or the $0.001 delta feed, GET /v1/launches/since). Solana token safety check for one pump.fun mint (observations and odds, never a guarantee). Calibrated P(rug within 5 min) for young mints and P(true graduation), validated out of time (/v1/calibration); creator exits, early-wallet selling, curve/pool drains, migration classification, holder concentration and buyer flow. Findings include first-observed times and numeric evidence. Full coverage and feed lag <= 5 s required; stale/unavailable data is unpaid. Optional cursor: no new watched events is unpaid. No flags observed is not a safety guarantee. A curve not quoted in SOL (a pump.fun custom pair) gets status and odds null (quote_not_modelled; quote says why). Exact signed-payment retries recover the original result for 10 min without a new settlement; timestamps identify its age. Each item also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD) and authorities (mint, freeze, metadata; the pump.fun program rule).","price":"$0.005","price_usd":0.005,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"5000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"5000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"5000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"5000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"A pump.fun mint with full live coverage; check /v1/check/coverage first.","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":{"type":"object","properties":{"cursor":{"type":["string","null"],"maxLength":1024,"description":"Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result."}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"status":"flags_observed","result_id":"risk_example","count":1,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","status":"flags_observed","status_reason":null,"quote":{"asset":"sol","mint":null,"modelled":true,"is_sol":true,"holder_rewards":null,"basis":"tape","evidence":"classic_virtual_reserves","reason":null},"lifecycle":"live_curve","risk_label":"rug_flagged","findings":[{"code":"creator_sold","first_seen_at":1788990000,"evidence":{"tokens_share":0.12}}],"snapshot_slot":445000001,"last_trade_at":1788990001,"concentration":{"top5_share":0.51,"dev_share":0.03,"bundle_share":0.2,"insider_share":0.1},"buyer_flow":{"unique_buyers_60s":12,"buys_60s":18,"sells_60s":6,"net_sol_60s":0.2,"inflow_stalled":false},"curve":{"rs_sol":5.0,"peak_rs_sol":6.0,"drawdown_from_peak":0.1667,"graduated":null},"market":{"price_sol":3.80553e-08,"price_usd":7.61106e-06,"market_cap_sol":38.0553,"market_cap_usd":7611.06,"curve_liquidity_sol":5.0,"curve_liquidity_usd":1000.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"full_card_url":"https://api.loopholetape.com/v1/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}],"cursor":"opaque-watch-cursor","watch_events":["creator_sold","bundle_dumped","curve_drained","pool_drained","curve_closed_low","migrate_below_grad","lifecycle_transition"]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.005,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":null},"freshness_s":{"full":5},"mcp_tool":"check_pumpfun_risk","query_form":"https://api.loopholetape.com/v1/check/mint?mint={mint}","output_schema":{"properties":{"ok":{"const":true,"title":"Ok","type":"boolean"},"schema_version":{"const":"2.0","title":"Schema Version","type":"string"},"generated_at":{"title":"Generated At","type":"string"},"t":{"title":"T","type":"number"},"coverage":{"const":"full","title":"Coverage","type":"string"},"data":{"anyOf":[{"properties":{"status":{"anyOf":[{"enum":["flags_observed","no_flags_observed"],"type":"string"},{"type":"null"}],"description":"flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.","title":"Status"},"status_reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"title":"Status Reason"},"result_id":{"title":"Result Id","type":"string"},"count":{"maximum":5,"minimum":1,"title":"Count","type":"integer"},"items":{"items":{"properties":{"mint":{"title":"Mint","type":"string"},"status":{"anyOf":[{"enum":["flags_observed","no_flags_observed"],"type":"string"},{"type":"null"}],"description":"flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.","title":"Status"},"status_reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"description":"Set when the curve is not modelled.","title":"Status Reason"},"quote":{"anyOf":[{"properties":{"asset":{"description":"The curve's quote asset: sol, usdc, pyusd, stock (an xStocks tokenized equity), other, or unknown (not read from the curve account; is_sol says what our tape shows).","enum":["sol","usdc","pyusd","stock","other","unknown"],"title":"Asset","type":"string"},"mint":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The quote_mint the bonding-curve account holds (the all-zero default 11111111111111111111111111111111 on SOL curves); null when not read.","title":"Mint"},"modelled":{"description":"True only for a curve shown to be SOL-quoted: our flags, labels, verdict and odds are measured in SOL. False = those are withheld (reason quote_not_modelled).","title":"Modelled","type":"boolean"},"is_sol":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = SOL-quoted, false = quoted in another asset, null = not established yet.","title":"Is Sol"},"holder_rewards":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"The curve's is_holder_reward flag (pump.fun Holder Rewards: the creator fee goes to holders); null when the account was not read.","title":"Holder Rewards"},"basis":{"description":"curve_account = read from the bonding-curve account over RPC; curve_stream = the same account fields as our capture streams them; tape = our capture's evidence; none = no evidence yet.","enum":["curve_account","curve_stream","tape","none"],"title":"Basis","type":"string"},"evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The tape evidence behind is_sol (/v1/labels quote.evidence).","title":"Evidence"},"reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"description":"Set when modelled is false.","title":"Reason"}},"required":["asset","modelled","basis"],"title":"Quote","type":"object"},{"type":"null"}],"default":null,"description":"The curve's quote asset and whether our SOL-denominated flags, labels, verdict and odds are modelled for it (/v1/labels quote). modelled false = those are null with reason quote_not_modelled; structural fields stand."},"lifecycle":{"title":"Lifecycle","type":"string"},"risk_label":{"title":"Risk Label","type":"string"},"findings":{"items":{"properties":{"code":{"title":"Code","type":"string"},"first_seen_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Seen At"},"evidence":{"additionalProperties":true,"title":"Evidence","type":"object"}},"required":["code","first_seen_at","evidence"],"title":"Finding","type":"object"},"title":"Findings","type":"array"},"snapshot_slot":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Latest observed slot for this mint, not the slot of every finding.","title":"Snapshot Slot"},"last_trade_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Trade At"},"concentration":{"properties":{"top5_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top5 Share"},"dev_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dev Share"},"bundle_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bundle Share"},"insider_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Insider Share"}},"required":["top5_share","dev_share","bundle_share","insider_share"],"title":"Concentration","type":"object"},"buyer_flow":{"properties":{"unique_buyers_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unique Buyers 60S"},"buys_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buys 60S"},"sells_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sells 60S"},"net_sol_60s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Sol 60S"},"inflow_stalled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Inflow Stalled"}},"required":["unique_buyers_60s","buys_60s","sells_60s","net_sol_60s","inflow_stalled"],"title":"BuyerFlow","type":"object"},"curve":{"properties":{"rs_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rs Sol"},"peak_rs_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Peak Rs Sol"},"drawdown_from_peak":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Drawdown From Peak"},"graduated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Graduated"}},"required":["rs_sol","peak_rs_sol","drawdown_from_peak","graduated"],"title":"Curve","type":"object"},"market":{"anyOf":[{"properties":{"price_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL per whole token at the bonding curve's marginal price.","title":"Price Sol"},"price_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Price Usd"},"market_cap_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Market Cap Sol"},"market_cap_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"price_usd x total supply (1B tokens, 2B on a mayhem launch): the pump.fun and DexScreener convention, equal to FDV.","title":"Market Cap Usd"},"curve_liquidity_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Real SOL held by the bonding curve.","title":"Curve Liquidity Sol"},"curve_liquidity_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Curve Liquidity Usd"},"sol_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The Coinbase SOL-USD spot the USD fields use.","title":"Sol Usd"},"as_of":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Unix seconds of that sol_usd read.","title":"As Of"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why fields are null; codes at /v1/labels market.reason.","title":"Reason"}},"title":"Market","type":"object"},{"type":"null"}],"default":null,"description":"USD price, market cap and curve liquidity (/v1/labels market)."},"authorities":{"anyOf":[{"properties":{"mint_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (more can be minted), false = none, null = not read.","title":"Mint Authority"},"freeze_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (accounts can be frozen), false = none, null = not read.","title":"Freeze Authority"},"metadata_mutable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = name, symbol or image can still change, false = immutable, null = not read.","title":"Metadata Mutable"},"source":{"anyOf":[{"enum":["onchain","pumpfun_rule"],"type":"string"},{"type":"null"}],"default":null,"description":"pumpfun_rule: pump.fun's program leaves no mint or freeze authority and immutable metadata.","title":"Source"}},"title":"Authorities","type":"object"},{"type":"null"}],"default":null,"description":"Mint, freeze and metadata authorities (/v1/labels authorities)."},"probabilities":{"anyOf":[{"properties":{"model":{"title":"Model","type":"string"},"calibration":{"title":"Calibration","type":"string"},"horizon_s":{"title":"Horizon S","type":"integer"},"rug_within_300s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Rug Within 300S"},"true_graduation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"True Graduation"},"rug_within_300s_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Reason"},"true_graduation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"True Graduation Reason"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reason"},"rug_within_300s_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Basis"},"base_rate_same_age":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Base Rate Same Age"},"recalibration":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Recalibration"},"diagnostics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Diagnostics"},"features_used":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Features Used"}},"required":["model","calibration","horizon_s"],"title":"Probabilities","type":"object"},{"type":"null"}],"default":null},"full_card_url":{"title":"Full Card Url","type":"string"},"pool_now":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens whose PumpSwap pool is inside its first 30 minutes only (null otherwise): the live reserve, peak and pool_draining, with the rule and its measured rate. Context, not part of the verdict.","title":"Pool Now"},"graduation_timing":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens only (null otherwise): launch to the first migration sighting and its instant_bundle / organic label, as on the free graduation list. Context, not part of the verdict.","title":"Graduation Timing"},"links":{"anyOf":[{"properties":{"pumpfun":{"title":"Pumpfun","type":"string"},"dexscreener":{"title":"Dexscreener","type":"string"},"jupiter":{"title":"Jupiter","type":"string"},"gmgn":{"title":"Gmgn","type":"string"},"axiom":{"title":"Axiom","type":"string"},"photon":{"title":"Photon","type":"string"},"note":{"title":"Note","type":"string"}},"required":["pumpfun","dexscreener","jupiter","gmgn","axiom","photon","note"],"title":"TradeLinks","type":"object"},{"type":"null"}],"default":null,"description":"Open this mint on pump.fun, DexScreener, Jupiter, GMGN, Axiom or Photon through a free redirect; no referral code, no fee."}},"required":["mint","status","lifecycle","risk_label","findings","snapshot_slot","last_trade_at","concentration","buyer_flow","curve","full_card_url"],"title":"CheckItem","type":"object"},"maxItems":5,"minItems":1,"title":"Items","type":"array"},"cursor":{"title":"Cursor","type":"string"},"watch_events":{"items":{"type":"string"},"title":"Watch Events","type":"array"}},"required":["status","result_id","count","items","cursor","watch_events"],"title":"CheckData","type":"object"},{"properties":{"status":{"const":"no_new_events","title":"Status","type":"string"},"changed":{"const":false,"title":"Changed","type":"boolean"},"count":{"const":0,"title":"Count","type":"integer"},"items":{"items":{},"maxItems":0,"title":"Items","type":"array"},"cursor":{"title":"Cursor","type":"string"},"charged":{"const":false,"title":"Charged","type":"boolean"},"next_check_after_s":{"title":"Next Check After S","type":"integer"}},"required":["status","changed","count","items","cursor","charged","next_check_after_s"],"title":"NoChange","type":"object"}],"title":"Data"},"meta":{"additionalProperties":true,"title":"Meta","type":"object"}},"required":["ok","schema_version","generated_at","t","coverage","data","meta"],"title":"RiskEnvelope","type":"object"}},{"resource":"https://api.loopholetape.com/v1/check/watchlist","route_template":"GET /v1/check/watchlist","method":"GET","mimeType":"application/json","summary":"Rug check for up to five pump.fun memecoins on Solana for $0.01 total","description":"Use when you watch two to five pump.fun memecoins and want one payment for all of them; for a single mint the $0.005 single check (GET /v1/check/mint) costs less. One payment checks one to five caller-selected pump.fun mints for observed creator exits, bundle selling, drains and migration state, each with calibrated P(rug within 5 min) and P(true graduation) (/v1/calibration), with compact holder concentration/flow measurements and timestamped evidence. Every mint must have full coverage and feed lag <= 5 s; an unavailable batch is unpaid. Optional cursor: no new watched events is unpaid. Use /v1/check/watch for free update availability. Price is $0.01 total, not per mint. Findings describe observations, not predictions. Exact signed-payment retry cache: 10 minutes. Each item also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD) and authorities (mint, freeze, metadata; the pump.fun program rule).","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"mints":{"type":"string","maxLength":224,"example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","description":"One to five distinct mint addresses, comma-separated (MCP accepts an array)."},"cursor":{"type":["string","null"],"maxLength":1024,"description":"Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result."}},"required":["mints"]}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"status":"flags_observed","result_id":"risk_example","count":1,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","status":"flags_observed","status_reason":null,"quote":{"asset":"sol","mint":null,"modelled":true,"is_sol":true,"holder_rewards":null,"basis":"tape","evidence":"classic_virtual_reserves","reason":null},"lifecycle":"live_curve","risk_label":"rug_flagged","findings":[{"code":"creator_sold","first_seen_at":1788990000,"evidence":{"tokens_share":0.12}}],"snapshot_slot":445000001,"last_trade_at":1788990001,"concentration":{"top5_share":0.51,"dev_share":0.03,"bundle_share":0.2,"insider_share":0.1},"buyer_flow":{"unique_buyers_60s":12,"buys_60s":18,"sells_60s":6,"net_sol_60s":0.2,"inflow_stalled":false},"curve":{"rs_sol":5.0,"peak_rs_sol":6.0,"drawdown_from_peak":0.1667,"graduated":null},"market":{"price_sol":3.80553e-08,"price_usd":7.61106e-06,"market_cap_sol":38.0553,"market_cap_usd":7611.06,"curve_liquidity_sol":5.0,"curve_liquidity_usd":1000.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"full_card_url":"https://api.loopholetape.com/v1/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}],"cursor":"opaque-watch-cursor","watch_events":["creator_sold","bundle_dumped","curve_drained","pool_drained","curve_closed_low","migrate_below_grad","lifecycle_transition"]},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":null},"freshness_s":{"full":5},"mcp_tool":"check_watchlist_risk","output_schema":{"properties":{"ok":{"const":true,"title":"Ok","type":"boolean"},"schema_version":{"const":"2.0","title":"Schema Version","type":"string"},"generated_at":{"title":"Generated At","type":"string"},"t":{"title":"T","type":"number"},"coverage":{"const":"full","title":"Coverage","type":"string"},"data":{"anyOf":[{"properties":{"status":{"anyOf":[{"enum":["flags_observed","no_flags_observed"],"type":"string"},{"type":"null"}],"description":"flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.","title":"Status"},"status_reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"title":"Status Reason"},"result_id":{"title":"Result Id","type":"string"},"count":{"maximum":5,"minimum":1,"title":"Count","type":"integer"},"items":{"items":{"properties":{"mint":{"title":"Mint","type":"string"},"status":{"anyOf":[{"enum":["flags_observed","no_flags_observed"],"type":"string"},{"type":"null"}],"description":"flags_observed = documented flags exist; no_flags_observed = none of them observed (not a safety verdict); null = the curve is not shown to be SOL-quoted (status_reason quote_not_modelled), so its SOL-denominated flags were not evaluated and no absence of flags is claimed.","title":"Status"},"status_reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"description":"Set when the curve is not modelled.","title":"Status Reason"},"quote":{"anyOf":[{"properties":{"asset":{"description":"The curve's quote asset: sol, usdc, pyusd, stock (an xStocks tokenized equity), other, or unknown (not read from the curve account; is_sol says what our tape shows).","enum":["sol","usdc","pyusd","stock","other","unknown"],"title":"Asset","type":"string"},"mint":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The quote_mint the bonding-curve account holds (the all-zero default 11111111111111111111111111111111 on SOL curves); null when not read.","title":"Mint"},"modelled":{"description":"True only for a curve shown to be SOL-quoted: our flags, labels, verdict and odds are measured in SOL. False = those are withheld (reason quote_not_modelled).","title":"Modelled","type":"boolean"},"is_sol":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = SOL-quoted, false = quoted in another asset, null = not established yet.","title":"Is Sol"},"holder_rewards":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"The curve's is_holder_reward flag (pump.fun Holder Rewards: the creator fee goes to holders); null when the account was not read.","title":"Holder Rewards"},"basis":{"description":"curve_account = read from the bonding-curve account over RPC; curve_stream = the same account fields as our capture streams them; tape = our capture's evidence; none = no evidence yet.","enum":["curve_account","curve_stream","tape","none"],"title":"Basis","type":"string"},"evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The tape evidence behind is_sol (/v1/labels quote.evidence).","title":"Evidence"},"reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"description":"Set when modelled is false.","title":"Reason"}},"required":["asset","modelled","basis"],"title":"Quote","type":"object"},{"type":"null"}],"default":null,"description":"The curve's quote asset and whether our SOL-denominated flags, labels, verdict and odds are modelled for it (/v1/labels quote). modelled false = those are null with reason quote_not_modelled; structural fields stand."},"lifecycle":{"title":"Lifecycle","type":"string"},"risk_label":{"title":"Risk Label","type":"string"},"findings":{"items":{"properties":{"code":{"title":"Code","type":"string"},"first_seen_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Seen At"},"evidence":{"additionalProperties":true,"title":"Evidence","type":"object"}},"required":["code","first_seen_at","evidence"],"title":"Finding","type":"object"},"title":"Findings","type":"array"},"snapshot_slot":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Latest observed slot for this mint, not the slot of every finding.","title":"Snapshot Slot"},"last_trade_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Trade At"},"concentration":{"properties":{"top5_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top5 Share"},"dev_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dev Share"},"bundle_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bundle Share"},"insider_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Insider Share"}},"required":["top5_share","dev_share","bundle_share","insider_share"],"title":"Concentration","type":"object"},"buyer_flow":{"properties":{"unique_buyers_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unique Buyers 60S"},"buys_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buys 60S"},"sells_60s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sells 60S"},"net_sol_60s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Sol 60S"},"inflow_stalled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Inflow Stalled"}},"required":["unique_buyers_60s","buys_60s","sells_60s","net_sol_60s","inflow_stalled"],"title":"BuyerFlow","type":"object"},"curve":{"properties":{"rs_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rs Sol"},"peak_rs_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Peak Rs Sol"},"drawdown_from_peak":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Drawdown From Peak"},"graduated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Graduated"}},"required":["rs_sol","peak_rs_sol","drawdown_from_peak","graduated"],"title":"Curve","type":"object"},"market":{"anyOf":[{"properties":{"price_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL per whole token at the bonding curve's marginal price.","title":"Price Sol"},"price_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Price Usd"},"market_cap_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Market Cap Sol"},"market_cap_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"price_usd x total supply (1B tokens, 2B on a mayhem launch): the pump.fun and DexScreener convention, equal to FDV.","title":"Market Cap Usd"},"curve_liquidity_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Real SOL held by the bonding curve.","title":"Curve Liquidity Sol"},"curve_liquidity_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Curve Liquidity Usd"},"sol_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The Coinbase SOL-USD spot the USD fields use.","title":"Sol Usd"},"as_of":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Unix seconds of that sol_usd read.","title":"As Of"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why fields are null; codes at /v1/labels market.reason.","title":"Reason"}},"title":"Market","type":"object"},{"type":"null"}],"default":null,"description":"USD price, market cap and curve liquidity (/v1/labels market)."},"authorities":{"anyOf":[{"properties":{"mint_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (more can be minted), false = none, null = not read.","title":"Mint Authority"},"freeze_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (accounts can be frozen), false = none, null = not read.","title":"Freeze Authority"},"metadata_mutable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = name, symbol or image can still change, false = immutable, null = not read.","title":"Metadata Mutable"},"source":{"anyOf":[{"enum":["onchain","pumpfun_rule"],"type":"string"},{"type":"null"}],"default":null,"description":"pumpfun_rule: pump.fun's program leaves no mint or freeze authority and immutable metadata.","title":"Source"}},"title":"Authorities","type":"object"},{"type":"null"}],"default":null,"description":"Mint, freeze and metadata authorities (/v1/labels authorities)."},"probabilities":{"anyOf":[{"properties":{"model":{"title":"Model","type":"string"},"calibration":{"title":"Calibration","type":"string"},"horizon_s":{"title":"Horizon S","type":"integer"},"rug_within_300s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Rug Within 300S"},"true_graduation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"True Graduation"},"rug_within_300s_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Reason"},"true_graduation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"True Graduation Reason"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reason"},"rug_within_300s_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Basis"},"base_rate_same_age":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Base Rate Same Age"},"recalibration":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Recalibration"},"diagnostics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Diagnostics"},"features_used":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Features Used"}},"required":["model","calibration","horizon_s"],"title":"Probabilities","type":"object"},{"type":"null"}],"default":null},"full_card_url":{"title":"Full Card Url","type":"string"},"pool_now":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens whose PumpSwap pool is inside its first 30 minutes only (null otherwise): the live reserve, peak and pool_draining, with the rule and its measured rate. Context, not part of the verdict.","title":"Pool Now"},"graduation_timing":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens only (null otherwise): launch to the first migration sighting and its instant_bundle / organic label, as on the free graduation list. Context, not part of the verdict.","title":"Graduation Timing"},"links":{"anyOf":[{"properties":{"pumpfun":{"title":"Pumpfun","type":"string"},"dexscreener":{"title":"Dexscreener","type":"string"},"jupiter":{"title":"Jupiter","type":"string"},"gmgn":{"title":"Gmgn","type":"string"},"axiom":{"title":"Axiom","type":"string"},"photon":{"title":"Photon","type":"string"},"note":{"title":"Note","type":"string"}},"required":["pumpfun","dexscreener","jupiter","gmgn","axiom","photon","note"],"title":"TradeLinks","type":"object"},{"type":"null"}],"default":null,"description":"Open this mint on pump.fun, DexScreener, Jupiter, GMGN, Axiom or Photon through a free redirect; no referral code, no fee."}},"required":["mint","status","lifecycle","risk_label","findings","snapshot_slot","last_trade_at","concentration","buyer_flow","curve","full_card_url"],"title":"CheckItem","type":"object"},"maxItems":5,"minItems":1,"title":"Items","type":"array"},"cursor":{"title":"Cursor","type":"string"},"watch_events":{"items":{"type":"string"},"title":"Watch Events","type":"array"}},"required":["status","result_id","count","items","cursor","watch_events"],"title":"CheckData","type":"object"},{"properties":{"status":{"const":"no_new_events","title":"Status","type":"string"},"changed":{"const":false,"title":"Changed","type":"boolean"},"count":{"const":0,"title":"Count","type":"integer"},"items":{"items":{},"maxItems":0,"title":"Items","type":"array"},"cursor":{"title":"Cursor","type":"string"},"charged":{"const":false,"title":"Charged","type":"boolean"},"next_check_after_s":{"title":"Next Check After S","type":"integer"}},"required":["status","changed","count","items","cursor","charged","next_check_after_s"],"title":"NoChange","type":"object"}],"title":"Data"},"meta":{"additionalProperties":true,"title":"Meta","type":"object"}},"required":["ok","schema_version","generated_at","t","coverage","data","meta"],"title":"RiskEnvelope","type":"object"}},{"resource":"https://api.loopholetape.com/v1/verdict/{mint}","route_template":"GET /v1/verdict/:mint","method":"GET","mimeType":"application/json","summary":"Is this Solana token a rug pull? Token safety verdict (rug check) on one pump.fun memecoin: avoid, caution or no_flags_observed (not a safety guarantee), with a free shareable card ($0.01)","description":"Use when you need a rug pull risk word for one Solana token before you buy or hold it; for the raw evidence use the $0.005 compact check (GET /v1/check/mint), and to find mints use the free /v1/radar. The compact check of one mint as a bounded verdict with a one-line reason, the calibrated P(rug within 5 min) and P(true graduation) exactly as /v1/check/mint publishes them (/v1/calibration), up to three observed flags with first-observed times and evidence, and share_url: a free card page signed at purchase time that anyone can open without paying. The rule is fixed and public (/v1/labels): avoid = a documented rug or close flag observed, or P(rug within 5 min) >= 0.5; caution = P(rug) >= 0.1, concentrated, stalled or mayhem risk label, or odds unavailable; no_flags_observed = none of these, which is not a safety guarantee. P(true graduation) never softens a verdict. Same rules as the compact check: full live coverage and feed lag <= 5 s required; unavailable or stale is unpaid, and so is a curve not quoted in SOL (a pump.fun custom pair: quote_not_modelled). Exact signed-payment retries recover the original result for 10 min. The verdict also carries the compact check's market (USD price, market cap = price x total supply, curve liquidity) and authorities (the pump.fun program rule), and its free card shows the market cap at purchase. The answer also carries the mint's cohorts block (dev, bundlers, snipers, top-1 and top-10 share, and the holders' reputation across tokens) as context for the reasons; the rule does not read it.","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"A pump.fun mint with full live coverage; check /v1/check/coverage first.","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","verdict":"avoid","basis":["flag_observed"],"reason":"Observed: the creator wallet sold tokens, first seen 12 s after launch.","probabilities":{"model":"loophole-risk-gbm-v1","calibration":"https://api.loopholetape.com/v1/calibration","horizon_s":300,"rug_within_300s":null,"true_graduation":0.004,"rug_within_300s_reason":"a rug or close flag is already observed (see findings); the live odds are calibrated on mints without one"},"odds_caveat":"Calibrated statistical estimates, not guarantees and not financial advice.","quote":{"asset":"sol","mint":null,"modelled":true,"is_sol":true,"holder_rewards":null,"basis":"tape","evidence":"classic_virtual_reserves","reason":null},"reasons":[{"code":"creator_sold","text":"the creator wallet sold tokens","first_seen_at":1788990012.0,"first_seen_after_launch_s":12.0,"evidence":{"tokens_share":0.12}}],"reasons_total":1,"cohorts":{"version":"cohorts-1","top1_share":0.0874,"top10_share":0.3122,"union_share":0.0874,"slot_windows":{"bundlers":[0,1],"snipers":[2,8]},"basis":{"slot_ms":250,"slot_ms_measured":266.9,"regime_from_slot":447984000,"regime_from":"2026-09-18T05:06:43Z","regime_by":"create_slot","bundle_max_offset":1,"sniper_window_s":2.0,"sniper_max_offset":8,"sniper_window_measured_s":2.135},"unbooked_sol":0.0,"shares_complete":true,"sol_complete":true,"sol_reason":null,"dev":{"share_of_supply":0.0,"n_wallets":1,"n_holding":0,"buy_sol":3.78,"sell_sol":4.05,"net_sol":-0.27,"wallets":[{"wallet":"…","share_of_supply":0.0,"first_slot_offset":0,"net_sol":-0.27,"history":{"mints":3,"bundled":0,"quick_sells":2,"settled":3,"rugged":3,"graduated":0}}],"source":"tape+funding_capture","reason":null,"n_funded_by_creator":0},"bundlers":{"share_of_supply":0.0874,"n_wallets":1,"n_holding":1,"buy_sol":2.9,"sell_sol":0.0,"net_sol":2.9,"wallets":[{"wallet":"…","share_of_supply":0.0874,"first_slot_offset":1,"net_sol":2.9,"history":{"mints":0,"bundled":0,"quick_sells":0,"settled":0,"rugged":0,"graduated":0}}],"source":"tape","reason":null},"snipers":{"share_of_supply":0.0,"n_wallets":1,"n_holding":0,"buy_sol":0.4,"sell_sol":0.42,"net_sol":-0.02,"wallets":[{"wallet":"…","share_of_supply":0.0,"first_slot_offset":2,"net_sol":-0.02,"history":{"mints":88,"bundled":1,"quick_sells":80,"settled":70,"rugged":44,"graduated":2}}],"source":"tape","reason":null},"fresh_wallets":{"share_of_supply":null,"n_wallets":null,"n_holding":null,"buy_sol":null,"sell_sol":null,"net_sol":null,"wallets":null,"source":"unavailable","reason":"not served: no store of ours records a wallet's first-ever activity; reputation.new_wallets_share is the share held by wallets new to our own tape (see /v1/labels, cohorts.fresh_wallets)"},"omitted":{"insiders":"not served: buying before the token was publicly visible is not observable from our capture beyond the create transaction itself (see /v1/labels, cohorts.insiders)"},"reputation":{"version":"reputation-1","status":"ready","known_dumpers_share":0.0412,"repeat_bundlers_share":0.0,"new_wallets_share":0.1203,"n_known_dumpers":2,"n_repeat_bundlers":0,"n_new_wallets":9,"n_holders":21,"basis":{"tape_since":"2026-09-27T00:18:34Z","history_from":"2026-09-27T00:19:00Z","history_to":"2026-09-28T07:43:11Z","history_hours":31.4,"gaps":0,"store_lag_s":0.8,"quick_sell_s":60,"min_prior_mints":3,"retention":"history since tape_since; a wallet seen on one mint is forgotten 14 days after it was last seen; wallets on 2+ mints are kept (cap 2,000,000, least recently seen first)","labels":"/v1/labels (reputation)"},"reason":null}},"lifecycle":"live_curve","risk_label":"rug_flagged","market":{"price_sol":3.80553e-08,"price_usd":7.61106e-06,"market_cap_sol":38.0553,"market_cap_usd":7611.06,"curve_liquidity_sol":5.0,"curve_liquidity_usd":1000.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"coverage":"full","age_s":21.4,"generated_at":"2026-09-10T00:00:21Z","t":1788990021.4,"result_id":"verdict_example","share_url":"https://api.loopholetape.com/verdict/SIGNED_TOKEN","fresh_verdict_url":"https://api.loopholetape.com/v1/verdict/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","rule":"https://api.loopholetape.com/v1/labels","disclaimer":"…"},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":null},"freshness_s":{"full":5},"mcp_tool":"verdict","query_form":"https://api.loopholetape.com/v1/verdict?mint={mint}","output_schema":{"properties":{"ok":{"const":true,"title":"Ok","type":"boolean"},"schema_version":{"const":"2.0","title":"Schema Version","type":"string"},"generated_at":{"title":"Generated At","type":"string"},"t":{"title":"T","type":"number"},"coverage":{"const":"full","title":"Coverage","type":"string"},"data":{"properties":{"mint":{"title":"Mint","type":"string"},"verdict":{"enum":["avoid","caution","no_flags_observed"],"title":"Verdict","type":"string"},"basis":{"description":"Rule ids that fired; empty for no_flags_observed. The rule is published at /v1/labels.","items":{"type":"string"},"title":"Basis","type":"array"},"reason":{"title":"Reason","type":"string"},"probabilities":{"anyOf":[{"properties":{"model":{"title":"Model","type":"string"},"calibration":{"title":"Calibration","type":"string"},"horizon_s":{"title":"Horizon S","type":"integer"},"rug_within_300s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Rug Within 300S"},"true_graduation":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"True Graduation"},"rug_within_300s_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Reason"},"true_graduation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"True Graduation Reason"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Reason"},"rug_within_300s_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Rug Within 300S Basis"},"base_rate_same_age":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Base Rate Same Age"},"recalibration":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Recalibration"},"diagnostics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Diagnostics"},"features_used":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Features Used"}},"required":["model","calibration","horizon_s"],"title":"Probabilities","type":"object"},{"type":"null"}],"description":"The calibrated numbers exactly as the compact check publishes them."},"quote":{"anyOf":[{"properties":{"asset":{"description":"The curve's quote asset: sol, usdc, pyusd, stock (an xStocks tokenized equity), other, or unknown (not read from the curve account; is_sol says what our tape shows).","enum":["sol","usdc","pyusd","stock","other","unknown"],"title":"Asset","type":"string"},"mint":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The quote_mint the bonding-curve account holds (the all-zero default 11111111111111111111111111111111 on SOL curves); null when not read.","title":"Mint"},"modelled":{"description":"True only for a curve shown to be SOL-quoted: our flags, labels, verdict and odds are measured in SOL. False = those are withheld (reason quote_not_modelled).","title":"Modelled","type":"boolean"},"is_sol":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = SOL-quoted, false = quoted in another asset, null = not established yet.","title":"Is Sol"},"holder_rewards":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"The curve's is_holder_reward flag (pump.fun Holder Rewards: the creator fee goes to holders); null when the account was not read.","title":"Holder Rewards"},"basis":{"description":"curve_account = read from the bonding-curve account over RPC; curve_stream = the same account fields as our capture streams them; tape = our capture's evidence; none = no evidence yet.","enum":["curve_account","curve_stream","tape","none"],"title":"Basis","type":"string"},"evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The tape evidence behind is_sol (/v1/labels quote.evidence).","title":"Evidence"},"reason":{"anyOf":[{"const":"quote_not_modelled","type":"string"},{"type":"null"}],"default":null,"description":"Set when modelled is false.","title":"Reason"}},"required":["asset","modelled","basis"],"title":"Quote","type":"object"},{"type":"null"}],"default":null,"description":"The curve's quote asset (/v1/labels quote); a verdict is sold only for a SOL-quoted curve, any other is refused unpaid (quote_not_modelled)."},"odds_caveat":{"title":"Odds Caveat","type":"string"},"reasons":{"description":"Up to three observed flags, earliest first.","items":{"properties":{"code":{"title":"Code","type":"string"},"text":{"title":"Text","type":"string"},"first_seen_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Seen At"},"first_seen_after_launch_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Seen After Launch S"},"evidence":{"additionalProperties":true,"title":"Evidence","type":"object"}},"required":["code","text","first_seen_at","first_seen_after_launch_s","evidence"],"title":"VerdictReason","type":"object"},"maxItems":3,"title":"Reasons","type":"array"},"reasons_total":{"minimum":0,"title":"Reasons Total","type":"integer"},"cohorts":{"anyOf":[{"properties":{"version":{"const":"cohorts-1","title":"Version","type":"string"},"top1_share":{"description":"Share of total supply held by the largest wallet in our ledger (the bonding curve and the mayhem agent are not holders).","title":"Top1 Share","type":"number"},"top10_share":{"description":"Share of total supply held by the 10 largest wallets in our ledger (the bonding curve and the mayhem agent are not holders).","title":"Top10 Share","type":"number"},"union_share":{"description":"Share of supply held by wallets in at least one cohort, each wallet counted once.","title":"Union Share","type":"number"},"slot_windows":{"properties":{"bundlers":{"description":"Inclusive slot offsets from the create slot.","items":{"type":"integer"},"maxItems":2,"minItems":2,"title":"Bundlers","type":"array"},"snipers":{"description":"Inclusive slot offsets from the create slot; the upper end is basis.sniper_max_offset.","items":{"type":"integer"},"maxItems":2,"minItems":2,"title":"Snipers","type":"array"}},"required":["bundlers","snipers"],"title":"SlotWindows","type":"object"},"basis":{"anyOf":[{"properties":{"slot_ms":{"description":"The protocol's target slot duration in the slot regime of the mint's create slot (/v1/labels cohorts.slot_regime).","title":"Slot Ms","type":"integer"},"slot_ms_measured":{"description":"That regime's measured mean slot duration, from mainnet block times.","title":"Slot Ms Measured","type":"number"},"regime_from_slot":{"description":"First slot of that regime.","title":"Regime From Slot","type":"integer"},"regime_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Block time of that slot (null for the first regime).","title":"Regime From"},"regime_by":{"description":"What the regime was read from.","enum":["create_slot","launch_time","current"],"title":"Regime By","type":"string"},"bundle_max_offset":{"description":"N: bundlers are offsets 0-N.","title":"Bundle Max Offset","type":"integer"},"sniper_window_s":{"description":"The sniper time window.","title":"Sniper Window S","type":"number"},"sniper_max_offset":{"description":"K = round(sniper_window_s / slot_ms): snipers are offsets N+1..K.","title":"Sniper Max Offset","type":"integer"},"sniper_window_measured_s":{"description":"When slot K starts after the create slot at the measured slot duration.","title":"Sniper Window Measured S","type":"number"}},"required":["slot_ms","slot_ms_measured","regime_from_slot","regime_by","bundle_max_offset","sniper_window_s","sniper_max_offset","sniper_window_measured_s"],"title":"CohortBasis","type":"object"},{"type":"null"}],"default":null,"description":"The slot regime the windows come from and the numbers derived from it (/v1/labels cohorts.basis)."},"unbooked_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The curve's own SOL after the last booked trade minus the net SOL of every booked trade since launch: SOL that moved in trades our tape does not hold; null when it cannot be checked.","title":"Unbooked Sol"},"shares_complete":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True when the booked trades account for the curve's SOL (within 0.001 SOL); false when trades are missing, so every share here is a lower bound; null when it cannot be checked.","title":"Shares Complete"},"sol_complete":{"description":"True when every cohort SOL figure is exact; false names the reason in sol_reason.","title":"Sol Complete","type":"boolean"},"sol_reason":{"anyOf":[{"enum":["tape_truncated","quote_not_sol","trades_unbooked","create_sol_unknown"],"type":"string"},{"type":"null"}],"default":null,"title":"Sol Reason"},"dev":{"properties":{"share_of_supply":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Tokens the cohort's wallets hold now / total supply (1B; 2B on a mayhem launch).","title":"Share Of Supply"},"n_wallets":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets in the cohort, sold-out ones included.","title":"N Wallets"},"n_holding":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets of the cohort still holding tokens.","title":"N Holding"},"buy_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that entered the curve on the cohort's buys (fees paid outside the curve are not in it).","title":"Buy Sol"},"sell_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that left the curve on the cohort's sells.","title":"Sell Sol"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"buy_sol - sell_sol: negative when the cohort took out more SOL than it put in; null when sol_complete is false for it.","title":"Net Sol"},"wallets":{"anyOf":[{"items":{"properties":{"wallet":{"title":"Wallet","type":"string"},"share_of_supply":{"description":"Tokens this wallet holds now / total supply.","title":"Share Of Supply","type":"number"},"first_slot_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Slots after the create slot when the wallet's first tokens of this mint arrived; null when it never received any.","title":"First Slot Offset"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL it put into the curve on its buys minus SOL it took out on its sells; null when the tape cannot give it exactly.","title":"Net Sol"},"history":{"anyOf":[{"description":"One wallet's history on OTHER pump.fun mints in our tape since the seam (the mint answered is never counted).","properties":{"mints":{"description":"Other pump.fun mints this wallet bought in our tape since 2026-09-27T00:18:34Z (the mint answered is never counted).","minimum":0,"title":"Mints","type":"integer"},"bundled":{"description":"Of those, mints where its first tokens arrived in the create slot or the next one (the bundlers rule of the cohort block).","minimum":0,"title":"Bundled","type":"integer"},"quick_sells":{"description":"Of those, mints it sold within 60 s of its first buy.","minimum":0,"title":"Quick Sells","type":"integer"},"settled":{"description":"Of those, mints whose outcome labels have settled (/v1/labels, outcome).","minimum":0,"title":"Settled","type":"integer"},"rugged":{"description":"Of the settled ones, mints labelled rugged_within_300s by the public rule.","minimum":0,"title":"Rugged","type":"integer"},"graduated":{"description":"Of the settled ones, mints that truly graduated.","minimum":0,"title":"Graduated","type":"integer"}},"required":["mints","bundled","quick_sells","settled","rugged","graduated"],"title":"WalletHistory","type":"object"},{"type":"null"}],"default":null,"description":"This wallet's history on other pump.fun mints in our tape (mints, bundled, quick_sells, settled, rugged, graduated); null when the reputation is not ready (/v1/labels, reputation)."}},"required":["wallet","share_of_supply"],"title":"CohortWallet","type":"object"},"maxItems":10,"type":"array"},{"type":"null"}],"default":null,"description":"Up to 10 of the cohort's wallets, largest holding first.","title":"Wallets"},"source":{"enum":["tape","tape+funding_capture","unavailable"],"title":"Source","type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the cohort's figures are null.","title":"Reason"},"n_funded_by_creator":{"description":"Wallets in the dev cohort because our funding capture saw the creator fund them.","minimum":0,"title":"N Funded By Creator","type":"integer"}},"required":["share_of_supply","source","n_funded_by_creator"],"title":"DevCohort","type":"object"},"bundlers":{"properties":{"share_of_supply":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Tokens the cohort's wallets hold now / total supply (1B; 2B on a mayhem launch).","title":"Share Of Supply"},"n_wallets":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets in the cohort, sold-out ones included.","title":"N Wallets"},"n_holding":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets of the cohort still holding tokens.","title":"N Holding"},"buy_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that entered the curve on the cohort's buys (fees paid outside the curve are not in it).","title":"Buy Sol"},"sell_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that left the curve on the cohort's sells.","title":"Sell Sol"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"buy_sol - sell_sol: negative when the cohort took out more SOL than it put in; null when sol_complete is false for it.","title":"Net Sol"},"wallets":{"anyOf":[{"items":{"properties":{"wallet":{"title":"Wallet","type":"string"},"share_of_supply":{"description":"Tokens this wallet holds now / total supply.","title":"Share Of Supply","type":"number"},"first_slot_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Slots after the create slot when the wallet's first tokens of this mint arrived; null when it never received any.","title":"First Slot Offset"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL it put into the curve on its buys minus SOL it took out on its sells; null when the tape cannot give it exactly.","title":"Net Sol"},"history":{"anyOf":[{"description":"One wallet's history on OTHER pump.fun mints in our tape since the seam (the mint answered is never counted).","properties":{"mints":{"description":"Other pump.fun mints this wallet bought in our tape since 2026-09-27T00:18:34Z (the mint answered is never counted).","minimum":0,"title":"Mints","type":"integer"},"bundled":{"description":"Of those, mints where its first tokens arrived in the create slot or the next one (the bundlers rule of the cohort block).","minimum":0,"title":"Bundled","type":"integer"},"quick_sells":{"description":"Of those, mints it sold within 60 s of its first buy.","minimum":0,"title":"Quick Sells","type":"integer"},"settled":{"description":"Of those, mints whose outcome labels have settled (/v1/labels, outcome).","minimum":0,"title":"Settled","type":"integer"},"rugged":{"description":"Of the settled ones, mints labelled rugged_within_300s by the public rule.","minimum":0,"title":"Rugged","type":"integer"},"graduated":{"description":"Of the settled ones, mints that truly graduated.","minimum":0,"title":"Graduated","type":"integer"}},"required":["mints","bundled","quick_sells","settled","rugged","graduated"],"title":"WalletHistory","type":"object"},{"type":"null"}],"default":null,"description":"This wallet's history on other pump.fun mints in our tape (mints, bundled, quick_sells, settled, rugged, graduated); null when the reputation is not ready (/v1/labels, reputation)."}},"required":["wallet","share_of_supply"],"title":"CohortWallet","type":"object"},"maxItems":10,"type":"array"},{"type":"null"}],"default":null,"description":"Up to 10 of the cohort's wallets, largest holding first.","title":"Wallets"},"source":{"enum":["tape","tape+funding_capture","unavailable"],"title":"Source","type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the cohort's figures are null.","title":"Reason"}},"required":["share_of_supply","source"],"title":"Cohort","type":"object"},"snipers":{"properties":{"share_of_supply":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Tokens the cohort's wallets hold now / total supply (1B; 2B on a mayhem launch).","title":"Share Of Supply"},"n_wallets":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets in the cohort, sold-out ones included.","title":"N Wallets"},"n_holding":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets of the cohort still holding tokens.","title":"N Holding"},"buy_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that entered the curve on the cohort's buys (fees paid outside the curve are not in it).","title":"Buy Sol"},"sell_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that left the curve on the cohort's sells.","title":"Sell Sol"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"buy_sol - sell_sol: negative when the cohort took out more SOL than it put in; null when sol_complete is false for it.","title":"Net Sol"},"wallets":{"anyOf":[{"items":{"properties":{"wallet":{"title":"Wallet","type":"string"},"share_of_supply":{"description":"Tokens this wallet holds now / total supply.","title":"Share Of Supply","type":"number"},"first_slot_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Slots after the create slot when the wallet's first tokens of this mint arrived; null when it never received any.","title":"First Slot Offset"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL it put into the curve on its buys minus SOL it took out on its sells; null when the tape cannot give it exactly.","title":"Net Sol"},"history":{"anyOf":[{"description":"One wallet's history on OTHER pump.fun mints in our tape since the seam (the mint answered is never counted).","properties":{"mints":{"description":"Other pump.fun mints this wallet bought in our tape since 2026-09-27T00:18:34Z (the mint answered is never counted).","minimum":0,"title":"Mints","type":"integer"},"bundled":{"description":"Of those, mints where its first tokens arrived in the create slot or the next one (the bundlers rule of the cohort block).","minimum":0,"title":"Bundled","type":"integer"},"quick_sells":{"description":"Of those, mints it sold within 60 s of its first buy.","minimum":0,"title":"Quick Sells","type":"integer"},"settled":{"description":"Of those, mints whose outcome labels have settled (/v1/labels, outcome).","minimum":0,"title":"Settled","type":"integer"},"rugged":{"description":"Of the settled ones, mints labelled rugged_within_300s by the public rule.","minimum":0,"title":"Rugged","type":"integer"},"graduated":{"description":"Of the settled ones, mints that truly graduated.","minimum":0,"title":"Graduated","type":"integer"}},"required":["mints","bundled","quick_sells","settled","rugged","graduated"],"title":"WalletHistory","type":"object"},{"type":"null"}],"default":null,"description":"This wallet's history on other pump.fun mints in our tape (mints, bundled, quick_sells, settled, rugged, graduated); null when the reputation is not ready (/v1/labels, reputation)."}},"required":["wallet","share_of_supply"],"title":"CohortWallet","type":"object"},"maxItems":10,"type":"array"},{"type":"null"}],"default":null,"description":"Up to 10 of the cohort's wallets, largest holding first.","title":"Wallets"},"source":{"enum":["tape","tape+funding_capture","unavailable"],"title":"Source","type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the cohort's figures are null.","title":"Reason"}},"required":["share_of_supply","source"],"title":"Cohort","type":"object"},"fresh_wallets":{"properties":{"share_of_supply":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Tokens the cohort's wallets hold now / total supply (1B; 2B on a mayhem launch).","title":"Share Of Supply"},"n_wallets":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets in the cohort, sold-out ones included.","title":"N Wallets"},"n_holding":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Wallets of the cohort still holding tokens.","title":"N Holding"},"buy_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that entered the curve on the cohort's buys (fees paid outside the curve are not in it).","title":"Buy Sol"},"sell_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL that left the curve on the cohort's sells.","title":"Sell Sol"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"buy_sol - sell_sol: negative when the cohort took out more SOL than it put in; null when sol_complete is false for it.","title":"Net Sol"},"wallets":{"anyOf":[{"items":{"properties":{"wallet":{"title":"Wallet","type":"string"},"share_of_supply":{"description":"Tokens this wallet holds now / total supply.","title":"Share Of Supply","type":"number"},"first_slot_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Slots after the create slot when the wallet's first tokens of this mint arrived; null when it never received any.","title":"First Slot Offset"},"net_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL it put into the curve on its buys minus SOL it took out on its sells; null when the tape cannot give it exactly.","title":"Net Sol"},"history":{"anyOf":[{"description":"One wallet's history on OTHER pump.fun mints in our tape since the seam (the mint answered is never counted).","properties":{"mints":{"description":"Other pump.fun mints this wallet bought in our tape since 2026-09-27T00:18:34Z (the mint answered is never counted).","minimum":0,"title":"Mints","type":"integer"},"bundled":{"description":"Of those, mints where its first tokens arrived in the create slot or the next one (the bundlers rule of the cohort block).","minimum":0,"title":"Bundled","type":"integer"},"quick_sells":{"description":"Of those, mints it sold within 60 s of its first buy.","minimum":0,"title":"Quick Sells","type":"integer"},"settled":{"description":"Of those, mints whose outcome labels have settled (/v1/labels, outcome).","minimum":0,"title":"Settled","type":"integer"},"rugged":{"description":"Of the settled ones, mints labelled rugged_within_300s by the public rule.","minimum":0,"title":"Rugged","type":"integer"},"graduated":{"description":"Of the settled ones, mints that truly graduated.","minimum":0,"title":"Graduated","type":"integer"}},"required":["mints","bundled","quick_sells","settled","rugged","graduated"],"title":"WalletHistory","type":"object"},{"type":"null"}],"default":null,"description":"This wallet's history on other pump.fun mints in our tape (mints, bundled, quick_sells, settled, rugged, graduated); null when the reputation is not ready (/v1/labels, reputation)."}},"required":["wallet","share_of_supply"],"title":"CohortWallet","type":"object"},"maxItems":10,"type":"array"},{"type":"null"}],"default":null,"description":"Up to 10 of the cohort's wallets, largest holding first.","title":"Wallets"},"source":{"enum":["tape","tape+funding_capture","unavailable"],"title":"Source","type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the cohort's figures are null.","title":"Reason"}},"required":["share_of_supply","source"],"title":"Cohort","type":"object"},"omitted":{"additionalProperties":{"type":"string"},"description":"Cohorts not served, with the reason.","title":"Omitted","type":"object"},"reputation":{"anyOf":[{"properties":{"version":{"const":"reputation-1","title":"Version","type":"string"},"status":{"enum":["ready","warming_up","behind","unavailable","not_enabled","failed"],"title":"Status","type":"string"},"known_dumpers_share":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Share of supply held by wallets that sold within 60 s of their first buy on at least 3 other mints.","title":"Known Dumpers Share"},"repeat_bundlers_share":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Share of supply held by wallets whose first tokens arrived in the create slot or the next one on at least 3 other mints.","title":"Repeat Bundlers Share"},"new_wallets_share":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Share of supply held by wallets with no other mint in our tape since 2026-09-27T00:18:34Z: new to our tape, not necessarily fresh wallets.","title":"New Wallets Share"},"n_known_dumpers":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"N Known Dumpers"},"n_repeat_bundlers":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"N Repeat Bundlers"},"n_new_wallets":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"N New Wallets"},"n_holders":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Holders read (every wallet of the ledger holding tokens now).","title":"N Holders"},"basis":{"properties":{"tape_since":{"description":"Start of the history: the capture seam; no earlier trade is in the store.","title":"Tape Since","type":"string"},"history_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First trade time the store holds (UTC).","title":"History From"},"history_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Newest trade time the store holds (UTC).","title":"History To"},"history_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Hours of tape the store holds since tape_since, gaps excluded.","title":"History Hours"},"gaps":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Interruptions of the store's intake longer than 120 s (a server restart after more than ~25 min down): trades in them are missing.","title":"Gaps"},"store_lag_s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Our newest ingested trade minus the store's newest trade.","title":"Store Lag S"},"quick_sell_s":{"title":"Quick Sell S","type":"integer"},"min_prior_mints":{"title":"Min Prior Mints","type":"integer"},"retention":{"title":"Retention","type":"string"},"labels":{"title":"Labels","type":"string"}},"required":["tape_since","quick_sell_s","min_prior_mints","retention","labels"],"title":"ReputationBasis","type":"object"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the figures are null (status other than ready).","title":"Reason"}},"required":["version","status","basis"],"title":"Reputation","type":"object"},{"type":"null"}],"default":null,"description":"Cross-token history of the wallets holding this mint now, from our own trade tape since 2026-09-27T00:18:34Z: known_dumpers_share, repeat_bundlers_share and new_wallets_share of supply, with counts and the basis (hours of tape, gaps); null figures with status and reason when the history store is not ready. Definitions at /v1/labels (reputation)."}},"required":["version","top1_share","top10_share","union_share","slot_windows","sol_complete","dev","bundlers","snipers","fresh_wallets","omitted"],"title":"CohortBlock","type":"object"},{"type":"null"}],"default":null,"description":"Context for the reasons, not part of the rule: who holds the supply now by launch-time role (dev, bundlers, snipers, top-1 and top-10 share), as the holders answer reports it; definitions at /v1/labels (cohorts). Null when it could not be built; the verdict stands."},"lifecycle":{"title":"Lifecycle","type":"string"},"risk_label":{"title":"Risk Label","type":"string"},"market":{"anyOf":[{"properties":{"price_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"SOL per whole token at the bonding curve's marginal price.","title":"Price Sol"},"price_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Price Usd"},"market_cap_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Market Cap Sol"},"market_cap_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"price_usd x total supply (1B tokens, 2B on a mayhem launch): the pump.fun and DexScreener convention, equal to FDV.","title":"Market Cap Usd"},"curve_liquidity_sol":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Real SOL held by the bonding curve.","title":"Curve Liquidity Sol"},"curve_liquidity_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Curve Liquidity Usd"},"sol_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"The Coinbase SOL-USD spot the USD fields use.","title":"Sol Usd"},"as_of":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Unix seconds of that sol_usd read.","title":"As Of"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why fields are null; codes at /v1/labels market.reason.","title":"Reason"}},"title":"Market","type":"object"},{"type":"null"}],"default":null,"description":"USD price, market cap and curve liquidity (/v1/labels market)."},"authorities":{"anyOf":[{"properties":{"mint_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (more can be minted), false = none, null = not read.","title":"Mint Authority"},"freeze_authority":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = set (accounts can be frozen), false = none, null = not read.","title":"Freeze Authority"},"metadata_mutable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true = name, symbol or image can still change, false = immutable, null = not read.","title":"Metadata Mutable"},"source":{"anyOf":[{"enum":["onchain","pumpfun_rule"],"type":"string"},{"type":"null"}],"default":null,"description":"pumpfun_rule: pump.fun's program leaves no mint or freeze authority and immutable metadata.","title":"Source"}},"title":"Authorities","type":"object"},{"type":"null"}],"default":null,"description":"Mint, freeze and metadata authorities (/v1/labels authorities)."},"pool_now":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens whose PumpSwap pool is inside its first 30 minutes only (null otherwise): the live reserve, peak and pool_draining, with the rule and its measured rate. Context, not part of the verdict.","title":"Pool Now"},"graduation_timing":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Graduated tokens only (null otherwise): launch to the first migration sighting and its instant_bundle / organic label, as on the free graduation list. Context, not part of the verdict.","title":"Graduation Timing"},"coverage":{"const":"full","title":"Coverage","type":"string"},"age_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Age S"},"generated_at":{"title":"Generated At","type":"string"},"t":{"title":"T","type":"number"},"result_id":{"title":"Result Id","type":"string"},"share_url":{"description":"Free card page signed at purchase time; renders this verdict without recomputing or paying.","title":"Share Url","type":"string"},"fresh_verdict_url":{"title":"Fresh Verdict Url","type":"string"},"rule":{"title":"Rule","type":"string"},"disclaimer":{"title":"Disclaimer","type":"string"},"links":{"anyOf":[{"properties":{"pumpfun":{"title":"Pumpfun","type":"string"},"dexscreener":{"title":"Dexscreener","type":"string"},"jupiter":{"title":"Jupiter","type":"string"},"gmgn":{"title":"Gmgn","type":"string"},"axiom":{"title":"Axiom","type":"string"},"photon":{"title":"Photon","type":"string"},"note":{"title":"Note","type":"string"}},"required":["pumpfun","dexscreener","jupiter","gmgn","axiom","photon","note"],"title":"TradeLinks","type":"object"},{"type":"null"}],"default":null,"description":"Open this mint on pump.fun, DexScreener, Jupiter, GMGN, Axiom or Photon through a free redirect; no referral code, no fee."}},"required":["mint","verdict","basis","reason","probabilities","odds_caveat","reasons","reasons_total","lifecycle","risk_label","coverage","age_s","generated_at","t","result_id","share_url","fresh_verdict_url","rule","disclaimer"],"title":"VerdictData","type":"object"},"meta":{"additionalProperties":true,"title":"Meta","type":"object"}},"required":["ok","schema_version","generated_at","t","coverage","data","meta"],"title":"VerdictEnvelope","type":"object"}},{"resource":"https://api.loopholetape.com/v1/launches/screened","route_template":"GET /v1/launches/screened","method":"GET","mimeType":"application/json","summary":"New Solana tokens screened: the newest pump.fun memecoin launches without an avoid verdict, ranked by calibrated graduation odds ($0.01)","description":"Use when a screener wants the newest Solana memecoins on pump.fun already screened in one call, instead of a discovery call plus one rug check per token; for one mint use the $0.01 verdict (GET /v1/verdict). The newest covered pump.fun launches (default the last 15 min; mayhem-class launches left out, as on the radar) whose verdict is not avoid under the fixed public rule of /v1/verdict (/v1/labels), ranked by calibrated P(true graduation) (/v1/calibration), highest first, up to 50 per call. Each item: the verdict word (caution or no_flags_observed), the one-line reason and up to three reasons, P(true graduation), P(rug within 5 min) for mints under 30 s, age, curve SOL, buys and links to the verdict, the rug check and the full card; scanned and avoid_skipped count what was read and left out. Feed lag <= 5 s required: a stale feed or an empty screen is refused unpaid. no_flags_observed is not a safety guarantee. Each item also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD) and authorities (mint, freeze, metadata; the pump.fun program rule).","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"limit":{"type":"integer","default":25,"minimum":1,"maximum":50,"description":"items to return, 1-50"},"max_age_s":{"type":"number","default":900.0,"minimum":30,"maximum":3600.0,"description":"launches created within this many seconds (30-3600)"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":1,"limit":25,"window_s":900.0,"scanned":3,"avoid_skipped":2,"ranked_by":"p_true_graduation, highest first (items without a graduation number last)","left_out":"launches whose verdict is avoid under the /v1/verdict rule, and mayhem-class launches (2B supply), as on the radar","rule":"https://api.loopholetape.com/v1/labels","calibration":"https://api.loopholetape.com/v1/calibration","items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","name":"Memestock","symbol":"MEME","created_at":1789228058.4,"age_s":41.6,"verdict":"caution","verdict_basis":["concentrated"],"reason":"No documented flag observed, but holdings are concentrated (top-5 holders at least 50% of supply, the create-slot bundle at least 25% or insider-funded wallets at least 20%).","reasons":[{"code":"concentrated","text":"holdings are concentrated (top-5 holders at least 50% of supply, the create-slot bundle at least 25% or insider-funded wallets at least 20%)"}],"p_true_graduation":0.031,"p_rug_300s":null,"p_rug_300s_basis":null,"rs_sol":12.4,"progress":0.146,"n_buys":41,"market":{"price_sol":5.58484e-08,"price_usd":1.11697e-05,"market_cap_sol":55.8484,"market_cap_usd":11169.68,"curve_liquidity_sol":12.4,"curve_liquidity_usd":2480.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"risk_label":"concentrated","lifecycle":"live_curve","links":{"verdict":"https://api.loopholetape.com/v1/verdict/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","check":"https://api.loopholetape.com/v1/check/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","full_card":"https://api.loopholetape.com/v1/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","pump_fun":"https://pump.fun/coin/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}}],"note":"caution and no_flags_observed are the verdict words of /v1/verdict; no_flags_observed is not a safety guarantee."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":60},"freshness_s":{"full":5},"mcp_tool":"launches_screened","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"mint":"…","verdict":"caution","p_true_graduation":0.031,"age_s":41.6,"rs_sol":12.4}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/check/batch","route_template":"GET /v1/check/batch","method":"GET","mimeType":"application/json","summary":"Rug check for up to 25 pump.fun memecoins on Solana for $0.04 total","description":"Use when a screener checks a list of up to 25 pump.fun memecoins in one call and some may be outside the live window; at 21 to 25 mints it costs less per mint than the five-mint watchlist check (GET /v1/check/watchlist, $0.01), below that the watchlist costs less. One payment checks one to 25 caller-selected pump.fun mints. Each covered mint gets the compact check's item (observed creator exits, bundle selling, drains, migration state, calibrated P(rug within 5 min) for young mints and P(true graduation) (/v1/calibration), holder concentration, buyer flow and timestamped evidence) plus its verdict word by the /v1/verdict rule; a mint outside our live window is listed with coverage unavailable instead of refusing the batch. Price is $0.04 total, charged when at least one mint is covered and the feed lag is <= 5 s; a batch with none covered, more than 25 mints, a malformed or a repeated mint is refused unpaid. No cursor (the watchlist check watches up to five). No flags observed is not a safety guarantee. Each item also carries market (USD price, market cap = price x total supply as pump.fun and DexScreener show it, the curve's SOL liquidity in SOL and USD) and authorities (mint, freeze, metadata; the pump.fun program rule).","price":"$0.04","price_usd":0.04,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"40000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"40000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"40000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"40000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"mints":{"type":"string","maxLength":1124,"example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","description":"One to 25 distinct mint addresses, comma-separated (MCP accepts an array)."}},"required":["mints"]}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"status":"flags_observed","result_id":"batch_example","count":2,"covered":1,"unavailable":1,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","status":"flags_observed","status_reason":null,"quote":{"asset":"sol","mint":null,"modelled":true,"is_sol":true,"holder_rewards":null,"basis":"tape","evidence":"classic_virtual_reserves","reason":null},"lifecycle":"live_curve","risk_label":"rug_flagged","findings":[{"code":"creator_sold","first_seen_at":1788990000,"evidence":{"tokens_share":0.12}}],"snapshot_slot":445000001,"last_trade_at":1788990001,"concentration":{"top5_share":0.51,"dev_share":0.03,"bundle_share":0.2,"insider_share":0.1},"buyer_flow":{"unique_buyers_60s":12,"buys_60s":18,"sells_60s":6,"net_sol_60s":0.2,"inflow_stalled":false},"curve":{"rs_sol":5.0,"peak_rs_sol":6.0,"drawdown_from_peak":0.1667,"graduated":null},"market":{"price_sol":3.80553e-08,"price_usd":7.61106e-06,"market_cap_sol":38.0553,"market_cap_usd":7611.06,"curve_liquidity_sol":5.0,"curve_liquidity_usd":1000.0,"sol_usd":200.0,"as_of":1788671760.0,"reason":null},"authorities":{"mint_authority":false,"freeze_authority":false,"metadata_mutable":false,"source":"pumpfun_rule"},"full_card_url":"https://api.loopholetape.com/v1/mint/73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","coverage":"full","verdict":"avoid","verdict_basis":["flag_observed"]},{"mint":"So11111111111111111111111111111111111111112","coverage":"unavailable","reason":"not_in_live_window"}],"verdict_rule":"https://api.loopholetape.com/v1/labels","note":"One price for the whole batch, charged because at least one mint is covered."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.04,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":null},"freshness_s":{"full":5},"mcp_tool":"check_batch_risk","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":2,"covered":1,"items":[{"mint":"…","coverage":"full","verdict":"avoid","findings":[{"code":"creator_sold"}]},{"mint":"…","coverage":"unavailable"}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/mint/{mint}/holders","route_template":"GET /v1/mint/:mint/holders","method":"GET","mimeType":"application/json","summary":"Solana token holder concentration for one pump.fun memecoin: top holders with shares, labels and dev, bundler and sniper cohorts ($0.01)","description":"Use to measure the holder concentration of a Solana token on pump.fun from our ledger of its curve trades: its largest wallets and the creator's and create-slot buyers' shares; for who bought and sold trade by trade use GET /v1/mint/{mint}/flow. Up to 100 holders of one covered pump.fun mint, largest first, from our own per-wallet ledger of its bonding-curve trades: rank, wallet, share of supply, tokens, first-buy slot and time, last trade time, how the first tokens moved, buy and sell counts, and the labels we observe (dev = the creator, bundle = first tokens in the create slot or the next one, mayhem_agent; insider, latency_bot or skilled when the wallet is ranked on our pump.fun leaderboard, otherwise none). The concentration block carries the holder count, top-5 and top-10 share, HHI and the dev, bundle and insider shares the compact check reports. A cohorts block groups the supply by launch role: dev (the creator and the wallets our funding capture saw it fund), bundlers (first tokens in the create slot or the next), snipers (after them, within 2 s of the create slot: slots 2-8 on today's slots), each with its share of supply, wallet count, SOL in and out of the curve and its largest wallets, plus top-1 and top-10 share; each holder row names its cohorts. Labels are observations, not a verdict on a wallet. Full live coverage and feed lag <= 5 s required; an uncovered mint or a stale feed is refused unpaid. After a migration the ledger stops at the curve. The cohorts block also carries the holders' reputation across tokens: the share of supply held now by known dumpers (wallets that sold within 60 s of their first buy on 3 or more other mints), by repeat bundlers (in the create-slot bundle on 3 or more other mints) and by wallets new to our tape, from our own trade tape since 2026-09-27T00:18:34Z; each holder row carries its history on other mints (mints, bundled, quick sells, settled, rugged, graduated).","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"A pump.fun mint with full live coverage; check /v1/check/coverage first.","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":100,"description":"holder rows to return, largest first (1-100)"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","name":"Memestock","symbol":"MEME","creator":"…","created_at":1789228058.4,"age_s":95.2,"migrated":false,"supply_tokens":1000000000.0,"count":3,"limit":50,"n_holders":38,"untracked_wallets":0,"concentration":{"n_holders":38,"top5_share":0.2531,"top10_share":0.3544,"hhi":0.0712,"dev_share":0.051095,"bundle_share":0.094239,"insider_share":0.145334,"n_bundle_wallets":1,"listed_share":0.176356},"holders":[{"rank":1,"wallet":"…","balance_share":0.094239,"tokens":94239055.852889,"first_buy_slot":449819861,"first_buy_at":1789228058.9,"last_trade_at":1789228058.9,"route":"signer_wallet","buys":1,"sells":0,"labels":["bundle"],"wallet_class":"bundle","leaderboard_rank":null,"cohorts":["bundlers"],"history":{"mints":27,"bundled":25,"quick_sells":24,"settled":20,"rugged":13,"graduated":0}},{"rank":2,"wallet":"…","balance_share":0.051095,"tokens":51095238.095238,"first_buy_slot":449819860,"first_buy_at":1789228058.4,"last_trade_at":1789228058.4,"route":"create_tx","buys":1,"sells":0,"labels":["dev"],"wallet_class":"dev","leaderboard_rank":null,"cohorts":["dev"],"history":{"mints":2,"bundled":0,"quick_sells":0,"settled":2,"rugged":1,"graduated":0}},{"rank":3,"wallet":"…","balance_share":0.031022,"tokens":31022480.0,"first_buy_slot":449819902,"first_buy_at":1789228075.1,"last_trade_at":1789228131.7,"route":"signer_wallet","buys":2,"sells":1,"labels":["skilled"],"wallet_class":"skilled","leaderboard_rank":17,"cohorts":[],"history":{"mints":64,"bundled":0,"quick_sells":2,"settled":51,"rugged":30,"graduated":5}}],"cohorts":{"version":"cohorts-1","top1_share":0.094239,"top10_share":0.3544,"union_share":0.163745,"slot_windows":{"bundlers":[0,1],"snipers":[2,8]},"basis":{"slot_ms":250,"slot_ms_measured":266.9,"regime_from_slot":447984000,"regime_from":"2026-09-18T05:06:43Z","regime_by":"create_slot","bundle_max_offset":1,"sniper_window_s":2.0,"sniper_max_offset":8,"sniper_window_measured_s":2.135},"unbooked_sol":0.0,"shares_complete":true,"sol_complete":true,"sol_reason":null,"dev":{"share_of_supply":0.051095,"n_wallets":1,"n_holding":1,"buy_sol":1.5,"sell_sol":0.0,"net_sol":1.5,"wallets":[{"wallet":"…","share_of_supply":0.051095,"first_slot_offset":0,"net_sol":1.5,"history":{"mints":2,"bundled":0,"quick_sells":0,"settled":2,"rugged":1,"graduated":0}}],"source":"tape+funding_capture","reason":null,"n_funded_by_creator":0},"bundlers":{"share_of_supply":0.094239,"n_wallets":1,"n_holding":1,"buy_sol":3.2,"sell_sol":0.0,"net_sol":3.2,"wallets":[{"wallet":"…","share_of_supply":0.094239,"first_slot_offset":1,"net_sol":3.2,"history":{"mints":27,"bundled":25,"quick_sells":24,"settled":20,"rugged":13,"graduated":0}}],"source":"tape","reason":null},"snipers":{"share_of_supply":0.018411,"n_wallets":3,"n_holding":2,"buy_sol":1.9,"sell_sol":0.72,"net_sol":1.18,"wallets":[{"wallet":"…","share_of_supply":0.012304,"first_slot_offset":3,"net_sol":0.6,"history":{"mints":0,"bundled":0,"quick_sells":0,"settled":0,"rugged":0,"graduated":0}},{"wallet":"…","share_of_supply":0.006107,"first_slot_offset":5,"net_sol":0.58,"history":{"mints":140,"bundled":2,"quick_sells":131,"settled":112,"rugged":70,"graduated":3}},{"wallet":"…","share_of_supply":0.0,"first_slot_offset":2,"net_sol":0.0,"history":{"mints":19,"bundled":2,"quick_sells":17,"settled":15,"rugged":9,"graduated":0}}],"source":"tape","reason":null},"fresh_wallets":{"share_of_supply":null,"n_wallets":null,"n_holding":null,"buy_sol":null,"sell_sol":null,"net_sol":null,"wallets":null,"source":"unavailable","reason":"not served: no store of ours records a wallet's first-ever activity; reputation.new_wallets_share is the share held by wallets new to our own tape (see /v1/labels, cohorts.fresh_wallets)"},"omitted":{"insiders":"not served: buying before the token was publicly visible is not observable from our capture beyond the create transaction itself (see /v1/labels, cohorts.insiders)"},"reputation":{"version":"reputation-1","status":"ready","known_dumpers_share":0.1127,"repeat_bundlers_share":0.094239,"new_wallets_share":0.0862,"n_known_dumpers":4,"n_repeat_bundlers":1,"n_new_wallets":11,"n_holders":38,"basis":{"tape_since":"2026-09-27T00:18:34Z","history_from":"2026-09-27T00:19:00Z","history_to":"2026-09-28T07:43:11Z","history_hours":31.4,"gaps":0,"store_lag_s":0.8,"quick_sell_s":60,"min_prior_mints":3,"retention":"history since tape_since; a wallet seen on one mint is forgotten 14 days after it was last seen; wallets on 2+ mints are kept (cap 2,000,000, least recently seen first)","labels":"/v1/labels (reputation)"},"reason":null}},"leaderboard":{"built_at":1790155807.4,"window":2,"classes":["insider","latency_bot","skilled"],"rules":"src/edge/leaderboard.py: insider = at least 30% of its positions entered in a create slot; latency_bot = median entry under 2 s with bursts of 3+ buys in 1 s; skilled = 10+ closed positions and a 40%+ win rate, ranked by realised result over the window"},"tape":{"trades_on_tape":61,"dropped_oldest":0,"max_rows":2000,"complete_from_launch":true},"note":"Balances are our own per-wallet ledger of the mint's bonding-curve trades, booked to the signing wallet. Labels are observations from our capture and our leaderboard, not a verdict on any wallet; see /v1/labels (holders_flow)."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":20},"freshness_s":{"full":5},"mcp_tool":"mint_holders","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"mint":"…","n_holders":38,"concentration":{"top5_share":0.2531,"top10_share":0.3544,"hhi":0.0712},"cohorts":{"snipers":{"share_of_supply":0.018411,"n_wallets":3},"reputation":{"known_dumpers_share":0.1127,"new_wallets_share":0.0862}},"holders":[{"rank":1,"wallet":"…","balance_share":0.094239,"labels":["bundle"],"cohorts":["bundlers"]}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/mint/{mint}/flow","route_template":"GET /v1/mint/:mint/flow","method":"GET","mimeType":"application/json","summary":"Who bought and sold one pump.fun memecoin: every curve trade by wallet, running net SOL and organic vs wash/bundle volume ($0.01 a page)","description":"Use when you need who bought and sold one pump.fun memecoin, trade by trade, or to poll its new trades with a cursor; for who holds it now use GET /v1/mint/{mint}/holders. Every bonding-curve buy and sell of one covered pump.fun mint from our own capture, in slot order, up to 500 per page: time, slot, index in the slot, transaction signature, wallet, side, SOL, tokens, how the tokens moved, whether it was the wallet's first buy, the wallet's label (dev, bundle, mayhem_agent, or insider, latency_bot or skilled when ranked on our leaderboard) and the running net SOL the curve has taken in since launch. A summary covers the last 60 s and 5 min: trades, unique buyers and sellers, buy, sell and net SOL, first buys, and the largest buyer's and seller's share of that SOL. A demand block (wash trading vs organic volume, from launch) splits the buy SOL by wallet label and gives the share the same wallets sold back and the share bought in crowded slots, and the holders answer's cohorts block (dev, bundlers, snipers, top-1 and top-10 share, the holders' reputation across tokens) rides on every page. Pass next_cursor back as since (a slot:index cursor, a slot or unix seconds); no trade after since, an uncovered mint or a stale feed is refused unpaid. Full live coverage and feed lag <= 5 s required.","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"A pump.fun mint with full live coverage; check /v1/check/coverage first.","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":{"type":"object","properties":{"since":{"type":"string","maxLength":40,"example":"449819861:37","description":"optional start, exclusive: next_cursor 'slot:index' of the previous page, a slot number, or unix seconds (values >= 1e9); omitted = from the launch"},"limit":{"type":"integer","default":100,"minimum":1,"maximum":500,"description":"trades per page (1-500)"}}}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","name":"Memestock","symbol":"MEME","creator":"…","created_at":1789228058.4,"migrated":false,"since":null,"order":"slot, index ascending","count":2,"items":[{"t":1789228058.4,"slot":449819860,"index":212,"sig":"…","wallet":"…","side":"buy","sol":1.5,"tokens":51095238.095238,"route":"create_tx","is_first_buy":true,"wallet_class":"dev","running_net_sol":1.5},{"t":1789228058.9,"slot":449819861,"index":37,"sig":"…","wallet":"…","side":"buy","sol":3.2,"tokens":94239055.852889,"route":"signer_wallet","is_first_buy":true,"wallet_class":"bundle","running_net_sol":4.7}],"next_cursor":"449819861:37","more":true,"next_url":"/v1/mint/{mint}/flow?since=449819861:37","summary":{"last_60s":{"window_s":60,"trades":14,"buys":9,"sells":5,"unique_buyers":8,"unique_sellers":4,"first_buys":6,"buy_sol":4.81,"sell_sol":2.95,"net_sol":1.86,"largest_buyer":{"wallet":"…","sol":1.2,"share":0.24948},"largest_seller":{"wallet":"…","sol":1.4,"share":0.474576}},"last_300s":{"window_s":300,"trades":61,"buys":40,"sells":21,"unique_buyers":33,"unique_sellers":17,"first_buys":36,"buy_sol":21.4,"sell_sol":12.3,"net_sol":9.1,"largest_buyer":{"wallet":"…","sol":3.2,"share":0.149533},"largest_seller":{"wallet":"…","sol":2.1,"share":0.170732}}},"demand":{"buys":88,"unique_buyers":61,"buys_per_buyer":1.443,"buy_sol":38.2,"buy_share_by_class":{"bundle":0.21,"dev":0.039,"none":0.712,"skilled":0.039},"round_trip_wallets":19,"round_trip_share":0.274,"crowded_slot_min_buyers":4,"crowded_slot_buy_share":0.18},"cohorts":{"version":"cohorts-1","top1_share":0.094239,"top10_share":0.3544,"union_share":0.163745,"slot_windows":{"bundlers":[0,1],"snipers":[2,8]},"basis":{"slot_ms":250,"slot_ms_measured":266.9,"regime_from_slot":447984000,"regime_from":"2026-09-18T05:06:43Z","regime_by":"create_slot","bundle_max_offset":1,"sniper_window_s":2.0,"sniper_max_offset":8,"sniper_window_measured_s":2.135},"unbooked_sol":0.0,"shares_complete":true,"sol_complete":true,"sol_reason":null,"dev":{"share_of_supply":0.051095,"n_wallets":1,"n_holding":1,"buy_sol":1.5,"sell_sol":0.0,"net_sol":1.5,"wallets":[{"wallet":"…","share_of_supply":0.051095,"first_slot_offset":0,"net_sol":1.5,"history":{"mints":2,"bundled":0,"quick_sells":0,"settled":2,"rugged":1,"graduated":0}}],"source":"tape+funding_capture","reason":null,"n_funded_by_creator":0},"bundlers":{"share_of_supply":0.094239,"n_wallets":1,"n_holding":1,"buy_sol":3.2,"sell_sol":0.0,"net_sol":3.2,"wallets":[{"wallet":"…","share_of_supply":0.094239,"first_slot_offset":1,"net_sol":3.2,"history":{"mints":27,"bundled":25,"quick_sells":24,"settled":20,"rugged":13,"graduated":0}}],"source":"tape","reason":null},"snipers":{"share_of_supply":0.018411,"n_wallets":3,"n_holding":2,"buy_sol":1.9,"sell_sol":0.72,"net_sol":1.18,"wallets":[{"wallet":"…","share_of_supply":0.012304,"first_slot_offset":3,"net_sol":0.6,"history":{"mints":0,"bundled":0,"quick_sells":0,"settled":0,"rugged":0,"graduated":0}},{"wallet":"…","share_of_supply":0.006107,"first_slot_offset":5,"net_sol":0.58,"history":{"mints":140,"bundled":2,"quick_sells":131,"settled":112,"rugged":70,"graduated":3}},{"wallet":"…","share_of_supply":0.0,"first_slot_offset":2,"net_sol":0.0,"history":{"mints":19,"bundled":2,"quick_sells":17,"settled":15,"rugged":9,"graduated":0}}],"source":"tape","reason":null},"fresh_wallets":{"share_of_supply":null,"n_wallets":null,"n_holding":null,"buy_sol":null,"sell_sol":null,"net_sol":null,"wallets":null,"source":"unavailable","reason":"not served: no store of ours records a wallet's first-ever activity; reputation.new_wallets_share is the share held by wallets new to our own tape (see /v1/labels, cohorts.fresh_wallets)"},"omitted":{"insiders":"not served: buying before the token was publicly visible is not observable from our capture beyond the create transaction itself (see /v1/labels, cohorts.insiders)"},"reputation":{"version":"reputation-1","status":"ready","known_dumpers_share":0.1127,"repeat_bundlers_share":0.094239,"new_wallets_share":0.0862,"n_known_dumpers":4,"n_repeat_bundlers":1,"n_new_wallets":11,"n_holders":38,"basis":{"tape_since":"2026-09-27T00:18:34Z","history_from":"2026-09-27T00:19:00Z","history_to":"2026-09-28T07:43:11Z","history_hours":31.4,"gaps":0,"store_lag_s":0.8,"quick_sell_s":60,"min_prior_mints":3,"retention":"history since tape_since; a wallet seen on one mint is forgotten 14 days after it was last seen; wallets on 2+ mints are kept (cap 2,000,000, least recently seen first)","labels":"/v1/labels (reputation)"},"reason":null}},"tape":{"trades_on_tape":61,"dropped_oldest":0,"max_rows":2000,"complete_from_launch":true},"note":"Every booked bonding-curve trade from our own capture, in (slot, index) order; sol is what entered or left the curve in the transaction (fees paid outside the curve are not in it); running_net_sol is the SOL the curve holds after the trade."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request.","chain_lag_s":1.1,"slots_behind":4,"tape_behind":false}},"output_example_thin":null,"latency_ms":{"full":20},"freshness_s":{"full":5},"mcp_tool":"mint_flow","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"mint":"…","count":1,"next_cursor":"449819861:37","more":true,"items":[{"slot":449819861,"wallet":"…","side":"buy","sol":3.2,"is_first_buy":true,"running_net_sol":4.7}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/outcome/batch","route_template":"GET /v1/outcome/batch","method":"GET","mimeType":"application/json","summary":"Outcome labels for up to 40 pump.fun memecoins in one call ($0.01 total)","description":"Use when you grade a list of your own rug or graduation calls or backtest a signal on pump.fun memecoins; for one mint the $0.001 single lookup costs less. One payment returns the outcome labels of one to 40 caller-selected pump.fun mints in the order asked with the fields and the fixed public rule of the single lookup GET /v1/outcome/{mint} and is charged once whatever the answers. Each item: rugged by the public rule and when, rugged within 300 s of launch, true graduation and migration time, the creator's first sell, peak and last curve SOL, the mayhem flag, whether each label is settled (resolved) and the rule version. A mint we never saw answers known:false; a list with no known mint, more than 40, a malformed or a repeated mint is refused unpaid. No probabilities and no opinions.","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"mints":{"type":"string","maxLength":1799,"example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","description":"One to 40 distinct mint addresses, comma-separated (MCP accepts an array)."}},"required":["mints"]}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"count":2,"n_known":1,"n_resolved":1,"items":[{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","known":true,"source":"reputation","t0":1788873631.485,"launched_at":"2026-09-08T13:20:31Z","age_at_query_s":1356368.5,"creator":"4ESzFZUWUdr2GsgHBVeQKuzAmBWS5sRSaXw6PZH2EAau","mayhem":false,"graduated":false,"migrate_dt_s":null,"migrate_at":null,"rugged":true,"rug_dt_s":1407.383,"rug_at":1788875038.868,"rugged_within_300s":false,"dev_first_sell_dt_s":1.3,"peak_rs":66.672015,"terminal_rs":0.645555,"resolved":true,"resolution":{"rug_within_300s":true,"graduation":true,"path_closed":true},"label_rule_version":"outcome-1","dataset_day":null,"reason":null,"quote":{"asset":"sol","mint":"11111111111111111111111111111111","modelled":true,"is_sol":true,"holder_rewards":false,"basis":"curve_account","evidence":null,"reason":null}},{"mint":"So11111111111111111111111111111111111111112","known":false,"source":null,"t0":null,"launched_at":null,"age_at_query_s":null,"creator":null,"mayhem":null,"graduated":null,"migrate_dt_s":null,"migrate_at":null,"rugged":null,"rug_dt_s":null,"rug_at":null,"rugged_within_300s":null,"dev_first_sell_dt_s":null,"peak_rs":null,"terminal_rs":null,"resolved":false,"resolution":null,"label_rule_version":"outcome-1","dataset_day":null,"reason":"not in our pump.fun launch table: not launched on pump.fun while our capture was up, or not a pump.fun mint","quote":null}],"rule":{"version":"outcome-1","labels":"/v1/labels"},"note":"One price for the whole batch, whatever the answers; items keep the order asked."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.01,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":20},"freshness_s":{"full":10},"mcp_tool":"mint_outcome_batch","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"count":1,"items":[{"mint":"…","known":true,"rugged":true,"resolved":true}]}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/outcome/{mint}","route_template":"GET /v1/outcome/:mint","method":"GET","mimeType":"application/json","summary":"Outcome labels for one pump.fun memecoin: rugged, graduated, when, peak SOL ($0.001)","description":"Use when you grade your own rug or graduation calls or backtest a signal on pump.fun memecoins and need outcome labels you did not write yourself, by a fixed public rule; for a live pre-trade rug check use GET /v1/check/mint ($0.005). The outcome of one pump.fun launch from our own capture: launch time and age now, whether it rugged by the public rule (a drain from a peak of at least 5 SOL, or a creator dump) and when, whether that happened within 300 s of launch, whether it truly graduated and when it migrated, the creator's first sell, peak and last curve SOL, the mayhem flag, whether each label is settled (resolved) and the rule version. No probabilities and no opinions. A mint we never recorded is refused unpaid (404 not_on_tape) with the free check's link. Labels settle when our capture closes the curve path, about an hour after it goes quiet (94% of launches are settled 2 to 3 h after launch); until then they read null, never a provisional false. A malformed mint is refused unpaid.","price":"$0.001","price_usd":0.001,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":{"mint":{"type":"string","description":"Any pump.fun mint (base58, 32-44 characters); one we never recorded is refused unpaid.","example":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"}},"query":null},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"mint":"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump","known":true,"source":"reputation","t0":1788873631.485,"launched_at":"2026-09-08T13:20:31Z","age_at_query_s":1356368.5,"creator":"4ESzFZUWUdr2GsgHBVeQKuzAmBWS5sRSaXw6PZH2EAau","mayhem":false,"graduated":false,"migrate_dt_s":null,"migrate_at":null,"rugged":true,"rug_dt_s":1407.383,"rug_at":1788875038.868,"rugged_within_300s":false,"dev_first_sell_dt_s":1.3,"peak_rs":66.672015,"terminal_rs":0.645555,"resolved":true,"resolution":{"rug_within_300s":true,"graduation":true,"path_closed":true},"label_rule_version":"outcome-1","dataset_day":null,"reason":null,"quote":{"asset":"sol","mint":"11111111111111111111111111111111","modelled":true,"is_sol":true,"holder_rewards":false,"basis":"curve_account","evidence":null,"reason":null}},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.001,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"thin","data":{"mint":"So11111111111111111111111111111111111111112","known":false,"source":null,"t0":null,"launched_at":null,"age_at_query_s":null,"creator":null,"mayhem":null,"graduated":null,"migrate_dt_s":null,"migrate_at":null,"rugged":null,"rug_dt_s":null,"rug_at":null,"rugged_within_300s":null,"dev_first_sell_dt_s":null,"peak_rs":null,"terminal_rs":null,"resolved":false,"resolution":null,"label_rule_version":"outcome-1","dataset_day":null,"reason":"not in our pump.fun launch table: not launched on pump.fun while our capture was up, or not a pump.fun mint","quote":null},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.001,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"latency_ms":{"full":5},"freshness_s":{"full":10},"mcp_tool":"mint_outcome","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"mint":"…","known":true,"rugged":true,"rug_dt_s":1407.4,"graduated":false,"resolved":true}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}},{"resource":"https://api.loopholetape.com/v1/alerts/webhook","route_template":"GET /v1/alerts/webhook","method":"GET","mimeType":"application/json","summary":"Push pump.fun memecoin and Robinhood Chain launch alerts to your Discord webhook or Telegram bot for 30 days ($0.10)","description":"Use when a Discord or Telegram room wants new pump.fun memecoins with high graduation odds, true graduations, avoid flips or Robinhood Chain ring flags posted to it without running a server; to poll from code use GET /v1/launches/since ($0.001). One payment registers your room's own delivery endpoint for 30 days: a Discord webhook URL, or telegram:<bot_token>:<chat_id> for a Telegram bot you own; any other host is refused unpaid. A test message is posted first and the payment settles when it arrives; a failed test is unpaid. Then every 60 s each new item of the kinds you pick is posted as one plain-text message ending with its public record and paid card links: graduation_odds and graduations are the items of our free Atom feeds (5 minutes delayed), ring_flags the Robinhood Chain pons ring-structure flags, avoid_flips a published graduation candidate whose verdict turns avoid. Filters min_p_grad, max_age_s, pumpfun_only, rhc_only; at most 20 messages an hour and 200 a day. The endpoint is stored encrypted and never echoed or logged: POST it in the JSON body. POST, or GET with the X-Alert-Destination header, is the same purchase. Unsubscribe with the link in the answer.","price":"$0.1","price_usd":0.1,"accepts":[{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"100000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}],"input":{"path_params":null,"query":{"type":"object","properties":{"destination":{"type":"string","maxLength":300,"example":"https://discord.com/api/webhooks/123456789012345678/example-token-replace-with-your-own-webhook-token-000000000","description":"Your room's delivery endpoint: a Discord webhook URL https://discord.com/api/webhooks/<id>/<token>, or telegram:<bot_token>:<chat_id> for a Telegram bot you own. Send it in the POST JSON body or the X-Alert-Destination header: a query string can be recorded by proxies."},"kinds":{"type":"string","maxLength":80,"example":"graduation_odds,avoid_flips","description":"Comma-separated, one or more of graduation_odds, ring_flags, graduations, avoid_flips (POST and MCP accept an array)."},"min_p_grad":{"type":"number","default":0,"minimum":0,"maximum":1,"description":"graduation_odds and avoid_flips: keep items whose P(true graduation) at publication is at least this (0 = no floor)"},"max_age_s":{"type":"number","default":0,"minimum":0,"maximum":86400,"description":"keep items whose launch was at most this many seconds old when the item was recorded; for graduations the time to graduation (0 = no limit)"},"pumpfun_only":{"type":"boolean","default":false,"description":"true: leave out the Robinhood Chain kind (ring_flags)"},"rhc_only":{"type":"boolean","default":false,"description":"true: leave out the pump.fun kinds"},"label":{"type":"string","maxLength":40,"default":"","description":"optional name printed at the start of every message (letters, digits, spaces and basic punctuation)"}},"required":["destination","kinds"]}},"output_example":{"ok":true,"schema_version":"2.0","generated_at":"2026-09-19T18:00:07Z","t":1789840807.0,"coverage":"full","data":{"subscription_id":"as0123456789abcdef","status":"active_on_settlement","kinds":["graduation_odds","avoid_flips"],"filters":{"min_p_grad":0.1,"max_age_s":null,"pumpfun_only":true,"rhc_only":false},"label":"pump room","destination_kind":"discord","test_delivery":"ok","registered_at":"2026-09-24T12:00:00Z","expires_at":"2026-10-24T12:00:00Z","unsubscribe_url":"https://api.loopholetape.com/v1/alerts/unsubscribe?token=as0123456789abcdef.0123456789abcdef0123456789abcdef","delivery":{"every_s":60.0,"max_per_hour":20,"max_per_day":200,"how":"https://api.loopholetape.com/alerts"},"note":"Keep the unsubscribe link: it is in this answer and in the test message; the room's endpoint is stored encrypted and never shown again."},"meta":{"source":"loophole tape","version":"0.9.0","feed_lag_s":0.4,"is_stale":false,"price_usd":0.1,"labels":"/v1/labels","disclaimer":"Derived from public on-chain data (Solana for pump.fun, Robinhood Chain eip155:4663 for pons); labels are statistical, not guarantees; nothing here is financial advice. Sold as-is to programs, per request."}},"output_example_thin":null,"latency_ms":{"full":1500},"freshness_s":{"full":60},"mcp_tool":"subscribe_alerts","output_schema":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"subscription_id":"as…","status":"active_on_settlement","kinds":["graduation_odds"],"test_delivery":"ok","expires_at":"…","unsubscribe_url":"…"}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now (the age of the newest event we ingested; it does not say whether the capture runs behind the chain, see chain_lag_s)"},"is_stale":{"type":"boolean","description":"the ingest age (feed_lag_s) exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise); a paid or keyed pump.fun request is also refused above 5 s of estimated chain lag when the gate enforces (see chain_lag_s, tape_behind), which this flag does not show"},"chain_lag_s":{"type":["number","null"],"description":"estimated seconds the newest slot in our pump.fun tape is behind the Solana RPC's processed tip (slots_behind x the measured slot time, to 0.1 s); null when the tip is unknown; absent on Robinhood Chain answers"},"slots_behind":{"type":["integer","null"],"description":"estimated slots between the newest slot in our pump.fun tape and the Solana RPC's processed tip (a tip read every 30 s, carried forward by the wall time since at the slot rate our own reads measure); 0 when the tape is at or ahead of the estimate; null when the tip is unknown"},"tape_behind":{"type":["boolean","null"],"description":"true when the estimated chain_lag_s is above 5 s, false within 5 s, null when there is no tip to compare; on pump.fun answers only"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}}}],"base_first":{"note":"Base-first quotes for clients that pay the first accept: each /v1/base/<path> listed here is the route /v1/<path> itself (same answer, price and payTo), quoted with USDC on Base (eip155:8453) as accepts[0] and the other rails after it in the usual order.","prefix":"https://api.loopholetape.com/v1/base","resources":[{"resource":"https://api.loopholetape.com/v1/base/launches/recent","same_as":"https://api.loopholetape.com/v1/launches/recent","method":"GET","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/launches/since","same_as":"https://api.loopholetape.com/v1/launches/since","method":"GET","price":"$0.001","price_usd":0.001,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"1000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"1000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/launches/screened","same_as":"https://api.loopholetape.com/v1/launches/screened","method":"GET","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/outcome/batch","same_as":"https://api.loopholetape.com/v1/outcome/batch","method":"GET","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/rhc/launches/recent","same_as":"https://api.loopholetape.com/v1/rhc/launches/recent","method":"GET","price":"$0.01","price_usd":0.01,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"10000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/keys/trial","same_as":"https://api.loopholetape.com/v1/keys/trial","method":"GET","price":"$0.1","price_usd":0.1,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"100000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"100000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]},{"resource":"https://api.loopholetape.com/v1/base/keys/new","same_as":"https://api.loopholetape.com/v1/keys/new","method":"GET","price":"$2","price_usd":2.0,"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"2000000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","maxTimeoutSeconds":60,"extra":{"feePayer":"BFK9TLC3edb13K6v4YyH3DwPb5DSUpkWvb7XnqCL9b4F"}},{"scheme":"exact","network":"eip155:4663","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"Global Dollar","version":"1"}},{"scheme":"exact","network":"eip155:196","asset":"0x779Ded0c9e1022225f8E0630b35a9b54bE713736","amount":"2000000","payTo":"0x25d408eF54e60F3006bD13d5A040d525E2F359c2","maxTimeoutSeconds":60,"extra":{"name":"USD₮0","version":"1"}}]}]},"free":[{"url":"https://api.loopholetape.com/v1/token_check/{mint}","description":"free, no key and no payment: the coarse pre-trade check of ONE token, the same answer as the MCP tool token_check. Give it a pump.fun mint, any other Solana mint (a thin answer read from the chain), a Robinhood Chain pons 0x curve or token address, or the token's pasted link (pump.fun, GMGN, Solscan, Birdeye, Jupiter, pons, Blockscout): a verdict word (avoid | caution | no_flags_observed by the fixed public rule at /v1/labels), one reason, coverage (full | thin | not_covered) and age, with links to the paid detail; also GET /v1/token_check?mint=<token>. 30 calls an hour per caller by default (429 over it) and a daily cap across all callers; no_flags_observed is not a safety verdict"},{"url":"https://api.loopholetape.com/v1/check/coverage","description":"free coverage and freshness check for one to five mints; quotes single and batch prices; called without mints: usage and mints covered right now"},{"url":"https://api.loopholetape.com/v1/check/watch","description":"free availability of new risk/lifecycle events for a watchlist; opaque cursor, no event details; called without mints: usage and a ready example"},{"url":"https://api.loopholetape.com/","description":"this index"},{"url":"https://api.loopholetape.com/health","description":"feed health: seconds behind the chain, last slot, mints tracked, counters"},{"url":"https://api.loopholetape.com/v1/market/regime","description":"market-wide regime meter: launch rate, mayhem share, buy/sell flow, fail share, migrations vs true graduations, rug flags (free)"},{"url":"https://api.loopholetape.com/v1/sample/launches","description":"free 3-item sample of /v1/launches/recent, delayed >= 300 s"},{"url":"https://api.loopholetape.com/v1/sample/rugs","description":"free 3-item sample of /v1/rugs/recent, delayed >= 300 s"},{"url":"https://api.loopholetape.com/v1/sample/mint","description":"free full risk card of one mint aged >= 300 s (the exact paid shape)"},{"url":"https://api.loopholetape.com/v1/x402/resources","description":"machine-readable list of paid resources: prices, payment terms, input schema, output example"},{"url":"https://api.loopholetape.com/v1/calibration","description":"validation tables (Brier, ECE, calibration by bin and by age) behind the calibrated probabilities in compact checks"},{"url":"https://api.loopholetape.com/v1/labels","description":"semantics of every label, flag and field (coverage, status, risk_label, confidence, rug flags, history, rhc)"},{"url":"https://api.loopholetape.com/v1/rhc/regime","description":"Robinhood Chain (pons) regime meter: launches/h, graduations/h and rate, median launch-to-graduation seconds, curve buys/sells per minute, unique buyers (free)"},{"url":"https://api.loopholetape.com/v1/radar","description":"free live radar of new pump.fun memecoins: covered mints under 30 s ranked by calibrated rug-within-300s probability and covered mints under 15 min ranked by true-graduation probability, ten each, refreshed every 5 s, each with the paid check URL"},{"url":"https://api.loopholetape.com/radar","description":"the radar as an auto-refreshing page"},{"url":"https://api.loopholetape.com/v1/rhc/sample/launches","description":"free 5-item sample of /v1/rhc/launches/recent (ETH-paired, delayed >= 300 s, the exact paid shape; an item whose free record page is served also carries its URL as record_page)"},{"url":"https://api.loopholetape.com/rhc","description":"Robinhood Chain launch data page: live regime meter, delayed sample, the paid routes and prices"},{"url":"https://api.loopholetape.com/v1/sample/outcome","description":"free: three settled pump.fun launches of the previous UTC day (a true graduation, a rug within 300 s and one that did neither) in the exact item shape of the paid outcome routes"},{"url":"https://api.loopholetape.com/v1/rhc/sample/trades","description":"free: the first 20 events (older than 300 s) of one pons curve in the exact shape of the paid per-trade reserves route, whether that route covers the curve, and its newest cursor; address=0x… (curve or token), omitted = our pick"},{"url":"https://api.loopholetape.com/v1/rhc/pool/{address}","description":"free: what a Uniswap v3-style pool (20-byte address) or a Uniswap v4 pool (32-byte pool id) on Robinhood Chain holds and did, read from the chain: both tokens (names are creator text, marked), price and in-range liquidity, the reserves now, swaps, transactions, distinct callers and gross volume over the last 1,000 blocks (about 100 s), the hook, and the flag phantom_volume (the window's quote-token volume against the quote-token reserve, rule and thresholds at /v1/labels rhc_pool; null when it cannot be evaluated); observations only, no verdict word, no score, no USD figure"},{"url":"https://api.loopholetape.com/v1/rhc/swap/build","description":"free to call: the UNSIGNED swap transaction (to, data, value, chain id), the approval to send first when selling, the minimum output and a deadline for a GRADUATED pons token on Robinhood Chain, routed by KyberSwap's aggregator; token=0x…, wallet=0x…, amount=decimal (ETH for side=buy, tokens for side=sell), slippage_pct (default 1, at most 5). The transaction pays a disclosed 0.25% (25 bps) integrator fee to loophole tape's wallet inside the swap; every answer states the fee, its receiver, the router and the expected output with and without the fee. Refused, with nothing built, for a token our public rule marks avoid, one that has not graduated, no route, or a quote older than 30 s. Holds no keys, signs and sends nothing"},{"url":"https://api.loopholetape.com/v1/swap/build","description":"free to call: the UNSIGNED Solana swap transaction (base64 v0, the wallet signs and sends it) for a pump.fun token inside our live window, routed by Jupiter over the pump.fun curve or PumpSwap; mint=…, wallet=<public key>, side=buy or side=sell (required), amount=whole base units (lamports for side=buy, at most 50 SOL; token base units for side=sell), slippage_pct (default 1, at most 5). The transaction pays a disclosed 0.25% (25 bps) integrator fee to loophole tape's wallet inside the swap; every answer states the fee, its account, the minimum output, the chain simulation of the exact transaction and your simulated outcome. Refused, with nothing built, for a token our public rule marks avoid, one our verdict cannot judge, no route, a quote older than 10 s, a price impact above 50% or a failed simulation. Holds no keys, signs and sends nothing"},{"url":"https://api.loopholetape.com/v1/keys/balance","description":"free: status and credit remaining on a prepaid key (X-API-Key header); without a key: usage and how to buy one"},{"url":"https://api.loopholetape.com/v1/keys/transfer","description":"free: a quote to buy a prepaid key with a PLAIN USDC transfer on Base or Solana, no x402 client and no browser wallet: an exact amount (usd from 0.10 to 50, default 2, plus a unique fraction of a cent), the address, a claim secret; the transfer must follow within 60 minutes"},{"url":"https://api.loopholetape.com/v1/keys/transfer/claim","description":"free: the key for a transfer made for a quote (quote, secret, tx = the Base transaction hash or the Solana signature), read from the chain; the key's credit is the amount received"},{"url":"https://api.loopholetape.com/v1/datasets","description":"free index of the bulk datasets: days available, rows, bytes, sha256, sample and schema links, how to buy"},{"url":"https://api.loopholetape.com/datasets","description":"the bulk datasets as a page: days, sizes, sha256, columns, how to buy; schema.org Dataset markup for dataset search"},{"url":"https://api.loopholetape.com/v1/datasets/sample/pumpfun_launches.csv","description":"free 200-row CSV sample of the newest day of the pump.fun launches dataset"},{"url":"https://api.loopholetape.com/v1/datasets/schema/pumpfun_launches","description":"free column-by-column schema of the pump.fun launches dataset"},{"url":"https://api.loopholetape.com/v1/stats/pumpfun","description":"free pump.fun graduation statistics per UTC day and over 7 and 30 days: launches, true graduations and rate, instant-bundle share, organic graduation rate, median time to graduation, rug within 300 s, creator sold within 60 s, ticker copies; rebuilt nightly from our own capture"},{"url":"https://api.loopholetape.com/stats/pumpfun","description":"the pump.fun graduation statistics as a page (as JSON: /stats/pumpfun.json, ?format=json or Accept: application/json)"},{"url":"https://api.loopholetape.com/v1/stats/pons","description":"free Robinhood Chain pons statistics per UTC day and over 7 and 30 days: launches by quote token, graduations and rate, creator-tax distribution, Robinhood stock-token quoted share, ETH traded on the curves; rebuilt nightly from our own capture"},{"url":"https://api.loopholetape.com/stats/pons","description":"the Robinhood Chain launch statistics as a page (as JSON: /stats/pons.json or ?format=json)"},{"url":"https://api.loopholetape.com/v1/stats/meteora-lp","description":"free: what liquidity providers on Meteora DLMM actually made, measured on the positions real wallets opened (not modelled from fee/TVL): result per deposited dollar over the last 10 days, per day, by pool age, fee/TVL, price trend, turnover and token, the share of LP wallets that are up, one pre-registered rule with its forward reads, method and limits; rebuilt nightly"},{"url":"https://api.loopholetape.com/stats/meteora-lp","description":"the measured Meteora DLMM liquidity-provider results as a page (as JSON: /stats/meteora-lp.json or ?format=json)"},{"url":"https://api.loopholetape.com/v1/stats/venues","description":"free: which launch venues we record ourselves (pump.fun, pons, Meteora DLMM LP results) with their statistics links, and the daily launchpad radar's last-7-day volume and fees of the other launchpads against pump.fun, with caveats; /v1/stats/{venue} answers one venue name"},{"url":"https://api.loopholetape.com/compare","description":"free page: our pump.fun rug calls and RugCheck's public report, each against the settled outcome (rugged within 300 s, graduated), last 7 UTC days, up to 300 sampled mints a day: share flagged, precision and recall on rugs, share with no answer, the method, when each side was asked, the caveats; no ranking"},{"url":"https://api.loopholetape.com/v1/compare","description":"the same comparison as JSON (free): counts with denominators and Wilson 95% intervals, per day and pooled, method, caveats"},{"url":"https://api.loopholetape.com/v1/compare/rows","description":"the raw rows behind the comparison (free, one JSON object per line): our call, RugCheck's answer, the outcome labels"},{"url":"https://api.loopholetape.com/graduations","description":"free page: every true graduation of the pump.fun launches of the last 24 hours, newest first, 5 minutes delayed, each labelled instant bundle (migrated within 2 s of launch) or organic, with symbol, mint (linked to its public record), launch time, time to graduation, peak curve SOL and the count of other mints launched with its ticker that week, and what its PumpSwap pool did in its first 30 minutes (lost 90% and when, or the price against the open); above them the window's launches, true graduations, instant-bundle share, organic graduation rate and the share of pools that lost 90% inside 30 minutes; at most 200 rows (as JSON: /graduations.json, ?format=json or Accept: application/json; as Atom: /graduations.atom)"},{"url":"https://api.loopholetape.com/v1/graduations/public","description":"the same true graduations and counts as JSON (free), the object the /graduations page is rendered from; ?label=organic or ?label=instant_bundle keeps one label's rows (also at /api/graduations and /api/organic-graduations)"},{"url":"https://api.loopholetape.com/token/{mint}","description":"free public record page of one pump.fun mint: name and symbol, launch time, creator address, the outcome labels by the public rule (rugged, truly graduated, settled or not), the verdict word and observed flags while the mint is in our live window, and how many other mints launched with its ticker that week; the calibrated odds are not on this page (they are in the paid verdict); served when our capture holds the launch and a settled label or a live verdict, else 404"},{"url":"https://api.loopholetape.com/v1/token/{mint}","description":"the same public record as JSON (free), the object the /token page is rendered from"},{"url":"https://api.loopholetape.com/ticker/{SYMBOL}","description":"free copy census of one pump.fun ticker (letters and digits, upper case): how many mints launched with it in the last 7 and 30 UTC days, how many truly graduated and how many rugged by the public rule, the first-seen and the newest mints with links to their records; served for tickers used by at least two mints in 30 days; no odds"},{"url":"https://api.loopholetape.com/v1/ticker/{SYMBOL}","description":"the same ticker census as JSON (free, any spelling of the ticker; also /api/mints?symbol=), each listed mint with a record linking its /v1/token JSON"},{"url":"https://api.loopholetape.com/creator/{address}","description":"free JSON record of one pump.fun creator wallet: whether our launch table knows it, how many launches it holds and the first and last seen; the graduation and rug record is the paid creator card it links (also at /api/creator/ and /reputation/)"},{"url":"https://api.loopholetape.com/rhc/launch/{address}","description":"free public record page of one Robinhood Chain pons launch by curve or token address (a token address redirects to its curve's page): name and symbol, quote asset, launch time and block, creator tax and trade fee, deployer, the holder structure at 3 s and on the latest snapshot we hold, the ring rule as context (a base rate measured on another population, not odds for this curve), graduation or the curve's last state and raised fraction, and the exact-model price multiple vs launch; served 5 minutes after launch when our capture holds the launch with a holder snapshot or an outcome, else 404"},{"url":"https://api.loopholetape.com/v1/rhc/launch/{address}","description":"the same public launch record as JSON (free), the object the /rhc/launch page is rendered from"},{"url":"https://api.loopholetape.com/v1/rhc/graduations","description":"free JSON list of Robinhood Chain pons v2 graduations (the curve's pool opened) of the last ?hours=24 (1-168), newest first, at most ?limit=50 (1-200), each 5 minutes or more after the graduation, from our hourly launch-record index: curve, token, symbol, quote asset, launch and graduation times, time to graduation and the link to its free record; also at /v1/rhc/graduations/recent and /v1/pons/graduations"},{"url":"https://api.loopholetape.com/v1/track-record","description":"free daily scorecard of the radar's own calls against outcomes (rug flags rugged within 300 s, graduation flags graduated, base rates)"},{"url":"https://api.loopholetape.com/track-record","description":"the track record as a page"},{"url":"https://api.loopholetape.com/pricing","description":"every price on one page: paid routes, MCP tools, prepaid keys, free routes and how to pay (HTML for browsers, JSON for agents; aliases /pricing.json and /.well-known/pricing)"},{"url":"https://api.loopholetape.com/about","description":"who sells this: project identity, contact mailbox, public repository, signed proof of control of both payment addresses, data provenance, and the plain statement that there is no token (HTML for browsers, JSON for agents; aliases /about.json, /team, /contact)"},{"url":"https://api.loopholetape.com/transparency","description":"the seller's own settlement record: what has actually been paid (counts, dollars, payer classes, networks), how a payment can be refused and with which named reason, the charging and replay policy, known incidents, and how to check every number against the chain (aliases /transparency.json, /disclosures, /trust)"},{"url":"https://api.loopholetape.com/.well-known/x402","description":"x402 discovery manifest (IETF draft-hawkins-x402-dns-discovery + x402scan shapes)"},{"url":"https://api.loopholetape.com/openapi.json","description":"OpenAPI 3 schema with x-payment-info per paid operation"},{"url":"https://api.loopholetape.com/llms.txt","description":"plain-text description for LLM agents (llms.txt convention)"},{"url":"https://api.loopholetape.com/.well-known/agent-card.json","description":"A2A agent card (skills = these routes; payment over HTTP/MCP with x402)"},{"url":"https://api.loopholetape.com/a2a","description":"A2A JSON-RPC endpoint: message/send answers with the catalog, payment terms and the exact call for the skill you name"},{"url":"https://api.loopholetape.com/.well-known/mcp-server-card","description":"MCP server card (SEP-2127 shape): remote endpoint, protocol versions, payment summary"},{"url":"https://api.loopholetape.com/.well-known/agents.json","description":"agents.json manifest: OpenAPI source plus multi-step flows (coverage -> check, watch -> check, launches -> card)"},{"url":"https://api.loopholetape.com/agents.txt","description":"agents.txt announcement: protocols x402, MCP endpoint, skill, A2A card"},{"url":"https://api.loopholetape.com/skills/pumpfun-risk-check/SKILL.md","description":"agent skill (agentskills.io format): the paid check workflow step by step"},{"url":"https://api.loopholetape.com/.well-known/agent-skills/index.json","description":"Agent Skills discovery index (schema 0.2.0): that skill with the sha256 digest of the served file, for `npx skills add`; legacy form at /.well-known/skills/index.json"},{"url":"https://api.loopholetape.com/.well-known/api-catalog","description":"RFC 9727 api-catalog linkset"},{"url":"https://api.loopholetape.com/.well-known/security.txt","description":"RFC 9116 security contact"},{"url":"https://api.loopholetape.com/sitemap.xml","description":"sitemap of the public documents"},{"url":"https://api.loopholetape.com/feeds","description":"the free Atom feeds for chat RSS bots and feed readers, as a page"},{"url":"https://api.loopholetape.com/feeds/pumpfun-graduation-odds.xml","description":"free Atom feed: every 5 minutes the covered pump.fun launches of the radar with the highest calibrated P(true graduation), at least 5%, each mint once, 5 minutes delayed, with its verdict word and observed flags"},{"url":"https://api.loopholetape.com/feeds/pons-ring-flags.xml","description":"free Atom feed: Robinhood Chain pons launches at least 5 minutes old that match the ring-structure rule, one entry per curve"},{"url":"https://api.loopholetape.com/feeds/stats.xml","description":"free Atom feed: one entry per UTC day with the pump.fun and pons launch statistics"},{"url":"https://api.loopholetape.com/feeds/pumpfun-graduations.xml","description":"free Atom feed: one entry per true pump.fun graduation, 5 minutes after its migration, titled with the symbol, the time to graduation and the label (instant bundle or organic), linked to the mint's public record"},{"url":"https://api.loopholetape.com/feeds/pumpfun-rugs.xml","description":"free Atom feed: one entry per rug or close flag on a pump.fun launch whose curve held at least 5 SOL at its peak, 5 minutes after the flag, linked to the mint's public record (alias /feeds/rugs.xml); the live list is /v1/rugs/recent"},{"url":"https://api.loopholetape.com/alerts","description":"how the paid webhook alerts work: the four kinds and how often they fire, the price, the destination allowlist (Discord webhooks and Telegram bots you own), what we store (the delivery endpoint, encrypted) and how to unsubscribe"},{"url":"https://api.loopholetape.com/v1/alerts/unsubscribe","description":"free: stop a webhook alert subscription with the token from its registration answer or test message (idempotent; link previews never act on it); without a token: usage"},{"url":"https://api.loopholetape.com/mcp","description":"MCP server (streamable HTTP, stateless, JSON responses); paid tools use x402 over MCP"},{"url":"https://api.loopholetape.com/terms","description":"terms of use"},{"url":"https://api.loopholetape.com/privacy","description":"privacy notice: exactly what each request, payment and prepaid key records"}],"solana_action":{"kind":"solana-action","spec":"Solana Actions v2.3","price_usd":0.01,"description":"The pump.fun verdict for wallets without an x402 client: pay by a plain USDC transfer (SPL TransferChecked of 10000 base units to payTo's USDC account, with a memo that carries a signed 15-minute nonce), signed and sent by your own wallet; the chained deliver call checks the transfer on-chain and answers the verdict and its free card. Registry status: unregistered until Dialect accepts.","action":"https://api.loopholetape.com/actions/verdict/{mint}","any_mint":"https://api.loopholetape.com/actions/verdict","actions_json":"https://api.loopholetape.com/actions.json","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"10000","payTo":"9HkwyUhDMyjbpSpnyu5xuZ9vRaFQeajnJsavhie7XcsT","registry_status":"unregistered until Dialect accepts","blink":"https://dial.to/?action=solana-action:https://api.loopholetape.com/actions/verdict"},"mcp":{"endpoint":"https://api.loopholetape.com/mcp","transport":"streamable-http","tools":["mint_risk_card","pumpfun_recent_launches","recent_rugs","recent_graduations","creator_reputation","wallet_profile","rhc_recent_launches","rhc_curve_card","rhc_curve_trades","buy_api_key","buy_trial_key","launches_since","buy_dataset","check_pumpfun_risk","check_watchlist_risk","verdict","launches_screened","check_batch_risk","mint_holders","mint_flow","mint_outcome_batch","mint_outcome","subscribe_alerts","token_check","catalog","health","market_regime","sample_mint","new_launches_free","rhc_regime","check_coverage","watchlist_updates","rhc_swap_build_checked","swap_build_checked"]},"labels":"https://api.loopholetape.com/v1/labels","llms":"https://api.loopholetape.com/llms.txt","openapi":"https://api.loopholetape.com/openapi.json","updated":"2026-10-27T04:03:29Z"}