Get $TOLL

Safety layer

Open blocklist

Robinhood Chain coins that Toll's own reads put at BLOCK, with the reason, the dates and a link to the evidence. Free, machine-readable, for any wallet, router, bot or agent.

On this page

What is on it

26,439 coins right now, built 2026-11-08 16:51 UTC.

Every entry comes from something Toll already decides and stores. Nothing here is a new judgment:

  • Stored coin checks: a coin whose newest stored check carries a finding that the pre-buy and pre-sign checks answer BLOCK on (for example sells that fail through the pool’s hook).
  • The launch record: a coin scored rugged 24 h after launch on /record, with the transaction when the launch liquidity was removed.

Coins only for now (kind token). Toll keeps no stored list of bad contracts or wallets, so none are listed; an unlimited approval to a plain wallet is a pattern the pre-sign check catches, not an address.

Reason codes

A program branches on the code; the sentence can be reworded. Each one is a fact the evidence page shows.

CodeWhat it meansFromCoins
sells_failA small test sell through the coin's main pool failed: its hook stops sells.stored check1
lp_pullableOne wallet holds the main pool's liquidity and can pull it.stored check0
dev_soldThe dev sold a large share of the supply.stored check990
first_seconds_buysWallets bought a large share of the supply in the pool's first seconds of trading.stored check17
declared_bundleThe launch made wallets other than the dev exempt from the opening tax (a declared bundle).stored check207
holder_concentrationThe ten biggest wallets hold most of the supply.stored check0
dev_coordinated_sellThe dev sold in the same tenth of a second as other wallets.stored check136
linked_wallets_holdLinked wallets (one funder, or bought together) hold a large share of the supply now.stored check0
large_sell_into_poolA wallet sold a large share of the supply into the pool or curve.stored check0
strong_findingA finding that Toll's pre-buy check blocks on; the check page names it.stored check0
rugged_24hRugged within 24 h of launch, as scored on Toll's launch record (/record).launch record25,877
lp_removed_24hWhoever added the launch liquidity removed most of it within 24 h of launch (the tx is given).launch record15,224

Pull it

GET https://t0ll.xyz/api/blocklist: JSON by default, ?format=csv or ?format=txt; ?since=<ISO time> for entries confirmed from then; ?kind=token. No key. It is built from stored reads, kept up to 10 minutes, and carries an ETag, so a poll that changes nothing costs a 304. 30 requests a minute per caller. Also in /openapi.json.

# the whole list (JSON), then only what changed since your last pull
curl -s https://t0ll.xyz/api/blocklist
curl -s "https://t0ll.xyz/api/blocklist?since=2026-11-08T00:00:00Z"

# CSV, or one address per line
curl -s "https://t0ll.xyz/api/blocklist?format=csv" -o toll-blocklist.csv
curl -s "https://t0ll.xyz/api/blocklist?format=txt" -o toll-blocklist.txt

# send back the ETag you got: 304 when nothing changed
curl -s -H 'If-None-Match: W/"<etag>"' https://t0ll.xyz/api/blocklist -o /dev/null -w "%{http_code}\n"

One entry:

{
  "address": "0x…",
  "kind": "token",
  "chain": 4663,
  "symbol": "…",
  "reasons": ["rugged_24h", "lp_removed_24h"],
  "first_seen": "2026-11-07T12:00:00.000Z",
  "last_confirmed": "2026-11-07T12:00:00.000Z",
  "evidence": "https://t0ll.xyz/check/0x…",
  "tx": "0x…"
}

Use it

  • A wallet: before showing a swap or a transfer of a coin, look it up and show the reason and the evidence link next to the button.
  • A router or aggregator: refuse, or ask for a second click, on a route that buys a listed coin.
  • A trading bot or an agent: pull the list every few minutes with the ETag and skip listed coins. A coin that is not listed is not cleared: for a coin you are about to buy, ask pre_buy_check or check_tx.
const res = await fetch("https://t0ll.xyz/api/blocklist");
const { entries } = await res.json();
const blocked = new Map(entries.map((e) => [e.address, e]));   // addresses are lowercase

export function tollBlock(token) {
  return blocked.get(token.toLowerCase()) ?? null;              // { reasons, evidence, ... } or null
}
import requests

