Server definition
- Hash
- sha256:fdfef427786b7233c94316f7736017dc9fb251297a6b324082451b3969f10ff3
- What it is
- What a remote MCP server returned when asked what it offers: 30 tools
The blob, as servednamed by its sha256
{
"instructions": "PumpPill answers two questions about a token contract, for\nRobinhood Chain (an Arbitrum Orbit L2, chain ID 4663) and Solana:\n\n \"what is wrong with this contract\" - the stored safety read, and\n \"what happened to tokens like it\" - outcomes measured forward from the\n moment PumpPill first logged them, with losers in the denominator.\n\nPrefer `rh_token_safety` for a Robinhood Chain address (0x + 40 hex) and\n`sol_token_detail` for a Solana mint (base58). `rh_ticker_resolve` is the tool\nfor \"which contract is the real $NAME\", which is the question that actually\ncosts people money.\n\nEvery result carries `cite` and `as_of`. Quote those. Figures are recomputed\ncontinuously and a number without its timestamp will be wrong within the hour.\n\nTwo limits to carry into any answer you give from this data. A flag is a\nfinding with evidence, not a verdict - it says what is structurally true about\nthe contract, not what the price will do. And an outcome count is a count, not\na success rate for anyone who bought: entry is the market cap at the moment of\nlogging, which is not a price anyone was offered.\n\nFOMO is a trading app whose feed PumpPill stores. `fomo_gathering` lists the\ntokens several of its traders bought inside a window, with PumpPill's own read\nbeside each; `fomo_trader` is one trader's week; a token read carries a `fomo`\nblock. The feed shows large trades only and never a size, so say \"FOMO\ntraders\", not \"buyers\".\n\n`whats_moving` is the one call for \"what is happening right now\": gatherings,\nthe calls PumpPill's room posted, and new flags together. Hand its `as_of` back\nas `since` to get only what changed. `room_calls` is the room's graded call\nlist, losers included.\n\n`trade_link`, where present, opens PumpPill's own Telegram trade bot with that\ncontract loaded. Give it when the reader asks how to buy or sell. It is a place\nto trade, not a recommendation: a flagged token carries one too.\n\n`best_calls` is the room's proven 2x/5x/10x/20x+ calls: the best of the room,\nnot its record (that is `room_calls`).\n\nAgent trading (`agent_buy`, `agent_sell`, `agent_order`, `agent_status`) lets a\nmember's agent trade Robinhood Chain tokens from their PumpPill trade bot\nwallet, with their agent key. PumpPill reads the token first and may refuse it;\nthe member's own limits apply; every order is written down before it is placed\nand the member gets a Telegram message for it. These move real money: confirm\nthe token and the size with the member before every trade, and report a\nrefusal's reason as given.\n\nNothing here is advice, and nothing here predicts. If a tool returns\nfound=false, that is an honest miss - say so rather than filling the gap.",
"tools": [
{
"description": "Buy a Robinhood Chain token with ETH from the member's PumpPill trade bot wallet. Needs the member's agent key (X-Agent-Key: ppa_..., made in PumpPill's Telegram trade bot under Settings, AI agent). PumpPill reads the token first and, unless the member turned refusal off, refuses a HIGH/CRITICAL read or a token it has not read, saying why. The member's own limits apply. The order is written down before it is placed; poll agent_order for the result. Moves real money: confirm the token and size with the member first.",
"inputSchema": {
"properties": {
"address": {
"default": "",
"title": "Address",
"type": "string"
},
"again": {
"default": false,
"title": "Again",
"type": "boolean"
},
"eth": {
"default": 0,
"title": "Eth",
"type": "number"
}
},
"title": "agent_buyArguments",
"type": "object"
},
"name": "agent_buy",
"outputSchema": null
},
{
"description": "The state of one order agent_buy or agent_sell filed: filed, running, done (with the transaction), failed or refused (with the reason), skipped (the member switched the agent off). Needs the member's agent key (X-Agent-Key: ppa_..., made in PumpPill's Telegram trade bot under Settings, AI agent).",
"inputSchema": {
"properties": {
"order_id": {
"default": 0,
"title": "Order Id",
"type": "integer"
}
},
"title": "agent_orderArguments",
"type": "object"
},
"name": "agent_order",
"outputSchema": null
},
{
"description": "Sell part or all of a Robinhood Chain token the member holds in their PumpPill trade bot wallet, as a percent of the holding (1-100). Needs the member's agent key (X-Agent-Key: ppa_..., made in PumpPill's Telegram trade bot under Settings, AI agent). A sell is never refused for the token's read. Written down before it is placed; poll agent_order for the result. Moves real money: confirm with the member first.",
"inputSchema": {
"properties": {
"address": {
"default": "",
"title": "Address",
"type": "string"
},
"pct": {
"default": 100,
"title": "Pct",
"type": "integer"
}
},
"title": "agent_sellArguments",
"type": "object"
},
"name": "agent_sell",
"outputSchema": null
},
{
"description": "Whether the member's agent is switched on, the wallet's ETH, the member's agent limits and what is left of today's, whether red flags are refused, and the last five orders. Call it before a first trade and after any error. Needs the member's agent key (X-Agent-Key: ppa_..., made in PumpPill's Telegram trade bot under Settings, AI agent).",
"inputSchema": {
"properties": {},
"title": "agent_statusArguments",
"type": "object"
},
"name": "agent_status",
"outputSchema": null
},
{
"description": "The room's calls that reached 2x, 5x, 10x or 20x+ after the post, on Solana and Robinhood Chain, ONLY where PumpPill's own price readings after the call confirm the peak (a peak seen on one odd pool is left out). Each row: entry market cap at the post, peak, multiple, when it was called and why. The best of the room, not its record: room_calls is the full list with losers. A day behind the members.",
"inputSchema": {
"properties": {
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Chain"
},
"days": {
"default": 30,
"title": "Days",
"type": "integer"
}
},
"title": "best_callsArguments",
"type": "object"
},
"name": "best_calls",
"outputSchema": null
},
{
"description": "Can this token be sold, and what can the deployer still do to it: mint and freeze authority, dev share of supply, and the liquidity position, from contract facts. Open to everyone, cache-only. have_record=false means no read, not safe. Fields are null when unknown rather than guessed. Facts, not advice.",
"inputSchema": {
"properties": {
"address": {
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "exit_checkArguments",
"type": "object"
},
"name": "exit_check",
"outputSchema": null
},
{
"description": "Fetch one result by the id search returned (rh:<address>, sol:<mint> or learn:<slug>). A token id returns the stored read as text with its citation and as-of time; a learn id returns the lesson's full text and, when it has a video, the transcript. Never triggers a scan; a missing read says so.",
"inputSchema": {
"properties": {
"id": {
"title": "Id",
"type": "string"
}
},
"required": [
"id"
],
"title": "fetchArguments",
"type": "object"
},
"name": "fetch",
"outputSchema": null
},
{
"description": "Tokens that several different traders on the FOMO app bought inside a window (default 3 traders in 60 minutes), on Robinhood Chain and Solana, most traders first. Each row has the latest and the first buy seen with their market caps, how many of those traders are still in, and pumppill_read, PumpPill's own risk answer for the token ('none stored' is a gap, not a clean bill). FOMO's feed shows large buys only: this counts FOMO users, not all buyers, and carries no trade sizes.",
"inputSchema": {
"properties": {
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Chain"
},
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
},
"min_traders": {
"default": 3,
"title": "Min Traders",
"type": "integer"
},
"window_minutes": {
"default": 60,
"title": "Window Minutes",
"type": "integer"
}
},
"title": "fomo_gatheringArguments",
"type": "object"
},
"name": "fomo_gathering",
"outputSchema": null
},
{
"description": "What one trader on the FOMO app did in the last 7 days, by FOMO name: buys with the market cap at the buy, sells with the realized profit the feed reported, the tokens touched, a record once 15 buys have been scored, and the Robinhood Chain wallet when PumpPill has matched one. Large trades only, no sizes; found=false means not seen in our data (it starts 2026-09-30), not that the trader is inactive.",
"inputSchema": {
"properties": {
"handle": {
"title": "Handle",
"type": "string"
}
},
"required": [
"handle"
],
"title": "fomo_traderArguments",
"type": "object"
},
"name": "fomo_trader",
"outputSchema": null
},
{
"description": "Whether the claim this client sends is an active PumpPill membership, its tier, and when it renews. An unauthenticated call answers signed_in=false, not an error. Nothing about the claim itself is returned.",
"inputSchema": {
"properties": {},
"title": "membership_statusArguments",
"type": "object"
},
"name": "membership_status",
"outputSchema": null
},
{
"description": "MEMBERS: the Robinhood Chain wallets this member follows: capital (what each can move), record (counts beside the chain's base rate), activity in the window, and the events that fired. Needs a PumpPill membership (Authorization: Bearer <claim>, from pumppill.org/premium) or one x402 payment per call (USDC on Base). Capital is size, not correctness; a rate is never shipped without its denominator. No activity means not seen moving, not gone quiet; sell sizes are floors, never profit.",
"inputSchema": {
"properties": {
"days": {
"default": 7,
"title": "Days",
"type": "integer"
}
},
"title": "my_watched_walletsArguments",
"type": "object"
},
"name": "my_watched_wallets",
"outputSchema": null
},
{
"description": "Forward-measured outcomes across both chains: the share of logged tokens that doubled, reached 5x, 10x, or never moved. Entry is the market cap at the MOMENT OF LOGGING, never backfilled, and losers are in the denominator: a population measurement, not a track record. Recomputed hourly; a call during the recompute may take 45s or answer error='recomputing', and a retry a minute later is instant.",
"inputSchema": {
"properties": {},
"title": "outcomes_measuredArguments",
"type": "object"
},
"name": "outcomes_measured",
"outputSchema": null
},
{
"description": "MEMBERS: the premium call table, the Solana tokens PumpPill logged for members, newest first, with the market cap at logging and the move since. Needs a PumpPill membership (Authorization: Bearer <claim>, from pumppill.org/premium) or one x402 payment per call (USDC on Base). Each row cleared an attention filter (a promoter with real reach, or a moving narrative): a filter on attention, not a prediction or a recommendation. Narrative and trend columns are deliberately withheld.",
"inputSchema": {
"properties": {
"hours": {
"default": 24,
"title": "Hours",
"type": "integer"
},
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
}
},
"title": "premium_calls_recentArguments",
"type": "object"
},
"name": "premium_calls_recent",
"outputSchema": null
},
{
"description": "How Robinhood Chain measures from PumpPill's index, recomputed hourly with the method in the payload: tokens seen, forward-measured outcomes, how many doubled, 5x, 10x or crossed $100K, how many are stock-quoted. Quote computed_at, not the time you asked. Counts, not a success rate: entry is the market cap at logging.",
"inputSchema": {
"properties": {},
"title": "rh_chain_statsArguments",
"type": "object"
},
"name": "rh_chain_stats",
"outputSchema": null
},
{
"description": "What one Robinhood Chain wallet has launched and how those went: tokens, liveness, liquidity, which crossed $100K. Factory and relayer wallets above the launch ceiling get no record, and so does a wallet with a single launch. No success rate is computed: the rows hold only what crossed.",
"inputSchema": {
"properties": {
"address": {
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "rh_deployer_recordArguments",
"type": "object"
},
"name": "rh_deployer_record",
"outputSchema": null
},
{
"description": "Robinhood Chain wallets whose first buy landed in the early window of tokens that later crossed $100K, with the feed's base rate (meta.early_base_rate) beside every rate. A record is a fact about timing, not a forecast; quote a wallet's rate only with the base rate. Wallets are removed for spraying, underperforming the base rate, or silence.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
},
"window": {
"default": "30d",
"title": "Window",
"type": "string"
}
},
"title": "rh_early_walletsArguments",
"type": "object"
},
"name": "rh_early_wallets",
"outputSchema": null
},
{
"description": "Tokens whose latest scan in the last 30 days found HIGH or CRITICAL structural risk, with the findings named. Each is a finding with evidence, not a verdict on price and not an accusation. Shows what the current wave of bad launches looks like; never a list to trade against.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
}
},
"title": "rh_flagged_recentArguments",
"type": "object"
},
"name": "rh_flagged_recent",
"outputSchema": null
},
{
"description": "MEMBERS: read one Robinhood Chain contract FRESH, when rh_token_safety said found=false or the stored read is stale. Needs a PumpPill membership (Authorization: Bearer <claim>, from pumppill.org/premium) or one x402 payment per call (USDC on Base). Slow (10-20s cold; do not retry). Capped per member and per day; the answer reports the budget and a refusal names the cap and its reset (00:00 UTC). A read from the last few minutes is served from the store without spending. Not idempotent: each call may spend the cap.",
"inputSchema": {
"properties": {
"address": {
"default": "",
"title": "Address",
"type": "string"
}
},
"title": "rh_scan_nowArguments",
"type": "object"
},
"name": "rh_scan_now",
"outputSchema": null
},
{
"description": "Memecoins quoted in TOKENIZED STOCKS on Robinhood Chain. Pass a stock symbol (NVDA, SPY, TSLA) for the trading, unflagged tokens quoted in it with liquidity and latest scan risk; omit it for every stock with a count. This pairing exists on no other chain.",
"inputSchema": {
"properties": {
"stock": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Stock"
}
},
"title": "rh_stock_pairsArguments",
"type": "object"
},
"name": "rh_stock_pairs",
"outputSchema": null
},
{
"description": "The ONE Robinhood Chain contract worth naming for a ticker: alive, $10K+ in its pool, not flagged HIGH or CRITICAL. Other contracts using the name come back as a count, never a list. found=false means nothing clears the gate, which is itself the answer.",
"inputSchema": {
"properties": {
"symbol": {
"title": "Symbol",
"type": "string"
}
},
"required": [
"symbol"
],
"title": "rh_ticker_resolveArguments",
"type": "object"
},
"name": "rh_ticker_resolve",
"outputSchema": null
},
{
"description": "Stored safety read for one Robinhood Chain token (0x + 40 hex): sellability, launch flags with evidence, where the launch money went, and the move since PumpPill first logged it. Never triggers a scan. found=false means not yet indexed, not safe; the miss is queued for reading. deep=true means the economics, lock, operator and thesis passes ran. A flag is a finding, not a prediction. `fomo`, when present, is what FOMO app traders did with it: 24h counts, recent trades, the first buy seen and who is still in (large trades only, no sizes).",
"inputSchema": {
"properties": {
"address": {
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "rh_token_safetyArguments",
"type": "object"
},
"name": "rh_token_safety",
"outputSchema": null
},
{
"description": "One Robinhood Chain wallet's holdings and trades off the chain's own feed. A sell's size is derived from the router's minimum-out, so it is a floor, never profit. Many addresses on this chain are routing contracts, not people. `fomo_trader`, when present, names the FOMO app trader this wallet was matched to.",
"inputSchema": {
"properties": {
"address": {
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "rh_wallet_recordArguments",
"type": "object"
},
"name": "rh_wallet_record",
"outputSchema": null
},
{
"description": "Wallets holding 10+ ETH or $50K+ in tokens, read as on-chain balances. Tiers by dollars held (mega, whale, mini, large); positions_top names each wallet's three largest holdings. Measures who CAN move a pool, never who is right or who to follow: most listed wallets hold rather than trade (meta.trading_30d). sort='active' orders by trades.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
},
"sort": {
"default": "balance",
"title": "Sort",
"type": "string"
}
},
"title": "rh_whale_walletsArguments",
"type": "object"
},
"name": "rh_whale_wallets",
"outputSchema": null
},
{
"description": "The calls PumpPill's room posted on Solana and Robinhood Chain, newest first, each with the rule that fired (whale buy, revival, early detection, agreement between systems), the market cap at the post, the move since, the 7-day peak and whether it died. Losers are in the list. Open to everyone a few minutes behind (delay_minutes says how far); a member's claim reads it live. A count of calls is not a success rate.",
"inputSchema": {
"properties": {
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Chain"
},
"days": {
"default": 7,
"title": "Days",
"type": "integer"
},
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
}
},
"title": "room_callsArguments",
"type": "object"
},
"name": "room_calls",
"outputSchema": null
},
{
"description": "The Robinhood Chain tokens that pass every filter of a member's rule right now, judged by PumpPill on its side. `rule` is the code (pp1....) the member copies from pumppill.org/customize. Each token comes with each filter's reading. A token passing is a match to the member's own rule, not a recommendation; compare with the last check to find NEW passes. Up to 40, biggest first.",
"inputSchema": {
"properties": {
"rule": {
"default": "",
"title": "Rule",
"type": "string"
}
},
"title": "rule_matchesArguments",
"type": "object"
},
"name": "rule_matches",
"outputSchema": null
},
{
"description": "Find PumpPill's read for a query: a Robinhood Chain address (0x + 40 hex), a Solana mint (base58), or a ticker such as HOOD. Returns ids for fetch. For a ticker the result is the one Robinhood Chain contract that clears the gate (alive, $10K+ pool, not flagged HIGH or CRITICAL) with the count of others using the name, then Solana tokens PumpPill holds under that exact name, marked as name matches. No results is an honest miss, not a clean bill. A question in words (how do exits work, what is a liquidity lock) searches PumpPill's lessons at /learn instead and returns learn:<slug> ids with a matching passage.",
"inputSchema": {
"properties": {
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "searchArguments",
"type": "object"
},
"name": "search",
"outputSchema": null
},
{
"description": "Solana wallets recorded among a token's first buyers on tokens whose peak later reached 5x the scan cap, with the base rate (meta.base_5x, about one in twenty) beside every rate. Sprayers, at-or-below-base and silent wallets are removed with the reason. Wallet identity showed no out-of-sample edge on Solana: this answers who was early, not who to copy.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
}
},
"title": "sol_early_walletsArguments",
"type": "object"
},
"name": "sol_early_wallets",
"outputSchema": null
},
{
"description": "Any Solana token by mint (base58): holders, bundled-launch read, what the deployer still holds, socials, and meta.verdict, one sentence on whether it trades, can be sold, what the dev holds and how far it has run. Start from the verdict; the rest is evidence. A clean read is not a reason to buy. depth='quick_scan' means a token PumpPill never logged: contract and holders only, no entry or peak. `fomo`, when present, is what FOMO app traders did with it: 24h counts, recent trades, the first buy seen and who is still in (large trades only, no sizes).",
"inputSchema": {
"properties": {
"mint": {
"title": "Mint",
"type": "string"
}
},
"required": [
"mint"
],
"title": "sol_token_detailArguments",
"type": "object"
},
"name": "sol_token_detail",
"outputSchema": null
},
{
"description": "One call for 'what is happening right now' on Robinhood Chain and Solana: the tokens FOMO app traders are gathering on (with PumpPill's read of each), the calls PumpPill's room posted (a few minutes behind unless a member asks), and newly flagged Robinhood Chain tokens. Pass the as_of from the last answer as `since` to get only what changed. A list of what moved, not of what to buy: flags are findings and trader counts are counts.",
"inputSchema": {
"properties": {
"chain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Chain"
},
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Since"
}
},
"title": "whats_movingArguments",
"type": "object"
},
"name": "whats_moving",
"outputSchema": null
},
{
"description": "MEMBERS: what X has been saying about one contract: posts naming the address in their text, distinct accounts, combined reach, acceleration, and each poster's record on earlier calls. Needs a PumpPill membership (Authorization: Bearer <claim>, from pumppill.org/premium) or one x402 payment per call (USDC on Base). Reads X live before answering when the hourly budget allows (the live field says); the stored corpus is always underneath. A SAMPLE of X: zero means PumpPill saw none, and silence on an EVM contract is normal. Counts, reach and record; no sentiment or hype score. Each call may spend a live-read budget.",
"inputSchema": {
"properties": {
"contract": {
"default": "",
"title": "Contract",
"type": "string"
}
},
"title": "x_chatterArguments",
"type": "object"
},
"name": "x_chatter",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:fdfef427786b7233c94316f7736017dc9fb251297a6b324082451b3969f10ff3 | sha256sum