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
Static analysis runs on tokens meeting liquidity thresholds and takes precedence over other sources when it detects risks.
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
Usage Examples
curl -X GET "https://api.mobula.io/api/2/token/security?blockchain=evm:1&address=0xe538905cf8410324e03a5a23c1c177a474d59b2b"
curl -X GET "https://api.mobula.io/api/2/token/security?blockchain=solana:solana&address=FMhPkAX5XLA2n6KvBqUTML5JLCdHZ7v2H4BfAbUucSuz"
{
"data": {
"address": "0xe538905cf8410324e03a5a23c1c177a474d59b2b",
"chainId": "evm:1",
"contractHoldingsPercentage": 2.5,
"contractBalanceRaw": "25000000000000000000000",
"burnedHoldingsPercentage": 45.8,
"totalBurnedBalanceRaw": "458000000000000000000000",
"buyFeePercentage": 5.0,
"sellFeePercentage": 5.0,
"maxWalletAmountRaw": "1000000000000000000000",
"maxSellAmountRaw": "500000000000000000000",
"maxBuyAmountRaw": "750000000000000000000",
"maxTransferAmountRaw": "500000000000000000000",
"isLaunchpadToken": false,
"top10HoldingsPercentage": 45.2,
"top50HoldingsPercentage": 68.5,
"top100HoldingsPercentage": 82.1,
"top200HoldingsPercentage": 91.3,
"isMintable": false,
"isFreezable": false,
"proTraderVolume24hPercentage": 12.5,
"transferPausable": false,
"isBlacklisted": false,
"isHoneypot": false,
"isNotOpenSource": false,
"renounced": true,
"locked": "0.8500",
"isWhitelisted": false,
"balanceMutable": false,
"lowLiquidity": null,
"burnRate": "0.4580",
"modifyableTax": false,
"selfDestruct": false,
"staticAnalysisStatus": "completed",
"staticAnalysisDate": "2026-01-09T10:30:00.000Z"
}
}
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.
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
-
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
-
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
-
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
Token Capabilities
-
isMintable (boolean | null) — Whether the token can have additional supply minted.
- Solana: Determined via RPC by checking if
mintAuthority is set on the mint account
- EVM: Determined from GoPlus or static analysis if available
- Source: GoPlus API, Static Code Analysis, On-chain RPC (Solana)
-
isFreezable (boolean | null) — Whether token accounts can be frozen by an authority.
- Solana: Determined via RPC by checking if
freezeAuthority is set on the mint account
- EVM: Returns
null (not applicable)
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 flags
pending — Analysis has been triggered, results will be available on next request
not_available — Chain not supported for static analysis or service unavailable
insufficient_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 when staticAnalysisStatus is completed.
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.
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). true indicates 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 |
Important Notes
-
RPC Preference: This endpoint uses private RPCs when available for better reliability and performance.
-
Null Values: Many fields may return
null for 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 >10%): May limit trading activity
- 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 risk
isFreezable = 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 tokens
renounced = false: Owner can still modify contract behavior
balanceMutable = true: 🔴 Critical risk - owner can steal funds
selfDestruct = true: 🔴 Critical risk - contract can be destroyed
-
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
Other fields gracefully degrade to 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, balanceMutable for rug pull risks
- Honeypot Detection: Multi-source honeypot detection via GoPlus, static analysis, and IsHoneypot service