# How to detect a honeypot token on Robinhood Chain

> Check whether a Robinhood Chain token can be sold before you buy it. One API call simulates a buy and a sell and checks real trades; a real honeypot example shows the evidence.

Source: https://docs.crius.sh/guides/detect-honeypot/ · Updated 2026-10-28

Short answer

Call `GET /v1/robinhood/token/{address}/security` and read `honeypot.is_honeypot`. It is `true` when a simulated sell at the latest block fails (`honeypot.reason: "simulated sell failed"`, with the revert in `tax.simulated.revert_reason`), or when 20+ buys have no sells at all; `honeypot.selective` is `true` when only the developer has sold. A honeypot always gets `risk: "critical"`. No API key needed.

[GET `/token/{address}/security`](https://docs.crius.sh/reference/security/security-checks/) [GET `/token/{address}`](https://docs.crius.sh/reference/tokens/token-profile/)

A honeypot is a token you can buy but can’t sell: the price chart looks healthy because every trade is a buy, and the money stays in the pool. Crius checks this two ways for every Robinhood Chain token. It simulates a real buy, transfer and sell at the latest block, and it looks at who has actually managed to sell. If either test fails, `honeypot.is_honeypot` is `true` and the token’s risk is `critical`, whatever else it has going for it.

A pass is not a guarantee

The sell simulation only runs for tokens with a Uniswap v2 WETH pair, from a fresh wallet at the current block. Traps that whitelist new wallets, switch on after launch or block only some wallets can pass, and a brand-new token needs 20+ buys before the realized rule can flag it. See [Security score: confidence and limitations](https://docs.crius.sh/concepts/security-score-limits/).

## Check if a token can be sold

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/security/security-checks/)

### Crius flags Let's End AI (ENDAI) as a honeypot

Let's End AI (0xc882f10529a5518ee3393af5a80e9ff00d38d44b) has burned liquidity and a renounced owner. Can I sell it?

GET/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security

  

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security");
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security",
)
body = r.json()
print(body["data"])
```

**Real response 200 Captured Oct 28, 2026 · 140 lines (arrays trimmed)**

```json
{
  "data": {
    "contract": {
      "blacklist": false,
      "can_change_limits": false,
      "can_change_tax": false,
      "cooldown": false,
      "implementation": null,
      "is_proxy": false,
      "mintable": false,
      "owner": "0x0000000000000000000000000000000000000000",
      "ownership": "renounced",
      "pausable": false,
      "proxy_kind": null,
      "self_destruct": false,
      "trading_switch": true,
      "upgradeable": false,
      "verified": "none"
    },
    "flags": [
      "honeypot",
      "unverified",
      "uniform_holders"
    ],
    "honeypot": {
      "is_honeypot": true,
      "reason": "simulated sell failed",
      "selective": false
    },
    "hook": null,
    "known_asset": false,
    "launch": {
      "flags": [
        "uniform_holders"
      ],
      "lp_top_wallet": {
        "address": "0xabe3a51937eb4c76ab6449e9823dbffd4409776f",
        "liquidity_usd": 8.58651,
        "pct": 0.0253312
      },
      "sniper_supply_pct": 0.000299049,
      "sniper_top_wallet_pct": 0.000299049,
      "sniper_wallets": 1,
      "sniper_window_blocks": 10,
      "uniform_holders": {
        "balance_pct": 0.112731,
        "holders": 51,
        "of_top": 100
      },
      "wallet_farm": null
    },
    "limits": {
      "max_tx": "1000000000",
      "max_tx_getter": "maxTxAmount()",
      "max_tx_pct": 100,
      "max_wallet": "1000000000",
      "max_wallet_getter": "maxWalletSize()",
      "max_wallet_pct": 100
    },
    "liquidity": {
      "status": "burned",
      "summary": {
        "burned_pct": 99.9715,
        "locked_pct": 0,
        "next_unlock_ts": null,
        "protocol_fee_pct": 0,
        "unlocked_in_wallets_pct": 0.0284848,
        "weighting": "by pool liquidity_usd"
      }
    },
    "primary_dex": "uniswap_v2",
    "risk": "critical",
    "score": 0,
    "tax": {
      "buy_pct": 0,
      "confidence": "high",
      "realized": {
        "buy_pct": 0,
        "by_wallet_class": {
          "dev_sell_pct": null,
          "others_sell_pct": 0
        },
        "last_sample_ts": 1793224820000,
        "max_sell_pct_seen": 0,
        "samples": {
          "buys": 27197,
          "sells": 3423
        },
        "sell_pct": 0,
        "window": "30d"
      },
      "sell_pct": 0,
      "simulated": {
        "amount_eth": 0.042454083286938696,
        "buy_gas": 159144,
        "buy_pct": 0,
        "can_buy": true,
        "can_sell": false,
        "can_transfer": true,
        "from": "eoa",
        "revert_reason": {
          "code": 3,
          "data": "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000245472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454400000000000000000000000000000000000000000000000000000000",
          "message": "execution reverted: TransferHelper: TRANSFER_FROM_FAILED"
        },
        "router": "0x89e5db8b5aa49aa85ac63f691524311aeb649eba",
        "sell_gas": 229228,
        "sell_pct": null,
        "transfer_pct": 0
      },
      "source": "realized",
      "transfer_pct": 0
    },
    "tax_history": [
      {
        "from_block": 62239227,
        "pct": 0,
        "side": "buy"
      },
      {
        "from_block": 62240181,
        "pct": 0,
        "side": "sell"
      }
    ],
    "tax_history_total": 2,
    "tax_mode": "static",
    "token": "0xc882f10529a5518ee3393af5a80e9ff00d38d44b"
  },
  "meta": {
    "block": 100406838,
    "block_age_ms": 1257,
    "block_ts": 1793225081000,
    "chain": "robinhood",
    "finalized_block": 100397649,
    "lag_ms": 14,
    "safe_block": 100401329,
    "simulation": "eth_simulateV1 via Uniswap V2 router at head"
  }
}
```

What this tells you

-   `honeypot.is_honeypot: true`, `reason: "simulated sell failed"`, `score: 0`, `risk: "critical"`.
-   The evidence is in `tax.simulated`: `can_buy: true` and `can_transfer: true`, but `can_sell: false`. Buying about 0.042 ETH worth (`amount_eth`) and sending tokens to another wallet work; selling them back reverts with `"execution reverted: TransferHelper: TRANSFER_FROM_FAILED"`. The router couldn’t move the tokens from the seller into the pool: the token’s `transferFrom` failed.
-   `meta.simulation: "eth_simulateV1 via Uniswap V2 router at head"`: the test ran against the live chain state through the Uniswap v2 router `0x89e5db8b5aa49aa85ac63f691524311aeb649eba`.
-   What looks safe doesn’t help: `contract.ownership: "renounced"` (owner `0x0000000000000000000000000000000000000000`), `liquidity.status: "burned"` (99.97%) and a 0% buy tax.
-   `contract.trading_switch: true`: the code includes a trading switch (a function such as `openTrading()`), common in contracts that control who can trade.
-   `launch.uniform_holders`: 51 of the top 100 holders hold nearly the same amount (about 0.113% of supply each), which costs another 30 points.

[Security checks reference](https://docs.crius.sh/reference/security/security-checks/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Crius%20flags%20Let's%20End%20AI%20\(ENDAI\)%20as%20a%20honeypot&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fguides%2Fdetect-honeypot%2F%23honeypot%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftoken%2F0xc882f10529a5518ee3393af5a80e9ff00d38d44b%2Fsecurity%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/tokens/token-profile/)

### The market agrees: 150 buyers and no sellers in 24 hours

What do Let's End AI's (0xc882f10529a5518ee3393af5a80e9ff00d38d44b) recent trades look like?

GET/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b

  

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b");
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b",
)
body = r.json()
print(body["data"])
```

