Get Token Security Information
Market & Token Data
Get Token Security
Retrieve comprehensive security information for a token including contract holdings, burned tokens, trading fees, transfer restrictions, holder distribution analysis, contract risk indicators, and AI-powered static code analysis for verified EVM contracts.
GET
Get Token Security Information
Documentation Index
Fetch the complete documentation index at: https://docs.mobula.io/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Token Security endpoint provides detailed security and restriction data for tokens on EVM and Solana chains. It aggregates data from multiple sources to identify potential red flags, holding distributions, fee structures, transfer limitations, contract risks, and minting/freezing capabilities that may affect trading.Data Sources
Security data is aggregated from multiple sources for comprehensive analysis:| Source | Description | Chain Support |
|---|---|---|
| GoPlus API | Primary security provider analyzing contract bytecode and on-chain behavior for honeypots, taxes, ownership, blacklists, and more | EVM + Solana |
| Static Code Analysis | Deep source code analysis that detects hidden risks in verified contracts (balance manipulation, hidden minting, honeypot mechanisms) | EVM only |
| On-chain RPC | Direct blockchain queries for real-time data (holdings, max limits, mint/freeze authorities) | EVM + Solana |
| IsHoneypot Service | Specialized honeypot detection via simulated trades | EVM only |
Static Code Analysis Details
For EVM tokens with verified source code on block explorers (Etherscan, etc.), our static analysis can detect:- Balance manipulation (
balanceMutable): Hidden functions that allow arbitrary balance modifications - Minting capabilities (
isMintable): Hidden or obfuscated minting functions - Transfer restrictions (
transferPausable): Mechanisms to pause or block transfers - Blacklist/Whitelist (
isBlacklisted,isWhitelisted): Address restriction mechanisms - Tax manipulation (
modifyableTax): Ability to change fees after deployment - Honeypot mechanisms (
isHoneypot): Code patterns preventing sells - Self-destruct (
selfDestruct): Contract can be destroyed, stealing funds
GET Method - Single Item Query
Retrieve security information for a single token.Query Parameters
blockchain(required) — The blockchain identifier (e.g.,evm:1,evm:56,solana:solana,ethereum,bsc)address(required) — Token contract address
Step-by-Step Tutorial and Video Walkthrough
- Check out the guide: Here
Usage Examples
Response Format
Response Fields
Core Fields
address(string) — Token contract address (checksummed for EVM)chainId(string) — Blockchain chain ID (e.g.,evm:1,solana:solana)
Holdings Analysis
-
contractHoldingsPercentage(number | null) — Percentage of total supply held by the contract itself. High values (>10%) may indicate centralization risks or potential honeypot mechanisms. EVM only. -
contractBalanceRaw(string | null) — Raw balance of tokens held by the contract address (in smallest unit). EVM only. -
burnedHoldingsPercentage(number | null) — Percentage of total supply sent to dead/burn addresses. Higher values generally indicate deflationary tokenomics. EVM only. -
totalBurnedBalanceRaw(string | null) — Raw total balance of tokens sent to burn addresses (in smallest unit). EVM only.
Holder Distribution
-
top10HoldingsPercentage(number | null) — Percentage of total supply held by the top 10 holders (excluding liquidity pools). High concentration may indicate whale risk. -
top50HoldingsPercentage(number | null) — Percentage of total supply held by the top 50 holders (excluding liquidity pools). -
top100HoldingsPercentage(number | null) — Percentage of total supply held by the top 100 holders (excluding liquidity pools). -
top200HoldingsPercentage(number | null) — Percentage of total supply held by the top 200 holders (excluding liquidity pools).
Fee Structure
-
buyFeePercentage(number) — Fee percentage charged on buy transactions (0-100 scale). Extracted from the token contract’s security configuration. -
sellFeePercentage(number) — Fee percentage charged on sell transactions (0-100 scale). Extracted from the token contract’s security configuration. -
transferFeePercentage(number) — Fee-on-transfer tax applied to user-to-user transfers (0-100 scale). Measured on-chain via a two-hop ERC20 transfer in the honeypot simulation (whale → intermediary → recipient) to avoid whale-side fee exemptions, reconciled with the higher of the simulation / honeypot.is value. EVM only (Solana tokens return0).
Transfer Restrictions (EVM Only)
These fields attempt to query various common function names used by contracts to restrict transfers:-
maxWalletAmountRaw(string | null) — Maximum token balance an address can hold (in wei/smallest unit). Null if no restriction exists.- Common function names checked:
_maxWalletToken,maxWalletToken,maxWallet,_maxWalletBalance,maxWalletAmount,_maxWalletSize,MaxWalletSize,_walletMax,maxWalletSize
- Common function names checked:
-
maxSellAmountRaw(string | null) — Maximum amount that can be sold in a single transaction (in wei/smallest unit). Null if no restriction exists.- Common function names checked:
maxSellTransactionAmount,maxSellAmount
- Common function names checked:
-
maxBuyAmountRaw(string | null) — Maximum amount that can be bought in a single transaction (in wei/smallest unit). Null if no restriction exists.- Common function names checked:
maxBuyTransactionAmount,maxBuyAmount,maxBuy
- Common function names checked:
-
maxTransferAmountRaw(string | null) — Maximum transaction amount regardless of buy/sell direction (in wei/smallest unit). Null if no restriction exists.- Common function names checked:
_maxTransactionAmount,_maxTxAmount,maxTransactionAmount,MaxTxAmount,maxTransferAmount,maxTrxnAmount
- Common function names checked:
Token Capabilities
-
isMintable(boolean | null) — Whether the token can have additional supply minted.- Solana: Determined via RPC by checking if
mintAuthorityis set on the mint account - EVM: Determined from GoPlus or static analysis if available
- Source: GoPlus API, Static Code Analysis, On-chain RPC (Solana)
- Solana: Determined via RPC by checking if
-
isFreezable(boolean | null) — Whether token accounts can be frozen by an authority.- Solana: Determined via RPC by checking if
freezeAuthorityis set on the mint account - EVM: Returns
null(not applicable)
- Solana: Determined via RPC by checking if
Contract Security Flags
These flags indicate potential security risks detected by GoPlus and/or static code analysis:-
isHoneypot(boolean | null) — Whether the token is identified as a honeypot (can buy but cannot sell).- Source: GoPlus API, Static Code Analysis, IsHoneypot Service
- Risk: 🔴 Critical - Unable to sell tokens
-
isNotOpenSource(boolean | null) — Whether the contract source code is NOT verified/open source.- Source: GoPlus API
- Risk: 🟠 High - Cannot audit contract behavior
-
renounced(boolean | null) — Whether ownership has been renounced (owner is zero address or safe known address).- Source: GoPlus API
- Risk: 🟢 Good if true - No owner can modify contract
-
locked(string | null) — Percentage of LP tokens that are locked (0-1 scale as decimal string, e.g., “0.8500” = 85%).- Source: GoPlus API
- Risk: Higher is better - Locked LP prevents rug pulls
-
transferPausable(boolean | null) — Whether transfers can be paused by the owner/authority.- Source: GoPlus API, Static Code Analysis
- Risk: 🟠 Medium - Owner can freeze trading
-
isBlacklisted(boolean | null) — Whether a blacklist mechanism exists (addresses can be blocked from trading).- Source: GoPlus API, Static Code Analysis
- Risk: 🟠 Medium - Specific addresses can be blocked
-
isWhitelisted(boolean | null) — Whether a whitelist mechanism exists (only approved addresses can trade).- Source: GoPlus API, Static Code Analysis
- Risk: 🟠 Medium - Trading restricted to approved addresses
-
balanceMutable(boolean | null) — Whether the owner can arbitrarily modify token balances.- Source: GoPlus API, Static Code Analysis
- Risk: 🔴 Critical - Owner can steal or manipulate funds
-
modifyableTax(boolean | null) — Whether buy/sell taxes can be modified after deployment.- Source: GoPlus API, Static Code Analysis
- Risk: 🟠 Medium - Owner can increase fees unexpectedly
-
selfDestruct(boolean | null) — Whether the contract contains a self-destruct function.- Source: GoPlus API, Static Code Analysis
- Risk: 🔴 Critical - Contract can be destroyed, funds lost
-
lowLiquidity(string | null) — Indicates low liquidity warning (value varies by source).- Source: GoPlus API
- Risk: 🟡 Low - High slippage on trades
-
burnRate(string | null) — Percentage of supply that has been burned (decimal string, e.g., “0.4580” = 45.8%).- Source: GoPlus API, On-chain RPC
- Risk: 🟢 Informational - Higher values indicate deflationary tokenomics
Static Analysis Status
-
staticAnalysisStatus(string | null) — Current status of the static code analysis for this token:completed— Analysis has been performed, results are included in security flagspending— Analysis has been triggered, results will be available on next requestnot_available— Chain not supported for static analysis or service unavailableinsufficient_liquidity— Token doesn’t meet minimum liquidity requirements (default: $5,000)not_evm— Static analysis only available for EVM chains
-
staticAnalysisDate(string | null) — ISO 8601 timestamp of when static analysis was last performed. Only present whenstaticAnalysisStatusiscompleted.
Static analysis is automatically triggered when you query
/token/security for EVM tokens with verified source code that meet liquidity requirements. Results are typically available within seconds on subsequent requests.Liquidity Analysis
-
liquidityBurnPercentage(number | null) — Percentage (0-100) of liquidity pool tokens that have been sent to dead/zero addresses (burned). Higher values indicate the liquidity provider cannot rug pull by removing liquidity. Returnsnullif data is not available. On-chain verification (Solana): For PumpSwap, Raydium AMM v4, Raydium CPMM, and Meteora DYN pools, the LP burn percentage is verified directly on-chain by reading the LP mint supply and checking holder addresses against known dead addresses. This provides accurate data even when third-party providers (GoPlus) return incorrect values — e.g. PumpFun tokens migrated to PumpSwap have 100% LP burned by design. -
liquidityAnalysis(array | null) — Per-pool breakdown of LP holder distribution for the top 3 pools by 24h volume. Each entry contains:poolAddress(string) — On-chain pool addresspoolType(string) — DEX protocol type (see supported protocols below)burnedPercentage(number) — LP tokens sent to dead/burn addresses (0-100)lockedPercentage(number) — LP tokens held by known locker contracts (0-100)contractPercentage(number) — LP tokens held by other contracts (0-100)unlockedPercentage(number) — LP tokens held by regular wallets (0-100)topHolders(array) — Top LP holders withaddress,percentage,type(burned|locked|contract|unlocked), andprotocol(locker name if locked, e.g. “Unicrypt”)
Supported Pool Types
EVM — Fungible LP tokens (V2-style):| Pool Type | Protocol | Chains |
|---|---|---|
uniswap-v2 | Uniswap V2 (+ forks) | Ethereum, Base, BSC, Arbitrum, etc. |
camelot-v2 | Camelot V2 | Arbitrum |
balancer | Balancer | Ethereum, Arbitrum, etc. |
curve | Curve | Ethereum, Arbitrum, etc. |
fluid | Fluid | Ethereum |
| Pool Type | Protocol | Chains |
|---|---|---|
uniswap-v3 | Uniswap V3 | Ethereum, Base, Arbitrum, etc. |
uniswap-v4 | Uniswap V4 | Ethereum, Base, Arbitrum, etc. |
pcs-infinity-cl | PancakeSwap Infinity CL | BSC |
solidly-v3 | Solidly V3 / Aerodrome CL | Base |
clanker-v3 / clanker-v4 | Clanker | Base |
zora-v3 / zora-v4 | Zora | Zora Network |
| Pool Type | Protocol | Analysis Method |
|---|---|---|
pumpswap | PumpSwap | LP mint holders via getTokenLargestAccounts |
raydium | Raydium AMM V4 | LP mint holders via getTokenLargestAccounts |
raydium-cpmm | Raydium CPMM | LP mint holders via getTokenLargestAccounts |
meteora-dyn / meteora-dyn2 | Meteora Dynamic AMM | LP mint holders via getTokenLargestAccounts |
meteora-dbc | Meteora DBC | LP mint holders via getTokenLargestAccounts |
| Pool Type | Protocol | Analysis Method |
|---|---|---|
orca | Orca Whirlpool | NFT position scanning via getProgramAccounts + owner resolution |
meteora | Meteora DLMM | Position scanning via getProgramAccounts (owner embedded in account) |
Raydium CLMM is not currently supported for liquidity analysis — Raydium V3 no longer stores individual position accounts on-chain.
Holder Classification
Each LP holder is classified into one of four types:| Type | Description |
|---|---|
burned | LP tokens sent to known dead/burn addresses. Liquidity is permanently locked and cannot be removed. |
locked | LP tokens held by a known locker protocol. Liquidity is locked for a defined period. |
contract | LP tokens held by an unrecognized smart contract. May or may not be locked. |
unlocked | LP tokens held by a regular wallet (EOA). Liquidity can be removed at any time. |
| Chain | Addresses |
|---|---|
| EVM | 0x0000...0000, 0x...dead, 0xdead...4206, 0x0000...0001 |
| Solana | 1111...1112, 1111...1113, 1nc1nerator1111...1111 |
| Protocol | Chains |
|---|---|
| Unicrypt | Ethereum, BSC, Arbitrum, Base |
| Team Finance | Ethereum, BSC |
| PinkLock | Ethereum, BSC, Arbitrum, Base |
| Mudra Locker | BSC |
Market Analysis
-
isLaunchpadToken(boolean | null) — Whether the token comes from (or is still on) a bonding curve/launchpad (e.g., Pump.fun, Moonshot, Raydium Launchlab, Boop, Meteora DBC, Heaven).trueindicates the token originated from a bonding curve mechanism, regardless of whether it has since graduated to a regular DEX pool. -
proTraderVolume24hPercentage(number | null) — Estimated percentage of 24h trading volume coming through terminal UIs (Axiom, Phantom, BullX, etc.). Calculated as(feesPaid24h / volume24h) * 100 * 50. Volume that doesn’t pass through these UIs is generally non-organic (bots, direct contract calls). Higher values indicate more legitimate retail/terminal activity.
Chain Support
| Feature | EVM Chains | Solana | Source |
|---|---|---|---|
| Contract Holdings | ✅ | ❌ | On-chain RPC |
| Burned Holdings | ✅ | ❌ | On-chain RPC |
| Buy/Sell Fees | ✅ | ✅ | GoPlus API |
| Max Wallet/Buy/Sell/Transfer | ✅ | ❌ | On-chain RPC |
| Top X Holdings | ✅ | ✅ | Token Service |
| isMintable | ✅ | ✅ | GoPlus, Static, RPC |
| isFreezable | ❌ | ✅ | On-chain RPC |
| isLaunchpadToken | ✅ | ✅ | Pools Storage |
| proTraderVolume24hPercentage | ✅ | ✅ | Token Service |
| isHoneypot | ✅ | ❌ | GoPlus, Static, IsHoneypot |
| isNotOpenSource | ✅ | ❌ | GoPlus API |
| renounced | ✅ | ❌ | GoPlus API |
| locked | ✅ | ❌ | GoPlus API |
| transferPausable | ✅ | ✅ | GoPlus, Static |
| isBlacklisted | ✅ | ✅ | GoPlus, Static |
| isWhitelisted | ✅ | ❌ | GoPlus, Static |
| balanceMutable | ✅ | ✅ | GoPlus, Static |
| modifyableTax | ✅ | ❌ | GoPlus, Static |
| selfDestruct | ✅ | ❌ | GoPlus, Static |
| lowLiquidity | ✅ | ✅ | GoPlus API |
| burnRate | ✅ | ✅ | GoPlus, RPC |
| staticAnalysisStatus | ✅ | ❌ | Static Analysis |
| staticAnalysisDate | ✅ | ❌ | Static Analysis |
| liquidityBurnPercentage | ✅ | ✅ | On-chain RPC, GoPlus |
| liquidityAnalysis | ✅ | ✅ | On-chain RPC (indexed for Solana CLMM) |
Important Notes
- RPC Preference: This endpoint uses private RPCs when available for better reliability and performance.
-
Null Values: Many fields may return
nullfor legitimate reasons:- The token contract doesn’t implement the specific restriction
- The function names don’t match common patterns
- RPC call failed or timed out
- Feature not supported on the chain type
-
Data Source Priority: When multiple sources provide the same data:
- Static analysis takes precedence when it detects a risk (true values override)
- GoPlus provides baseline security data
- On-chain RPC provides real-time holdings/limits
-
Interpretation Guidelines:
- High
contractHoldingsPercentage(>10%): Potential centralization or honeypot risk - High
burnedHoldingsPercentage: Generally positive, indicates deflationary supply - High fees (
buyFeePercentage/sellFeePercentage/transferFeePercentage>10%): May limit trading activity or indicate a fee-on-transfer honeypot - Transfer restrictions (
maxWalletAmountRaw,maxBuyAmountRaw,maxSellAmountRaw): Common anti-whale measures - High
top10HoldingsPercentage(>50%): Significant supply concentration, potential control risk isMintable = true: Token supply can increase, potential inflation riskisFreezable = true: Token accounts can be frozen by authority (common on Solana)isLaunchpadToken = true: Token originated from a bonding curve (Pump.fun, Moonshot, etc.)- Low
proTraderVolume24hPercentage: Most volume is non-organic (bots, direct contract calls), potential wash trading isHoneypot = true: 🔴 Critical risk - unable to sell tokensrenounced = false: Owner can still modify contract behaviorbalanceMutable = true: 🔴 Critical risk - owner can steal fundsselfDestruct = true: 🔴 Critical risk - contract can be destroyed
- High
- Performance: All RPC calls are executed in parallel for optimal response time.
Error Handling
The endpoint returns HTTP 400 for:- Missing or invalid blockchain parameter
- Missing or invalid address parameter
- Token not found in the system
null if specific data points cannot be retrieved.
Use Cases
- Due Diligence: Automated security screening for new tokens
- Trading Bots: Pre-trade validation to avoid tokens with restrictive mechanics
- Portfolio Risk Analysis: Assess holdings for potential red flags
- DeFi Integrations: Validate token compatibility with protocols
- Community Tools: Display security badges or warnings for tokens
- Supply Control Analysis: Monitor holder concentration and distribution via top X holdings percentages
- Bonding Curve Origin: Identify tokens that originated from launchpads/bonding curves (Pump.fun, Moonshot, etc.)
- Organic Volume Detection: Distinguish between terminal UI volume (organic) vs direct/bot volume (non-organic)
- Rug Pull Prevention: Check
locked,renounced,balanceMutablefor rug pull risks - Honeypot Detection: Multi-source honeypot detection via GoPlus, static analysis, and IsHoneypot service