Sentinel is a trading bot for pump.fun and Robinhood Chain launches that checks who launched the coin before it buys, against the record behind 2,847,607 pump.fun and 975,394 Robinhood Chain launches we have captured.
Watch it paper-trade live, every entry and exit, fees included →
The installer is not out yet. Tell us where to reach you and you will hear the day it ships.
Telegram opens TRUTHBOT: press Start and you are on the list (or DM it /notify). The account option uses the wallet you sign in with on /account.
Plug the record into it. Before the buy, your bot asks the one question it cannot answer on its own: who is on the other side of this trade, and how long did people like you have last time?
Every anti-rug feature in the field is a snapshot of the token at the moment you look — mint and freeze authority, a liquidity floor, a hand-kept blacklist, take-profit at 2×. None of them knows the creator’s record, none of them knows how long coins like this one lived, and none of them is scored afterwards. The record is all three.
A rug rate on its own is noise. The creator’s record beside the chain’s own number is a decision.
Live, from /v1/flag and /api/scan. The band carries the rule_id that produced it, so the reason travels with the verdict.
Most bots exit at a multiple. The clock gives yours the measured time-to-rug for the band: how long people holding coins like this actually had before the pull.
Live, from /v1/ttr. The clock is per CELL — band × chain × window — never per coin. One coin’s lifespan is a single draw from the distribution; timing off it is reading noise as a forecast. Below the publish floor the percentiles are null, so a bot should decline the trade rather than guess.
Before the buy, not after the loss. The same stake into each of this creator’s most recent resolved launches, computed from the record.
Live, from /v1/creator/<wallet>/replay. Only the first row is a measurement. The clock row is a ceiling: the published record carries each launch’s peak and final multiple, not the price path between them, so it is the most the exit could have returned and it is labelled as such. Launches with no recorded multiple are left out of the stake and the return, so both describe the same launches.
Every verdict is sealed before the outcome exists — posted under your key, hash-chained to the row before it. Rewrite or remove one and every row after it breaks. Then the coin resolves, and the scorecard reads what actually happened.
An unresolved call counts as pending, never as a win. The denominator is the entire point — a scorecard assembled from remembered wins is marketing.
Agents (Claude, Claude Code, Cursor): add https://api.groundtruths.xyz/mcp as a remote MCP server. 5 free calls a day without a key; a key for more. Sealing and the scorecard always need one, because a scorecard has to belong to somebody.
A sniper or an HFT bot: plain HTTP, no MCP. MCP exists so a language model can reason over this data; a latency-sensitive bot should never have a protocol layer in the path.
One coin, start to finish, with its live band. Solana or Robinhood Chain — it takes no chain parameter, because it detects one from the shape of the address.
The creator’s record: six buckets and the failure rate, with the chain baseline beside it.
The clock. Omit every argument for the whole table in one call. Below the publish floor the percentiles are null and enough_data is false — say “not enough resolved calls to state a time” rather than quoting a number.
Move 3. Solana today: the Robinhood outcome record carries no peak multiple, so neither row can be computed there, and it answers 501 with that reason rather than an empty result that would read as “this creator never launched”.
Seal a verdict before the outcome exists. Needs an API key. Returns the row hash and its sequence.
Your sealed calls, grouped by band and by what the coin actually did, with the hash chain verified rather than asserted.
Every wallet tied to one creator, with role and linkage.
The published known-bad set as a pull. Absence from it is not innocence: this is market data we have captured, not a census of the chain.
Three conventions worth knowing before your first 404. The parameter is ?ca= for a coin and ?addr= for a wallet or creator. Pass chain=solana or chain=rh on the creator endpoints; an unknown chain is a 400 that names the ones it accepts, so a typo cannot quietly answer for the wrong chain. And the host is api.groundtruths.xyz — this site serves no API path of its own.
A creator we have never seen returns null, never false. known_bad is null when a creator is not in the published set, because a false there would read as safe.
← what you get · scan a coin · the sealed record · every autopsy