pump.fun & Robinhood Chain launch data: radar, risk checks, delta feed, datasets, keys. x402 USDC
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
$2.00 once. Use when your client cannot sign x402 on every call: a prepaid key lt_... holding $2.00 of credit, sent as the X-API-Key header on POST /mcp or any paid HTTP route; each call's price is deducted. A bearer secret; credit does not expire. Try first: buy_trial_key. No arguments.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
$2.00 once. Use when your client cannot sign x402 on every call: a prepaid key lt_... holding $2.00 of credit, sent as the X-API-Key header on POST /mcp or any paid HTTP route; each call's price is deducted. A bearer secret; credit does not expire. Try first: buy_trial_key. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}$5.00 per day file. Use to backtest or train a rug or graduation model on one UTC day of pump.fun launches (about 15k-35k rows), not for live decisions. Input: day (YYYY-MM-DD; days on sale at free GET /v1/datasets). Returns a one-hour download URL.
| Argument | Type | Description |
|---|---|---|
| day* | string | UTC day YYYY-MM-DD listed by the free index /v1/datasets |
{
"type": "object",
"required": [
"day"
],
"properties": {
"day": {
"type": "string",
"examples": [
"2026-09-11"
],
"maxLength": 10,
"minLength": 10,
"description": "UTC day YYYY-MM-DD listed by the free index /v1/datasets"
}
}
}$0.10 once. Use to try the paid tools: a prepaid key lt_... holding $0.10 of credit, sent as the X-API-Key header on POST /mcp or any paid HTTP route. A bearer secret. Larger credit: buy_api_key. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}Free. Start here: every tool with its price, arguments and x402 payment terms (USDC on Solana or Base), plus the label semantics URL. Use it first to choose a tool and budget; it carries no market data.
No arguments.
{
"type": "object",
"properties": {}
}$0.04 per call for one to 25 mints, not per mint. Use when a screener checks a list, some possibly outside the live window: the compact check item per covered mint, others listed as unavailable. Charged if any is covered. Not a safety guarantee. Fields: loopholetape://schema/check_batch_risk.
| Argument | Type | Description |
|---|---|---|
| mints* | array | One to 25 distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link; a mint outside the live window is listed as coverage unavailable. |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 32,
"description": "a mint or a pump.fun/gmgn/solscan/birdeye link"
},
"maxItems": 25,
"minItems": 1,
"description": "One to 25 distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link; a mint outside the live window is listed as coverage unavailable.",
"uniqueItems": true
}
}
}Free. Whether one to five pump.fun mints have full live coverage and a fresh feed (<= 5 s), with the exact prices. Use it right before a paid check; it returns no risk findings.
| Argument | Type | Description |
|---|---|---|
| mints* | array | One to five distinct pump.fun mints with full live coverage, each a mint or a pump.fun/gmgn/solscan/birdeye link |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "One to five distinct pump.fun mints with full live coverage, each a mint or a pump.fun/gmgn/solscan/birdeye link"
}
}
}$0.005 per call. Is this Solana token safe? Solana token safety check (rug check) for ONE pump.fun mint: calibrated rug probability and observed flags, not a safety guarantee. Use right before a swap or while holding it. Returns flags_observed | no_flags_observed (never a safety guarantee), findings. Uncovered or stale: refused before payment. Fields: loopholetape://schema/check_pumpfun_risk.
| Argument | Type | Description |
|---|---|---|
| mint* | string | A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
| cursor | string | null | Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 1024,
"description": "Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result."
}
}
}$0.01 per call for 1-5 mints, not per mint. Use when you hold or watch 2-5 pump.fun mints; for one mint check_pumpfun_risk ($0.005) costs less. Each gets the compact check item. Uncovered or stale: refused before payment. Not a safety guarantee. Fields: loopholetape://schema/check_watchlist_risk.
| Argument | Type | Description |
|---|---|---|
| mints* | array | One to five distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link. All must have full live coverage. |
| cursor | string | null | Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result. |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 32,
"description": "a mint or a pump.fun/gmgn/solscan/birdeye link"
},
"maxItems": 5,
"minItems": 1,
"description": "One to five distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link. All must have full live coverage.",
"uniqueItems": true
},
"cursor": {
"type": [
"string",
"null"
],
"maxLength": 1024,
"description": "Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result."
}
}
}$0.02 per call. Use to judge a new pump.fun token by its creator's earlier launches: graduations, rugs, median seconds to the dev's first sell, last 25 launches. Input: address (base58 wallet). Stale feed: refused before payment. Fields: loopholetape://schema/creator_reputation.
| Argument | Type | Description |
|---|---|---|
| address* | string | base58 Solana wallet address (32-44 chars) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"examples": [
"11111111111111111111111111111111"
],
"maxLength": 44,
"minLength": 32,
"description": "base58 Solana wallet address (32-44 chars)"
}
}
}Free. Feed health: feed_lag_s (seconds behind the newest event), is_stale, last Solana slot, chain_lag_s and slots_behind (how far the tape is behind the chain, estimated from slots against the Solana RPC's processed tip). Use it before trusting a card's freshness.
No arguments.
{
"type": "object",
"properties": {}
}$0.01 per call. New Solana tokens screened. Use to get new pump.fun memecoin launches (last 15 min) that the fixed rule does not mark avoid, ranked by P(true graduation). Stale feed or empty screen: refused before payment. Not a safety guarantee. Fields: loopholetape://schema/launches_screened.
| Argument | Type | Description |
|---|---|---|
| limit | integer | items to return, 1-50 |
| max_age_s | number | launches created within this many seconds (30-3600) |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 50,
"minimum": 1,
"description": "items to return, 1-50"
},
"max_age_s": {
"type": "number",
"default": 900,
"maximum": 3600,
"minimum": 30,
"description": "launches created within this many seconds (30-3600)"
}
}
}$0.001 per poll. New Solana tokens: every covered pump.fun memecoin launch after `since`, each with verdict and P(rug within 300 s). Use when polling: pass next_cursor back as since; an empty page costs the same. Stale feed: refused before payment. Fields: loopholetape://schema/launches_since.
| Argument | Type | Description |
|---|---|---|
| limit | integer | launches per call |
| since | number | null | unix seconds of the last launch seen (next_cursor of the previous call); omit for the last 60 s |
| no_avoid | boolean | true or 1: leave out items whose verdict is avoid |
| min_p_grad | number | keep items whose P(true graduation) is at least this (0 = no floor) |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "launches per call"
},
"since": {
"type": [
"number",
"null"
],
"default": null,
"description": "unix seconds of the last launch seen (next_cursor of the previous call); omit for the last 60 s"
},
"no_avoid": {
"type": "boolean",
"default": false,
"description": "true or 1: leave out items whose verdict is avoid"
},
"min_p_grad": {
"type": "number",
"default": 0,
"maximum": 1,
"minimum": 0,
"description": "keep items whose P(true graduation) is at least this (0 = no floor)"
}
}
}Free. pump.fun market regime: launches and curve buys and sells per minute, mayhem share, migrations vs true graduations, rug flags per hour. Use it to judge the market as a whole; for one mint use check_pumpfun_risk. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}$0.01 per page. Use when you need who bought and sold ONE pump.fun token trade by trade, or to poll its new trades: curve buys and sells in slot order, summaries, demand, cohorts with holder reputation. Input: mint or link, since, limit. Fields: loopholetape://schema/mint_flow.
| Argument | Type | Description |
|---|---|---|
| mint* | string | A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
| limit | integer | trades per page (1-500) |
| since | string | optional start, exclusive: next_cursor 'slot:index' of the previous page, a slot number, or unix seconds (values >= 1e9); omitted = from the launch |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1,
"description": "trades per page (1-500)"
},
"since": {
"type": "string",
"example": "449819861:37",
"maxLength": 40,
"description": "optional start, exclusive: next_cursor 'slot:index' of the previous page, a slot number, or unix seconds (values >= 1e9); omitted = from the launch"
}
}
}$0.01 per call. Solana token holder concentration for ONE pump.fun token. Use when you need who holds it now: top-5 and top-10 share, HHI, cohorts (dev, bundlers, snipers) with holder reputation. Labels are observations, not a verdict on a wallet. Fields: loopholetape://schema/mint_holders.
| Argument | Type | Description |
|---|---|---|
| mint* | string | A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
| limit | integer | holder rows to return, largest first (1-100) |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "holder rows to return, largest first (1-100)"
}
}
}$0.001 per call. Use to grade your own rug or graduation calls or backtest a signal: the outcome of ONE pump.fun launch by a fixed public rule (rugged and when, graduated and when), null until settled. A mint we never recorded is refused unpaid. Fields: loopholetape://schema/mint_outcome.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Any pump.fun mint (base58, 32-44 characters); one we never recorded is refused unpaid. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Any pump.fun mint (base58, 32-44 characters); one we never recorded is refused unpaid. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
}
}
}$0.01 per call whatever the answers. Use to grade a list of your own calls: the outcomes of 1 to 40 pump.fun mints, as mint_outcome ($0.001 alone). Input: mints. Fields: loopholetape://schema/mint_outcome_batch.
| Argument | Type | Description |
|---|---|---|
| mints* | array | One to 40 distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link, known to our capture or not. |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 32,
"description": "a mint or a pump.fun/gmgn/solscan/birdeye link"
},
"maxItems": 40,
"minItems": 1,
"description": "One to 40 distinct pump.fun mints, each a mint or a pump.fun/gmgn/solscan/birdeye link, known to our capture or not.",
"uniqueItems": true
}
}
}$0.025 per call. Solana token safety card for ONE token. Use when you need every field: holders, creator, flags, odds, market, authorities, cohorts with holder reputation. coverage thin = any other SPL mint (authorities, Token-2022). Fields: loopholetape://schema/mint_risk_card.
| Argument | Type | Description |
|---|---|---|
| mint* | string | base58 SPL mint address (32-44 chars); pump.fun mints usually end in 'pump'. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"examples": [
"73sfnFgqQzpSRZSimCC4sxpubqghRGYewYLmiUH2pump"
],
"maxLength": 512,
"minLength": 32,
"description": "base58 SPL mint address (32-44 chars); pump.fun mints usually end in 'pump'. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
}
}
}Free. New Solana tokens ranked: ten covered pump.fun mints under 30 s old by P(rug within 300 s) and ten under 15 min by P(true graduation), refreshed every 5 s, each with its paid check. Use it to find new memecoin launches worth a paid check. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}$0.01 per call. New Solana tokens: the newest pump.fun memecoin launches (default 1 h) as compact cards: curve SOL, buyers, concentration, flags. Use to screen new launches; poll with launches_since ($0.001). Stale feed: refused before payment. Fields: loopholetape://schema/pumpfun_recent_launches.
| Argument | Type | Description |
|---|---|---|
| limit | integer | max items 1-100 |
| min_rs | number | minimum curve SOL right now |
| max_age_s | number | only mints created within this many seconds (30-21600) |
| only_alive | boolean | drop mints with any rug/close flag |
| exclude_mayhem | boolean | drop mayhem-class launches |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "max items 1-100"
},
"min_rs": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "minimum curve SOL right now"
},
"max_age_s": {
"type": "number",
"default": 3600,
"maximum": 21600,
"minimum": 30,
"description": "only mints created within this many seconds (30-21600)"
},
"only_alive": {
"type": "boolean",
"default": false,
"description": "drop mints with any rug/close flag"
},
"exclude_mayhem": {
"type": "boolean",
"default": true,
"description": "drop mayhem-class launches"
}
}
}$0.02 per call. Use to list recent pump.fun migrations to PumpSwap (default last 6 h): graduated=true means we saw the curve reach 84 SOL; each labelled instant_bundle or organic. Not a live rug check. Stale feed: refused before payment. Fields: loopholetape://schema/recent_graduations.
| Argument | Type | Description |
|---|---|---|
| limit | integer | max items 1-100 |
| window_s | number | look-back seconds 60-86400 |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "max items 1-100"
},
"window_s": {
"type": "number",
"default": 21600,
"maximum": 86400,
"minimum": 60,
"description": "look-back seconds 60-86400"
}
}
}$0.02 per call. Use to see which pump.fun tokens fired rug or close flags in a window and how (creator_sold, bundle_dumped, curve_drained, pool_drained), newest first. Not a check on one mint. Stale feed: refused before payment. Fields: loopholetape://schema/recent_rugs.
| Argument | Type | Description |
|---|---|---|
| limit | integer | max items 1-200 |
| window_s | number | look-back seconds 60-21600 |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "max items 1-200"
},
"window_s": {
"type": "number",
"default": 3600,
"maximum": 21600,
"minimum": 60,
"description": "look-back seconds 60-21600"
}
}
}$0.02 per call. Use when you hold or are about to trade ONE pons v2 token on Robinhood Chain: verdict, basis, reasons, deployer record, exact sell_check, taxes, holders, ring screen. Input: address (0x). Unknown address: refused before payment. Fields: loopholetape://schema/rhc_curve_card.
| Argument | Type | Description |
|---|---|---|
| address* | string | 0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"examples": [
"0x1d63d24f2d6e726fa53c45cefcbee2c1b8ffa855"
],
"maxLength": 42,
"minLength": 42,
"description": "0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain"
}
}
}$0.02 per page. Use to index or price a pons curve: Robinhood Chain reserves rebuilt to the wei, per buy, sell and buyback in block order: amounts, fee, taxes, price, next_cursor. Input: address, since, limit. ETH-paired curves up to 90 min old. Fields: loopholetape://schema/rhc_curve_trades.
| Argument | Type | Description |
|---|---|---|
| limit | integer | events per page (1-500) |
| since | string | 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 |
| address* | string | 0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain |
{
"type": "object",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1,
"description": "events per page (1-500)"
},
"since": {
"type": "string",
"example": "70746901:1",
"maxLength": 40,
"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"
},
"address": {
"type": "string",
"description": "0x-prefixed 40-hex pons v2 curve OR token address on Robinhood Chain"
}
}
}$0.01 per call. New token launches on Robinhood Chain. Use to screen or poll new pons memecoins (default last hour) as structure cards: raised, taxes, concentration, ring block, each with verdict and basis. Filters: ring_only, since. Not Solana. Fields: loopholetape://schema/rhc_recent_launches.
| Argument | Type | Description |
|---|---|---|
| pair | string | 'any' or 'eth' (ETH-paired curves only) |
| limit | integer | max items 1-200 |
| since | number | null | unix seconds cursor (next_cursor of the previous call): launches after it, oldest first |
| min_buys | integer | minimum curve buys observed |
| max_age_s | number | only launches within this many seconds (30-21600) |
| only_live | boolean | drop completed / graduated curves |
| ring_only | boolean | ring screen: only curves matching the measured same-block direct-buy cluster structure (unique_buyers >= 8 and same_block_direct_cluster_share >= 0.5) |
{
"type": "object",
"properties": {
"pair": {
"type": "string",
"default": "any",
"description": "'any' or 'eth' (ETH-paired curves only)"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "max items 1-200"
},
"since": {
"type": [
"number",
"null"
],
"default": null,
"minimum": 0,
"description": "unix seconds cursor (next_cursor of the previous call): launches after it, oldest first"
},
"min_buys": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "minimum curve buys observed"
},
"max_age_s": {
"type": "number",
"default": 3600,
"maximum": 21600,
"minimum": 30,
"description": "only launches within this many seconds (30-21600)"
},
"only_live": {
"type": "boolean",
"default": false,
"description": "drop completed / graduated curves"
},
"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)"
}
}
}Free. Robinhood Chain pons regime: launches and graduations per hour, graduation rate, median seconds to graduate, buys per minute, unique buyers, snipe-tax facts. Use it to gauge launch activity as a whole; for one curve use rhc_curve_card. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}Free. Use it to swap a graduated pons token on Robinhood Chain: returns the UNSIGNED KyberSwap transaction to sign. Fee 0.25% (25 bps) to 0x25d408eF54e60F3006bD13d5A040d525E2F359c2 via router 0x6131B5fae19EA4f9D964eAc0408E4408b66337b5. Refused if our verdict is avoid or the quote is over 30 seconds old; live curve: sell_check on rhc_curve_card. Holds no keys; nothing is sent.
| Argument | Type | Description |
|---|---|---|
| side | string | buy (spend ETH for the token, default) or sell (sell the token for ETH) |
| token* | string | 0x address of a graduated pons v2 token on Robinhood Chain (42 characters) |
| amount* | string | Decimal whole units, at most 18 decimals: ETH for side buy, tokens for side sell |
| wallet* | string | 0x address that will sign and receive; put in the calldata as sender and recipient |
| slippage_pct | number | Slippage in percent: default 1, at most 5, at most two decimals |
{
"type": "object",
"required": [
"token",
"wallet",
"amount"
],
"properties": {
"side": {
"type": "string",
"default": "buy",
"maxLength": 8,
"description": "buy (spend ETH for the token, default) or sell (sell the token for ETH)"
},
"token": {
"type": "string",
"examples": [
"0x9029d5c35457a684067beba8d7707ab6a39b634a"
],
"maxLength": 42,
"minLength": 42,
"description": "0x address of a graduated pons v2 token on Robinhood Chain (42 characters)"
},
"amount": {
"type": "string",
"examples": [
"0.01"
],
"maxLength": 40,
"minLength": 1,
"description": "Decimal whole units, at most 18 decimals: ETH for side buy, tokens for side sell"
},
"wallet": {
"type": "string",
"examples": [
"0x000000000000000000000000000000000000dEaD"
],
"maxLength": 42,
"minLength": 42,
"description": "0x address that will sign and receive; put in the calldata as sender and recipient"
},
"slippage_pct": {
"type": "number",
"default": 1,
"maximum": 5,
"minimum": 0.01,
"description": "Slippage in percent: default 1, at most 5, at most two decimals"
}
}
}Free. One full risk card (the exact paid mint_risk_card shape) for a mint aged >= 300 s with >= 3 buys, delayed. Use it to see every field before paying; the server picks the mint, so it is not a check on yours. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}$0.10 once, for 30 days. Use when a Discord or Telegram room you own should get pump.fun and Robinhood Chain alerts without a server. Input: destination (Discord webhook URL or telegram:<bot_token>:<chat_id>), kinds. A test message goes first; a failed test is unpaid. At most 20 messages an hour.
| Argument | Type | Description |
|---|---|---|
| kinds* | array | One or more of graduation_odds, ring_flags, graduations, avoid_flips. |
| label | string | optional name printed at the start of every message (letters, digits, spaces and basic punctuation) |
| rhc_only | boolean | true: leave out the pump.fun kinds |
| max_age_s | number | 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) |
| min_p_grad | number | graduation_odds and avoid_flips: keep items whose P(true graduation) at publication is at least this (0 = no floor) |
| destination* | string | 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. |
| pumpfun_only | boolean |
Free. Use it when you buy or sell a pump.fun token (curve or PumpSwap pool): without wallet an estimated quote (output, impact, fee) from curve or pool reserves; with wallet the UNSIGNED Jupiter swap. Refused on avoid/block. Fee: a disclosed 0.25% (25 bps) to loophole tape's wallet. Holds no keys.
| Argument | Type | Description |
|---|---|---|
| mint* | string | the pump.fun token: a mint or a pump.fun/gmgn/solscan/birdeye link |
| side* | string | buy or sell, required: amount is in lamports for buy, token base units for sell |
| amount* | string | whole base units: lamports for buy (max 50 SOL), token base units for sell |
| wallet | string | optional: the signing wallet's base58 key; without it, an estimated quote |
| slippage_pct | number | percent, default 1 |
{
"type": "object",
"required": [
"mint",
"amount",
"side"
],
"properties": {
"mint": {
"type": "string",
"maxLength": 512,
"minLength": 32,
"description": "the pump.fun token: a mint or a pump.fun/gmgn/solscan/birdeye link"
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"description": "buy or sell, required: amount is in lamports for buy, token base units for sell"
},
"amount": {
"type": "string",
"description": "whole base units: lamports for buy (max 50 SOL), token base units for sell"
},
"wallet": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "optional: the signing wallet's base58 key; without it, an estimated quote"
},
"slippage_pct": {
"type": "number",
"default": 1,
"maximum": 5,
"minimum": 0.01,
"description": "percent, default 1"
}
}
}Free. Coarse pre-trade rug check for one token: a Solana mint or link, or a Robinhood Chain pons 0x address or link. Returns verdict (avoid | caution | no_flags_observed), a reason and coverage; any other Solana mint gets a thin on-chain answer, never avoid on that evidence. Not a safety verdict. Next: verdict $0.01, mint_risk_card $0.025, rhc_curve_card $0.02. Use it first before you buy.
| Argument | Type | Description |
|---|---|---|
| mint | string | Alias of token, either name works: takes a mint or a pump.fun/gmgn/solscan/birdeye link, or a pons 0x address. |
| token | string | The token to check. Solana: a mint or a pump.fun/gmgn/solscan/birdeye link (a base58 SPL or Token-2022 mint, 32-44 chars; a link is resolved to its mint). Robinhood Chain: a pons v2 curve or token address (0x + 40 hex), or its pons link (www.ponsfamily.com/launchpad/<token>) or explorer link (robinhoodchain.blockscout.com/token/<token>). |
{
"type": "object",
"properties": {
"mint": {
"type": "string",
"description": "Alias of token, either name works: takes a mint or a pump.fun/gmgn/solscan/birdeye link, or a pons 0x address."
},
"token": {
"type": "string",
"maxLength": 512,
"minLength": 32,
"description": "The token to check. Solana: a mint or a pump.fun/gmgn/solscan/birdeye link (a base58 SPL or Token-2022 mint, 32-44 chars; a link is resolved to its mint). Robinhood Chain: a pons v2 curve or token address (0x + 40 hex), or its pons link (www.ponsfamily.com/launchpad/<token>) or explorer link (robinhoodchain.blockscout.com/token/<token>)."
}
}
}$0.01 per call. Is this Solana token a rug pull? Token safety verdict (rug check) for ONE pump.fun mint: avoid, caution or no_flags_observed (not a safety guarantee). Use when you need one bounded answer before you buy or hold it, with a free card page. Uncovered or stale: refused before payment. no_flags_observed is not a safety guarantee. Fields: loopholetape://schema/verdict.
| Argument | Type | Description |
|---|---|---|
| mint* | string | A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link. |
{
"type": "object",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "A pump.fun mint with full live coverage; call the free check_coverage tool first. Accepts a mint or a pump.fun/gmgn/solscan/birdeye link."
}
}
}$0.02 per call. Use to classify a wallet that buys pump.fun tokens (insider, latency_bot or skilled) and read its PnL when it ranks on our leaderboard. Not a mint's risk. Input: address (base58 wallet). Stale feed: refused before payment. Fields: loopholetape://schema/wallet_profile.
| Argument | Type | Description |
|---|---|---|
| address* | string | base58 Solana wallet address (32-44 chars) |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"examples": [
"11111111111111111111111111111111"
],
"maxLength": 44,
"minLength": 32,
"description": "base58 Solana wallet address (32-44 chars)"
}
}
}Free. Start or poll a watch cursor for one to five mints: whether new risk or lifecycle events exist, not what they are (a paid check returns them). Cursor lasts 24 h; poll every 15 s or slower. Use it to watch held mints without paying.
| Argument | Type | Description |
|---|---|---|
| mints* | array | One to five distinct pump.fun mints with full live coverage, each a mint or a pump.fun/gmgn/solscan/birdeye link |
| cursor | string | null | Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result. |
{
"type": "object",
"required": [
"mints"
],
"properties": {
"mints": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "One to five distinct pump.fun mints with full live coverage, each a mint or a pump.fun/gmgn/solscan/birdeye link"
},
"cursor": {
"type": [
"string",
"null"
],
"default": null,
"maxLength": 1024,
"description": "Optional opaque watch cursor for these exact mints; no new watched events returns an unpaid result."
}
}
}| true: leave out the Robinhood Chain kind (ring_flags) |
{
"type": "object",
"required": [
"destination",
"kinds"
],
"properties": {
"kinds": {
"type": "array",
"items": {
"enum": [
"graduation_odds",
"ring_flags",
"graduations",
"avoid_flips"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "One or more of graduation_odds, ring_flags, graduations, avoid_flips.",
"uniqueItems": true
},
"label": {
"type": "string",
"default": "",
"maxLength": 40,
"description": "optional name printed at the start of every message (letters, digits, spaces and basic punctuation)"
},
"rhc_only": {
"type": "boolean",
"default": false,
"description": "true: leave out the pump.fun kinds"
},
"max_age_s": {
"type": "number",
"default": 0,
"maximum": 86400,
"minimum": 0,
"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)"
},
"min_p_grad": {
"type": "number",
"default": 0,
"maximum": 1,
"minimum": 0,
"description": "graduation_odds and avoid_flips: keep items whose P(true graduation) at publication is at least this (0 = no floor)"
},
"destination": {
"type": "string",
"maxLength": 300,
"minLength": 20,
"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."
},
"pumpfun_only": {
"type": "boolean",
"default": false,
"description": "true: leave out the Robinhood Chain kind (ring_flags)"
}
}
}