**Real response 200 Captured Oct 28, 2026 · 303 lines (arrays trimmed)**

```json
{
  "data": {
    "address": "0xc882f10529a5518ee3393af5a80e9ff00d38d44b",
    "admin_flags": null,
    "bundles": {
      "see": "/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/bundles"
    },
    "burned": 0,
    "chain_id": 4663,
    "circulating_supply": 1000000000,
    "creation": {
      "attribution": "direct",
      "block": 62239223,
      "deployed_via": "direct",
      "deployer": "0xb9707a550b874137da35bbcbbb0f6992a8f5e84b",
      "factory": null,
      "source": "trace",
      "tx": "0xc3e87157315181f6982525fa677d217f1b6a0b863eafd19c358f2946312b3f2f"
    },
    "decimals": 9,
    "dexscreener": {
      "boosts": {
        "active_amount": null,
        "active_seen_ts": null,
        "count": 1,
        "last_ts": 1789335376746,
        "total_amount": 100
      },
      "checked_ts": 1793040466789,
      "community_takeover": false,
      "community_takeover_ts": null,
      "confirmed": true,
      "dex_paid": true,
      "dex_paid_ts": 1789332236212,
      "orders": [
        {
          "payment_ts": 1789332236212,
          "status": "approved",
          "type": "tokenProfile"
        }
      ],
      "profile": {
        "description": null,
        "header": "https://cdn.dexscreener.com/cms/images/gvWC0hpE9DWAKeSG?width=1500&height=500&quality=95&format=auto",
        "icon": "https://cdn.dexscreener.com/cms/images/BunNPZVadA3UN23s?width=800&height=800&quality=95&format=auto",
        "links": [
          {
            "label": "Website",
            "type": "website",
            "url": "https://www.letsendai.fun"
          },
          {
            "type": "twitter",
            "url": "https://x.com/letsendaix"
          }
        ]
      },
      "url": "https://dexscreener.com/robinhood/0xc882f10529a5518ee3393af5a80e9ff00d38d44b"
    },
    "first_seen_block": 62239223,
    "history": "complete",
    "holders": {
      "burned_pct": 0,
      "count": 12467,
      "dev_holding": null,
      "dev_pct": null,
      "locked_pct": 0,
      "top10_pct": 65.7728
    },
    "launch": null,
    "liquidity": {
      "see": "/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/liquidity",
      "status": "burned",
      "summary": {
        "burned_pct": 99.9715,
        "locked_pct": 0,
        "next_unlock_ts": null,
        "protocol_fee_pct": 0,
        "unlocked_in_wallets_pct": 0.0284847,
        "weighting": "by pool liquidity_usd"
      }
    },
    "locked": 0,
    "market": {
      "fdv_usd": 890863960,
      "liquidity_usd": 33898.9,
      "market_cap_usd": 890863960,
      "pools_count": 45,
      "quote_liquidity_usd": 16949.4
    },
    "metadata": {
      "banner": "https://cdn.dexscreener.com/cms/images/gvWC0hpE9DWAKeSG?width=1500&height=500&quality=95&format=auto",
      "description": null,
      "links": {
        "discord": null,
        "farcaster": null,
        "github": null,
        "telegram": null,
        "twitter": "https://x.com/letsendaix",
        "website": "https://www.letsendai.fun"
      },
      "logo": "https://api.crius.sh/v1/robinhood/logo/0xc882f10529a5518ee3393af5a80e9ff00d38d44b.png?size=128",
      "logo_original": "https://cdn.dexscreener.com/cms/images/BunNPZVadA3UN23s?width=800&height=800&quality=95&format=auto",
      "socials": {
        "discord": null,
        "farcaster": null,
        "github": null,
        "telegram": null,
        "twitter": null,
        "website": null
      },
      "source": null,
      "sources": {
        "links": "dexscreener",
        "logo": "dexscreener"
      }
    },
    "name": "Let's End AI",
    "price": {
      "ath_market_cap_usd": 890863960,
      "ath_scope": "all_time",
      "ath_ts": 1793225323000,
      "ath_usd": 0.890864,
      "change_pct": {
        "1h": -0.371574,
        "1m": -0.595507,
        "1s": -0.595507,
        "24h": 2.18224,
        "30s": -0.595507,
        "4h": 1.26767,
        "5m": -0.595507,
        "6h": 2.21205
      },
      "confidence": "high",
      "dex": "uniswap_v2",
      "eth": 0.000378207,
      "liquidity_usd": 33887.4,
      "quote": "0x0bd7d308f8e1639fab988df18a8011f41eacad73",
      "quote_liquidity_usd": 16943.7,
      "source_pool": "0x3d3d2ef643dfe12a0a15c51b34284025f048d7f0",
      "thin_liquidity": false,
      "usd": 0.890864
    },
    "security": {
      "see": "/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security"
    },
    "standard": "erc20",
    "stats": {
      "all_time": {
        "buy_volume_usd": 4893579,
        "buys": 27252,
        "first_trade_ts": 1789331187000,
        "sell_volume_usd": 4876381,
        "sells": 3503,
        "since": "chain_start",
        "trades": 30755,
        "volume_usd": 9769960
      },
      "avg_trade_usd": {
        "1h": 0.694851,
        "1m": null,
        "1s": null,
        "24h": 0.964906,
        "30s": null,
        "4h": 0.902284,
        "5m": null,
        "6h": 0.942947
      },
      "buy_volume_usd": {
        "1h": 12.5073,
        "1m": 0,
        "1s": 0,
        "24h": 181.402,
        "30s": 0,
        "4h": 97.4467,
        "5m": 0,
        "6h": 120.697
      },
      "buyers": {
        "1h": 18,
        "1m": 0,
        "1s": 0,
        "24h": 150,
        "30s": 0,
        "4h": 86,
        "5m": 0,
        "6h": 100
      },
      "buys": {
        "1h": 18,
        "1m": 0,
        "1s": 0,
        "24h": 188,
        "30s": 0,
        "4h": 108,
        "5m": 0,
        "6h": 128
      },
      "last_trade_ts": 1793224820000,
      "sell_volume_usd": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 0,
        "30s": 0,
        "4h": 0,
        "5m": 0,
        "6h": 0
      },
      "sellers": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 0,
        "30s": 0,
        "4h": 0,
        "5m": 0,
        "6h": 0
      },
      "sells": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 0,
        "30s": 0,
        "4h": 0,
        "5m": 0,
        "6h": 0
      },
      "traders": {
        "1h": 18,
        "1m": 0,
        "1s": 0,
        "24h": 150,
        "30s": 0,
        "4h": 86,
        "5m": 0,
        "6h": 100
      },
      "trades": {
        "1h": 18,
        "1m": 0,
        "1s": 0,
        "24h": 188,
        "30s": 0,
        "4h": 108,
        "5m": 0,
        "6h": 128
      },
      "txns": {
        "1h": 18,
        "1m": 0,
        "1s": 0,
        "24h": 188,
        "30s": 0,
        "4h": 108,
        "5m": 0,
        "6h": 128
      },
      "volume_eth": {
        "1h": 0.00530164,
        "1m": 0,
        "1s": 0,
        "24h": 0.0772172,
        "30s": 0,
        "4h": 0.0413886,
        "5m": 0,
        "6h": 0.0513545
      },
      "volume_usd": {
        "1h": 12.5073,
        "1m": 0,
        "1s": 0,
        "24h": 181.402,
        "30s": 0,
        "4h": 97.4467,
        "5m": 0,
        "6h": 120.697
      }
    },
    "symbol": "ENDAI",
    "total_supply": 1000000000,
    "type": "generic",
    "ui_multiplier": null,
    "verification": {
      "compiler": null,
      "contract_name": null,
      "implementation": null,
      "is_proxy": false,
      "sourcify": "none"
    }
  },
  "meta": {
    "block": 100409183,
    "block_age_ms": 985,
    "block_ts": 1793225323000,
    "chain": "robinhood",
    "finalized_block": 100401329,
    "lag_ms": 78,
    "pending": [],
    "safe_block": 100405028
  }
}
```