r = requests.get("https://t0ll.xyz/api/blocklist", timeout=20)
blocked = {e["address"]: e for e in r.json()["entries"]}

def toll_block(token: str):
    return blocked.get(token.lower())   # the entry, or None

Latest additions

CoinReasonsFirst seenTx
Coin0x1b12…0b30
0x1b12…0b30
Reasonsrugged_24hFirst seen2026-11-08 16:51 UTCTxnone stored
CoinMindy
0x46fd…c4cb
Reasonsdev_soldFirst seen2026-11-08 16:49 UTCTxnone stored
Coin0x6454…4166
0x6454…4166
Reasonsrugged_24hFirst seen2026-11-08 16:49 UTCTxnone stored
Coin0x9f87…2e03
0x9f87…2e03
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:49 UTCTx0x8a4e…d6fd
Coin0xb627…d1d4
0xb627…d1d4
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:49 UTCTx0xfcb6…f431
Coin0x1a83…8f39
0x1a83…8f39
Reasonsrugged_24hFirst seen2026-11-08 16:48 UTCTxnone stored
Coin0x624c…224e
0x624c…224e
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:45 UTCTx0xa8d1…6b9b
Coin0xe94e…f24c
0xe94e…f24c
Reasonsrugged_24hFirst seen2026-11-08 16:45 UTCTxnone stored
Coin0x1312…eb50
0x1312…eb50
Reasonsrugged_24hFirst seen2026-11-08 16:43 UTCTxnone stored
CoinYOURGP
0x0240…c48b
Reasonsdeclared_bundleFirst seen2026-11-08 16:42 UTCTxnone stored
Coin0x5022…c696
0x5022…c696
Reasonsrugged_24hFirst seen2026-11-08 16:41 UTCTxnone stored
CoinW
0x24cc…4a6f
Reasonsdev_soldFirst seen2026-11-08 16:40 UTCTxnone stored
Coin0x337b…338f
0x337b…338f
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:38 UTCTx0x8a6a…46ca
Coin0x5be5…83ef
0x5be5…83ef
Reasonsrugged_24hFirst seen2026-11-08 16:38 UTCTxnone stored
Coin0x73df…1f47
0x73df…1f47
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:38 UTCTx0x0f55…cc96
Coin0x8081…1d21
0x8081…1d21
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:38 UTCTx0x9cca…36c2
Coin0xb93c…64b1
0xb93c…64b1
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:38 UTCTx0x10aa…a0da
Coin0x58ba…1df6
0x58ba…1df6
Reasonsrugged_24h, lp_removed_24hFirst seen2026-11-08 16:36 UTCTx0xfadf…ac6c
Coincoded
0x0076…b187
Reasonsdev_soldFirst seen2026-11-08 16:32 UTCTxnone stored
CoinINVESTOR
0x2cab…1a57
Reasonsdev_soldFirst seen2026-11-08 16:32 UTCTxnone stored

Changes

  • 2026-11-08: 1,079 added
  • 2026-11-07: 1,589 added
  • 2026-11-06: 1,807 added
  • 2026-11-05: 1,301 added
  • 2026-11-04: 1,117 added
  • 2026-11-03: 1,291 added
  • 2026-11-02: 1,094 added
  • 2026-11-01: 1,041 added
  • 2026-10-31: 1,048 added
  • 2026-10-30: 1,142 added
  • 2026-10-29: 1,426 added
  • 2026-10-28: 716 added
  • 2026-10-27: 805 added
  • 2026-10-26: 912 added

Additions per UTC day, by first seen; the JSON carries the same list as changelog. A coin leaves the list when its newest stored check no longer carries the reason; a launch-record entry stays while the record keeps the coin (30 days). The day a coin left is not kept yet, so pull the whole list once a day to drop removed entries.

License

Free to use, including in commercial products. Attribution: Toll, t0ll.xyz. Link back to t0ll.xyz/blocklist where you show it.

What it is not

  • Not advice, and not a verdict on any person: each reason is a fact read from the chain, with its evidence.
  • Not a list of every bad coin: only coins Toll has read and stored (the newest stored checks, and launches of the last 30 days).
  • Not a list of good coins: a coin missing from it is only a coin we did not put on it.
  • The rules behind a reason are not published here; /record shows how Toll’s launch calls turned out.
Open blocklist · Toll