{
  "x402Version": 2,
  "id": 38091,
  "slug": "38091",
  "resource": "https://tokensafetycheck.xyz/api/token-safety-check",
  "description": "Checks whether an ERC-20 token is safe to buy, hold or sell: honeypot, rug pull and scam risk. Input: chain and token address. Output: a verdict (OK, CAUTION, AVOID or UNVERIFIED), a short summary and each risk with its evidence. Not just code flags: it simulates a buy and a sale through OpenSea's swap, sales from real holders' wallets, sales up to a year after buying, and a holder's sale after each owner power (tax, blacklist, mint) is used. Shows who can pull the liquidity. 18 EVM chains.",
  "type": "http",
  "serviceName": "Is This Token Safe?",
  "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1790949422/bazaar-icons/49cecd23abd006e6.png",
  "resourceType": "Beauty & Personal Care",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0xe541cbc95899c2950ac7702b0a9acf33f1ed855d",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "50000",
      "amountUsd": 0.05,
      "maxTimeoutSeconds": 300
    }
  ],
  "outputSchema": {
    "properties": {
      "example": {
        "type": "object"
      },
      "type": {
        "type": "string"
      }
    },
    "required": [
      "type"
    ],
    "type": "object"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "address": "0x10c56f005a379f8eafc88ff5c3f40d30f0031ac9",
            "chain": "base"
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "example": {
            "costs": {
              "buy": {
                "fees_and_taxes_pct": 1.29,
                "hook_fee_pct": null,
                "pool_fee_pct": 0.3,
                "price_impact_pct": 0.18,
                "token_tax_pct": 0.99
              },
              "round_trip_usd": 97.44,
              "sell": {
                "fees_and_taxes_pct": 1.29,
                "hook_fee_pct": null,
                "pool_fee_pct": 0.3,
                "price_impact_pct": 0.16,
                "token_tax_pct": 0.99
              },
              "tested_usd": 100,
              "transfer_tax_pct": 0
            },
            "owner": {
              "address": "0xe220329659d41b2a9f26e83816b424bdacf62567",
              "control": "wallet",
              "proven_powers": [
                {
                  "effect": "after addBlacklistAddress(0x93e7...075b), the holder's sale reverts: TransferToBlacklistedAddress() (0x93e7...075b is the pool the holder sells into)",
                  "function": "addBlacklistAddress(address)",
                  "power": "block_sale"
                },
                {
                  "effect": "after setProjectTaxRates(9900, 9900), the holder's sale returns 1.0% of what it returns otherwise",
                  "function": "setProjectTaxRates(uint16,uint16)",
                  "power": "raise_tax"
                }
              ]
            },
            "risk_level": "high",
            "risks": [
              {
                "code": "OWNER_CAN_BLOCK_SALE",
                "detail": "after addBlacklistAddress(0x93e7...075b), the holder's sale reverts: TransferToBlacklistedAddress() (0x93e7...075b is the pool the holder sells into).",
                "evidence": "proven",
                "level": "high",
                "message": "A single wallet 0xe220...2567 can at any time block holders from selling (addBlacklistAddress(address))"
              },
              {
                "code": "OWNER_CAN_RAISE_TAX",
                "detail": "after setProjectTaxRates(9900, 9900), the holder's sale returns 1.0% of what it returns otherwise.",
                "evidence": "proven",
                "level": "high",
                "message": "A single wallet 0xe220...2567 can at any time cut what holders get for a sale to 1% (setProjectTaxRates(uint16,uint16))"
              }
            ],
            "sell": {
              "can_sell": true,
              "is_honeypot": false,
              "real_holders": {
                "blocked": 0,
                "highest_tax_pct": 0.99,
                "sold": 14,
                "tested": 14
              },
              "recommended_slippage_pct": 0.5,
              "sells_later": {
                "after_1d": true,
                "after_1h": true,
                "after_1y": true,
                "after_30d": true,
                "after_7d": true,
                "next_block": true
              },
              "via_opensea": {
                "gas_usd": 0.01,
                "provider": "ZERO_EX",
                "received_usd": 98.15,
                "result": "sold",
                "tested_usd": 100
              }
            },
            "summary": "Sells in simulation. No trap found. Risks: A single wallet 0xe220...2567 can at any time block holders from selling (addBlacklistAddress(address)) [high]; A single wallet 0xe220...2567 can at any time cut what holders get for a sale to 1% (setProjectTaxRates(uint16,uint16)) [high] (+2 more, see risks). Checked as it is now; of its 176 days, the events of the last 30 were read.",
            "traps": [],
            "verdict": "CAUTION"
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "body": {
                "description": "One token per call. Invalid input is answered 400 before any payment; a check that fails is not charged. The same token, amount and wallet asked again within 20 s reuses that check (within 5 s if it did not finish; meta.cached_seconds_ago).",
                "properties": {
                  "address": {
                    "description": "Token contract address (ERC-20) on that chain.",
                    "pattern": "^0x[0-9a-fA-F]{40}$",
                    "type": "string"
                  },
                  "amount_usd": {
                    "description": "Size of the planned trade in USD, tested as given. Not given: $100, or 2% of the pool's depth when that is less (at least $10; $50 when the depth is unknown), so price impact stays small. With wallet + sell: the part of your balance to sell (default: all of it).",
                    "exclusiveMinimum": 0,
                    "maximum": 10000000,
                    "type": "number"
                  },
                  "chain": {
                    "description": "OpenSea chain identifier of the token, as returned by OpenSea get_tokens / get_chains (e.g. \"base\", \"ethereum\", \"robinhood\"). EVM chains only.",
                    "enum": [
                      "ethereum",
                      "base",
                      "arbitrum",
                      "optimism",
                      "polygon",
                      "avalanche",
                      "sei",
                      "ape_chain",
                      "flow",
                      "soneium",
                      "bera_chain",
                      "unichain",
                      "hyperevm",
                      "monad",
                      "megaeth",
                      "ink",
                      "robinhood",
                      "arc"
                    ],
                    "type": "string"
                  },
                  "detail": {
                    "description": "standard (default, under 9 KB): decision, reasons and key facts. full: also every raw measurement under `evidence` (9–36 KB; some agent shells keep only ~10 KB of output).",
                    "enum": [
                      "standard",
                      "full"
                    ],
                    "type": "string"
                  },
                  "intent": {
                    "description": "What you came for. The check and the verdict are the same for every intent; the summary answers yours first. check (default): is this token safe to deal with. buy: can I buy and get out later, what can the owner do once I hold it. hold: can I (your wallet) sell now, what changed, what threatens holders. sell: what my sale returns and through whom, the slippage to set, the largest sale that goes through.",
                    "enum": [
                      "check",
                      "buy",
                      "hold",
                      "sell"
                    ],
                    "type": "string"
                  },
                  "wallet": {
                    "description": "Your wallet address (hold / sell): its real balance is sold in simulation, which catches a blacklist on that address. Nothing is signed or sent.",
                    "pattern": "^0x[0-9a-fA-F]{40}$",
                    "type": "string"
                  }
                },
                "required": [
                  "chain",
                  "address"
                ],
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json",
                  "form-data",
                  "text"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "token-safety",
    "honeypot",
    "rug-pull",
    "token-risk",
    "scam-detection",
    "bazaar"
  ],
  "sourceHost": "tokensafetycheck.xyz",
  "lastUpdated": "2026-10-03T12:00:38.824Z",
  "quality": {
    "calls30d": 2,
    "uniquePayers30d": 2,
    "lastCalledAt": "2026-10-03T12:00:38.274Z"
  },
  "metadata": {
    "serviceName": "Is This Token Safe?",
    "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1790949422/bazaar-icons/49cecd23abd006e6.png",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "address": "0x10c56f005a379f8eafc88ff5c3f40d30f0031ac9",
              "chain": "base"
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "costs": {
                "buy": {
                  "fees_and_taxes_pct": 1.29,
                  "hook_fee_pct": null,
                  "pool_fee_pct": 0.3,
                  "price_impact_pct": 0.18,
                  "token_tax_pct": 0.99
                },
                "round_trip_usd": 97.44,
                "sell": {
                  "fees_and_taxes_pct": 1.29,
                  "hook_fee_pct": null,
                  "pool_fee_pct": 0.3,
                  "price_impact_pct": 0.16,
                  "token_tax_pct": 0.99
                },
                "tested_usd": 100,
                "transfer_tax_pct": 0
              },
              "owner": {
                "address": "0xe220329659d41b2a9f26e83816b424bdacf62567",
                "control": "wallet",
                "proven_powers": [
                  {
                    "effect": "after addBlacklistAddress(0x93e7...075b), the holder's sale reverts: TransferToBlacklistedAddress() (0x93e7...075b is the pool the holder sells into)",
                    "function": "addBlacklistAddress(address)",
                    "power": "block_sale"
                  },
                  {
                    "effect": "after setProjectTaxRates(9900, 9900), the holder's sale returns 1.0% of what it returns otherwise",
                    "function": "setProjectTaxRates(uint16,uint16)",
                    "power": "raise_tax"
                  }
                ]
              },
              "risk_level": "high",
              "risks": [
                {
                  "code": "OWNER_CAN_BLOCK_SALE",
                  "detail": "after addBlacklistAddress(0x93e7...075b), the holder's sale reverts: TransferToBlacklistedAddress() (0x93e7...075b is the pool the holder sells into).",
                  "evidence": "proven",
                  "level": "high",
                  "message": "A single wallet 0xe220...2567 can at any time block holders from selling (addBlacklistAddress(address))"
                },
                {
                  "code": "OWNER_CAN_RAISE_TAX",
                  "detail": "after setProjectTaxRates(9900, 9900), the holder's sale returns 1.0% of what it returns otherwise.",
                  "evidence": "proven",
                  "level": "high",
                  "message": "A single wallet 0xe220...2567 can at any time cut what holders get for a sale to 1% (setProjectTaxRates(uint16,uint16))"
                }
              ],
              "sell": {
                "can_sell": true,
                "is_honeypot": false,
                "real_holders": {
                  "blocked": 0,
                  "highest_tax_pct": 0.99,
                  "sold": 14,
                  "tested": 14
                },
                "recommended_slippage_pct": 0.5,
                "sells_later": {
                  "after_1d": true,
                  "after_1h": true,
                  "after_1y": true,
                  "after_30d": true,
                  "after_7d": true,
                  "next_block": true
                },
                "via_opensea": {
                  "gas_usd": 0.01,
                  "provider": "ZERO_EX",
                  "received_usd": 98.15,
                  "result": "sold",
                  "tested_usd": 100
                }
              },
              "summary": "Sells in simulation. No trap found. Risks: A single wallet 0xe220...2567 can at any time block holders from selling (addBlacklistAddress(address)) [high]; A single wallet 0xe220...2567 can at any time cut what holders get for a sale to 1% (setProjectTaxRates(uint16,uint16)) [high] (+2 more, see risks). Checked as it is now; of its 176 days, the events of the last 30 were read.",
              "traps": [],
              "verdict": "CAUTION"
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "description": "One token per call. Invalid input is answered 400 before any payment; a check that fails is not charged. The same token, amount and wallet asked again within 20 s reuses that check (within 5 s if it did not finish; meta.cached_seconds_ago).",
                  "properties": {
                    "address": {
                      "description": "Token contract address (ERC-20) on that chain.",
                      "pattern": "^0x[0-9a-fA-F]{40}$",
                      "type": "string"
                    },
                    "amount_usd": {
                      "description": "Size of the planned trade in USD, tested as given. Not given: $100, or 2% of the pool's depth when that is less (at least $10; $50 when the depth is unknown), so price impact stays small. With wallet + sell: the part of your balance to sell (default: all of it).",
                      "exclusiveMinimum": 0,
                      "maximum": 10000000,
                      "type": "number"
                    },
                    "chain": {
                      "description": "OpenSea chain identifier of the token, as returned by OpenSea get_tokens / get_chains (e.g. \"base\", \"ethereum\", \"robinhood\"). EVM chains only.",
                      "enum": [
                        "ethereum",
                        "base",
                        "arbitrum",
                        "optimism",
                        "polygon",
                        "avalanche",
                        "sei",
                        "ape_chain",
                        "flow",
                        "soneium",
                        "bera_chain",
                        "unichain",
                        "hyperevm",
                        "monad",
                        "megaeth",
                        "ink",
                        "robinhood",
                        "arc"
                      ],
                      "type": "string"
                    },
                    "detail": {
                      "description": "standard (default, under 9 KB): decision, reasons and key facts. full: also every raw measurement under `evidence` (9–36 KB; some agent shells keep only ~10 KB of output).",
                      "enum": [
                        "standard",
                        "full"
                      ],
                      "type": "string"
                    },
                    "intent": {
                      "description": "What you came for. The check and the verdict are the same for every intent; the summary answers yours first. check (default): is this token safe to deal with. buy: can I buy and get out later, what can the owner do once I hold it. hold: can I (your wallet) sell now, what changed, what threatens holders. sell: what my sale returns and through whom, the slippage to set, the largest sale that goes through.",
                      "enum": [
                        "check",
                        "buy",
                        "hold",
                        "sell"
                      ],
                      "type": "string"
                    },
                    "wallet": {
                      "description": "Your wallet address (hold / sell): its real balance is sold in simulation, which catches a blacklist on that address. Nothing is signed or sent.",
                      "pattern": "^0x[0-9a-fA-F]{40}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "chain",
                    "address"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "tokensafetycheck.xyz",
    "manifest_name": "tokensafetycheck.xyz",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-14T01:15:01.050Z"
  },
  "exampleResponse": {
    "example": {},
    "type": "string"
  }
}