What this tells you

-   `stats.buyers["24h"]: 150` and `stats.buys["24h"]: 188`, against `stats.sellers["24h"]: 0` and `stats.sells["24h"]: 0`. Nobody has sold in a day of steady buying.
-   `stats.all_time` counts 3,503 sells against 27,252 buys, so selling worked at some point. A sell that worked last month is no proof it works today, which is why the simulation runs at the latest block.
-   `market.market_cap_usd` is about $890.9 million on `market.liquidity_usd` of about $33,899. A price that only goes up because no one can sell produces numbers like these.

[Token profile reference](https://docs.crius.sh/reference/tokens/token-profile/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20The%20market%20agrees%3A%20150%20buyers%20and%20no%20sellers%20in%2024%20hours&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fguides%2Fdetect-honeypot%2F%23honeypot-trades%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftoken%2F0xc882f10529a5518ee3393af5a80e9ff00d38d44b%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## How the verdict is decided

| Test | Honeypot when | Where to look |
| --- | --- | --- |
| Sell simulation | A simulated buy works but the sell reverts or returns no ETH. Runs only when the token has a Uniswap v2 WETH pair. | `tax.simulated.can_sell`, `revert_reason`, `meta.simulation` |
| Real trades | 20+ buys and no sells at all. | `tax.realized.samples`, `honeypot.reason` |
| Selective sells | 20+ buys and only the developer has sold (`selective_honeypot`, −60 points). | `honeypot.selective`, `tax.realized.by_wallet_class.dev_sell_pct` |
| The pool's v4 hook | The hook has no code, is a delegated wallet, or many of its own or its code family's pools had 10+ buys and no sells (`hook_critical_risk`, −60 points). | `hook.risk_level`, `hook.flags` |

A failed simulation or a market with no sellers sets `honeypot.is_honeypot` and takes the full 100 points. The hook test doesn’t set `is_honeypot` itself, but a critical hook makes the token `risk: "high"`. See [Check the risk of a Uniswap v4 hook](https://docs.crius.sh/guides/check-uniswap-v4-hook-risk/).

The simulation uses a $100 trade by default; pass `amount_usd` to test the size you plan to trade, since some contracts cap how much one transaction can move (see `limits`). Results are cached briefly; `fresh=1` forces a new simulation (Starter plan, 20 credits).

## Use it in your app

1.  **Check before the first buy.** Call `/security` for every token a user or bot is about to buy. It’s on the anonymous plan, 1 credit with a key.
    
2.  **Block on `honeypot.is_honeypot` or `honeypot.selective`.** Don’t rely on `risk` alone for this: a honeypot is always `critical`, but you want to say why.
    
3.  **Show the evidence.** Quote `honeypot.reason` and, when present, `tax.simulated.revert_reason.message`, so users see it’s a measured result.
    
4.  **Re-check before selling large amounts.** A token can turn into a honeypot after launch (`contract.trading_switch`, `contract.blacklist`). Re-run the check, with `amount_usd` set to the sell size.
    

```python
# Refuse to buy tokens that can't be sold.
import requests

token = "0xc882f10529a5518ee3393af5a80e9ff00d38d44b"  # Let's End AI
data = requests.get(f"https://api.crius.sh/v1/robinhood/token/{token}/security").json()["data"]

hp = data["honeypot"]
if hp["is_honeypot"] or hp["selective"]:
    revert = (data["tax"]["simulated"] or {}).get("revert_reason")
    why = revert.get("message") if isinstance(revert, dict) else revert
    raise SystemExit(f"honeypot: {why or hp['reason'] or 'only the developer has sold'}")
print("no honeypot found:", data["meta"]["simulation"])
```

No sells yet is not the same as a honeypot

A token minutes old may have a few buys and no sells simply because nobody has sold yet. The real-trade test waits for 20 buys, and `tax.confidence` stays `low` or `medium` until there are 20 measured trades. For brand-new tokens, rely on the simulation and the hook check, and look again a few minutes later.

## Frequently asked questions

**How do I check if a Robinhood Chain token is a honeypot?**

Call `GET https://api.crius.sh/v1/robinhood/token/{address}/security` (no key needed). If `honeypot.is_honeypot` is `true`, don't buy: `honeypot.reason` says whether the simulated sell failed or real buyers haven't been able to sell. `honeypot.selective: true` means only the developer has sold.

**Can a token with burned liquidity and a renounced contract be a honeypot?**

Yes. Let's End AI (`0xc882f10529a5518ee3393af5a80e9ff00d38d44b`) has 99.97% of its liquidity burned and its owner set to the zero address, and Crius still flags it as a honeypot because the simulated sell reverts. Burned liquidity means the pool can't be pulled; it says nothing about whether the token lets you sell into it.

**What is a selective honeypot?**

A token where the developer has sold but no one else has, across 20+ buys. Crius reports it as `honeypot.selective: true` with the `selective_honeypot` flag (−60 points). It usually means a whitelist: the contract lets chosen wallets sell and blocks the rest.

**Why does the response say 'no V2 WETH pair, realized tax only'?**

The sell simulation runs through the Uniswap v2 router, so it needs a v2 pair with WETH. Tokens that only trade on Uniswap v4 (most graduated launchpad tokens) are judged from real trades instead: 20+ buys and no sells is a honeypot, and sells by the developer only is a selective honeypot. Their pool's hook is checked too: hooks whose pools trap buyers are flagged `honeypot_observed`.

**I think a token is wrongly flagged. What can I do?**

Look at the evidence first: `honeypot.reason`, `tax.simulated.revert_reason` and `tax.realized.samples`. With a key on the Starter plan or higher, `?fresh=1` re-runs the simulation now (20 credits). If the verdict still looks wrong, email [support@crius.sh](mailto:support@crius.sh) with the token address.

## Related

[Concept **Score confidence & limits** What the Crius security score can and can't see on Robinhood Chain, how to read its confidence fields, and why a low-risk result is not a guarantee a token is safe. Read](https://docs.crius.sh/concepts/security-score-limits/) [Guide **Token security score** Score any Robinhood Chain token from 0 to 100 with one API call. Honeypot, buy and sell taxes, owner powers, LP locks, v4 hook risk and insider launches, with real examples. Read](https://docs.crius.sh/guides/token-security-score/) [Guide **Check token taxes** Get the real buy and sell tax of any Robinhood Chain token in one call, measured from recent trades and checked by simulation. Real examples with a 5% sell tax and a 7% buy tax. Read](https://docs.crius.sh/guides/check-token-taxes/) [Concept **Token taxes** How Crius measures buy, sell and transfer taxes on Robinhood Chain tokens from real trades and from a simulated buy and sell, how the two are combined, and how tax changes are tracked. Read](https://docs.crius.sh/concepts/taxes/) [Guide **Check v4 hook risk** Find out what a Robinhood Chain token's Uniswap v4 hook can do and what happened in its pools (taxes, honeypots, rugs). Real examples, including critical hooks. Read](https://docs.crius.sh/guides/check-uniswap-v4-hook-risk/) [Guide **Safety checks for bots** Keep a Robinhood Chain trading bot away from honeypots, high taxes and pullable liquidity: pre-trade checks with Crius, then live tax and LP alerts. Read](https://docs.crius.sh/guides/add-safety-checks-to-a-trading-bot/) [API reference **Security checks API** Contract checks (ownership, mint, pause, blacklist, proxy, limits), realized and simulated buy/sell tax, honeypot verdict and, for v4 tokens, the pool hook's permissions and risk. Read](https://docs.crius.sh/reference/security/security-checks/)
