DeFade — Multi-Chain Memecoin Analyzer
Server Details
Rug pull risk and on-chain forensics for tokens on Solana and six EVM chains.
- Status
- Healthy
- Uptime
- 100.0% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 15 tools
Most tools target clearly distinct modules, and the descriptions go unusually far to disambiguate neighbors, repeatedly stating 'not for X, use Y' (e.g. holders vs whales vs wallet_links vs lookalike_clusters vs funding_sources vs fee_fingerprint). The remaining friction is that the four 'who is really behind this token' tools target closely related questions, and get_token_scan vs get_rug_score both return a risk verdict (opposite score directions), so an agent can still misselect without reading carefully.
Every tool follows the same get_<noun> snake_case pattern with no deviations (get_dev_tracker, get_rug_score, get_launch_snipers, get_usage). The naming is fully predictable and maps cleanly onto the domain modules.
15 tools sit at the top of the well-scoped range, and each corresponds to a distinct forensic module (creator, liquidity, holders, bundles, snipers, wallet graph, funding, behaviour, fees, smart money, price, score, scan, usage). Nothing looks redundant enough to cut, and nothing obvious is missing that would warrant a 16th.
Coverage of the token-forensics lifecycle is strong: scan, score, price, liquidity, holder concentration, whale activity, launch coordination, wallet-behind-the-token analysis and quota reporting are all present, with no obvious dead ends for a single-token question. Gaps are minor: there is no token discovery or symbol lookup (an address must already be known), no cross-token/portfolio comparison, and EVM chains lack holder and creator modules, though the descriptions flag this.
Available Tools
15 toolsget_dev_trackerDev wallet trackingARead-onlyIdempotentInspect
What the token's creator has done with their supply: the share they still hold, what left through sales versus transfers, and where the transfers went. Read the state carefully: still holding is neutral, a dev who simply sold out is statusColor gray — the standard launch pattern, not a rug — fully exited on a fresh token is a warning, and transferred out to fresh wallets (red) is the single strongest rug signal DeFade tracks. The creator is the wallet that created the mint on Solana and the contract deployer on EVM chains; creatorSource says how it was identified, and creatorInferred true means it may be a launchpad authority rather than a person, so weigh the verdict accordingly. Not for wallets other than the creator (get_whales, get_wallet_links); the creator's earlier launches are already served by get_token_scan's creator block (tokenCreations, recentTokens). Arguments: address and chain — the deployer is read from the contract creation on that chain, so a 0x address needs its chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| status | No | One-line verdict: STILL HOLDING, PARTIAL EXIT, FULLY EXITED, TRANSFERRED OUT, SOLD & TRANSFERRED, DISTRIBUTED, LOCKED and similar. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| recentSells | No | Transactions behind each bucket, newest first, capped. |
| statusColor | No | green, yellow, gray or red. A dev selling out is gray: the standard launch pattern, not a rug. |
| lastActivity | No | Unix seconds of the dev's most recent move of this token. |
| creatorSource | No | How the dev wallet was identified; creatorInferred is true when it may be a launchpad authority rather than a person. |
| totalMintedPct | No | Genesis allocation as percent of supply; totalBoughtPct, totalSoldPct, totalTransferredPct, totalLockedPct, totalLiquidityPct, totalBurnedPct (supply the dev destroyed: not a transfer, not scored) alongside. |
| currentHoldingPct | No | Percent of supply the dev holds now. |
| transferRecipients | No | Distinct wallets that received a transfer. |
| transferRecipientAnalysis | No | What large recipients did with the tokens: address, amountPct, stillHeldPct, verdict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotency, but the description adds real interpretive and cost context: how to read statusColor signals (gray = standard launch, red = strongest rug signal), the creatorInferred caveat about launchpad authorities, and the cost ('one API unit on any chain'). That is behavior an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource, then a dense interpretation guide, then exclusions, then arguments — a sensible order. It is long, and the statusColor taxonomy is the wordiest section, but nearly every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description still goes further by explaining how to interpret the verdict fields (statusColor, creatorSource, creatorInferred). Nothing needed to call it correctly or to read the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the causal rule that the deployer is read from contract creation on a given chain, which is why a 0x address needs its chain. It stops short of enumerating the chain enum values the schema already lists, so it is additive rather than exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb-and-resource statement: what the token's creator did with their supply (still held, sold vs transferred, destinations of transfers). It is clearly distinguishable from siblings by naming get_whales, get_wallet_links and get_token_scan's creator block as serving other scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the exclusion ('Not for wallets other than the creator') and routes the agent to the right alternatives for those cases. It also pins the identity rule (mint creator on Solana, contract deployer on EVM) so the agent knows exactly which address this tool accepts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fee_fingerprintShared fee-setting fingerprintARead-onlyIdempotentInspect
Wallets whose transactions pin an identical fee setting — compute-unit price or Jito tip on Solana, priority fee or legacy gas price on EVM chains — one operator's bot settings showing up across every wallet it drives. This is the shared-CONFIGURATION member of the "who is really behind this token" family (proven transfers: get_wallet_links; funding origin: get_funding_sources; behavioural twins: get_lookalike_clusters), not a timing link: it never proves bundling, and two wallets can match days apart. Use it to corroborate get_lookalike_clusters, and to catch the operator who sold their launch wallets and re-entered through fresh ones; read a match as corroboration, never as proof of coordinated buying. Groups are strongest first; pending true means no bundle scan has run for this token yet, so nothing has looked rather than nothing was found. Arguments: address and chain; one API unit on any chain, because it reads what the bundle scan already computed.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stats | No | Wallets seen, how many carried a readable fee setting, how many were linked, how many set none. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| groups | No | One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value. router names the app the group came through (an EVM public router, a Solana terminal) when the value is that app's preset or automatic fee. |
| pending | No | True when no bundle scan has run for this token yet: nothing has looked, not nothing was found. |
| excluded | No | Fee values too common to link anyone, with the wallet count each covered and a reason: generic_default (a value most of the launch used) or, on EVM, round_preset (a round tip an app or wallet sets for every user). |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| computedAt | No | When this result was read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, but the description adds substantive behavior beyond them: cost ('one API unit on any chain, because it reads what the bundle scan already computed'), the semantics of the 'pending' flag ('nothing has looked rather than nothing was found'), and an explicit epistemic limit ('two wallets can match days apart'). That is real interpretive context, not restated annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then the family/anti-confusion clause, then usage, then argument cost — a sensible order with no filler. It is a dense, dash-heavy single block that takes effort to parse, which costs it a point on readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with a full schema and an output schema, everything an agent needs is present: what it computes, how it differs from adjacent tools, how much it costs, how to read a match, and how to interpret the pending state. Return-value shape is rightly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds a small amount on top by framing the two arguments and explaining that cost is flat across chains because results are derived from a prior scan. It does not add syntax or format detail beyond the schema, so it stops short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and mechanism: wallets whose transactions pin an identical fee setting, with the concrete signals per chain (compute-unit price / Jito tip on Solana, priority fee / legacy gas price on EVM). It also explicitly places itself in the family and names the sibling it is not (not a timing link like the bundle tools), so an agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('corroborate get_lookalike_clusters', catch operators who re-entered through fresh wallets) and when-not ('never proves bundling', 'read a match as corroboration, never as proof of coordinated buying'). It even names the three sibling tools covering the other evidence types (get_wallet_links, get_funding_sources, get_lookalike_clusters), which is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funding_sourcesFunding provenanceARead-onlyIdempotentInspect
Multi-hop tracing of where the money behind this token's key wallets actually came from, walking each funding chain back and tiering the source by whether it is a KYC'd exchange. Use it to test whether several "unrelated" holders share one funding source. It answers provenance only — money in, one dimension: it does not build the wallet-to-wallet transfer graph (get_wallet_links), group look-alike behaviour (get_lookalike_clusters), or match shared bot fee settings (get_fee_fingerprint). Read coveragePct before the origins: it is the share of supply that could be attributed, the remainder (unknownCount wallets) could not be traced and is not evidence either way, and dexPct and bridgedPct are real states rather than attributions. Results are cached for 30 minutes (computedAt, fromCache). Not for the creator's own activity (get_dev_tracker) or launch-window buying (get_launch_bundles, get_launch_snipers). Arguments: address and chain — a 0x address needs its chain; on an EVM chain this call costs 5 API units instead of 1, because the trace runs against paid indexers, so check get_usage before running it across many tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk | No | Verdict with label and severity. |
| tiers | No | The same supply grouped by certainty tier, as { tier, share }. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| origins | No | Where holder supply was funded from, as { name, share }, biggest first. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| computedAt | No | When this was computed; fromCache says whether it was served from a stored result. |
| coveragePct | No | Share of supply attributed to an origin; dexPct and bridgedPct are real states but not attribution. |
| walletCount | No | Wallets resolved, with resolvedCount and unknownCount. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, non-destructive), and the description adds what they cannot: a 30-minute cache with computedAt/fromCache, a 5-vs-1 API-unit cost on EVM because the trace hits paid indexers, and the crucial caveat that untraced supply is not evidence either way. That last point materially changes how an agent should interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and tightly written — nearly every sentence carries distinct guidance (scope, output reading order, cache, cost). It is a dense single paragraph, though, and the combined exclusions and cost note could be split for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure needn't be explained, yet the description still tells the agent to read coveragePct before origins and how to interpret dexPct/bridgedPct — the interpretive layer schemas don't provide. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description largely restates the address/chain pairing rule. It does add one decision-relevant fact not in the schema: the chain argument determines whether the call costs 5 API units or 1. Slight redundancy elsewhere keeps this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — multi-hop tracing of the money behind a token's key wallets, tiered by KYC'd-exchange status — and explicitly contrasts itself with the three siblings that do adjacent graph work (get_wallet_links, get_lookalike_clusters, get_fee_fingerprint). An agent can tell exactly which question this tool answers without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ("test whether several 'unrelated' holders share one funding source") plus explicit exclusions routed to named alternatives: creator activity → get_dev_tracker, launch-window buying → get_launch_bundles/get_launch_snipers. It even names the pre-flight check (get_usage) before batching across tokens.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_holdersHolder distributionARead-onlyIdempotentInspect
Holder distribution for one token, with liquidity pools, burn addresses, lockers, exchange wallets and contracts classified out, so the top-holder list reflects actual holders. Returns the classified top holders with each wallet's supply share in a single response — no pagination. Use it to answer how concentrated the supply is and whether a few wallets could collapse the chart. Not for what large holders are doing right now (get_whales), whether holders are secretly one actor (get_wallet_links or get_lookalike_clusters), or pool depth and locks (get_liquidity). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| bundles | No | Always { detected: false, bundlePct: "0.00", groups: [] }, kept for older readers: similar balances are not a cluster. Launch bundles are get_launch_bundles. |
| vesting | No | Solana: vesting a launch program holds (Jupiter Lock, LaunchLab, Meteora DBC): lockedPct, claimablePct, reclaimablePct, unlocking30dPct, nextUnlock, fullyUnlockedAt, recipients, schedules, summary. Null when none. EVM (a Virtuals token on Base or Robinhood): its TokenTable vesting read on chain: available, protocol, unlockers, lockedPct, unlockedPct, claimedPct, claimablePct, unlock30dPct, unlock90dPct, nextUnlock, lockedUntil, claimers, revocable, line; { available: false, reason } while the read is pending, incomplete or failed, or the token has no unlocker; absent on other tokens. |
| leftover | No | Solana: a Meteora DBC fixed supply leftover: pct, receiver (the config's leftover receiver: the burn address 1nc1nerator11111111111111111111111111111111 when it can only be paid there), role, platform, withdrawable (now, at graduation, or null when only the burn address can receive it or it was withdrawn), withdrawn, recipients, summary, and how it scores: counted (in concentration as the receiver's: the creator or one wallet can withdraw it now), overhang (a platform's wallet can withdraw it now, or withdrew it and still holds it: its own line, not counted) or burned. Null when none. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| topHolders | No | Top 20 accounts: rank, address, walletAddress, amount, percentage, solBalance, isProtocol, protocolLabel. A launch vault or escrow is split into parts (partOf); a part one wallet can take now has heldBy, and vesting, leftover, launchLeftover and supplyDetail say what it is. |
| mayhemAgent | No | Solana: what pump.fun's Mayhem agent wallet holds of the token: address, pct (of supply), amount. On a coin launched in Mayhem mode (get_token_scan token.timeline.mayhem) the create minted it 1B beside the curve's 1B; it can sell into the curve (the pool once graduated) until timeline.mayhem.endsAt, 24 hours from launch, and what it holds then is burned. Out of concentration like a pool; the rug score charges +4 while it can trade and holds 1% or more. On any other coin it is only what the wallet was sent, such as an airdrop, and nothing scores it. Null when it holds none. |
| lockedSupply | No | pct plus a lockers array naming each escrow; a vesting lock counts what is not claimable yet and adds unlocksTo, nextUnlock, fullyUnlockedAt. |
| totalHolders | No | How many of the largest accounts were read, at most 20. Not the holder count: that is totalHolderCount. |
| concentration | No | top5, top10, top20 as percent of supply, counting real wallets only, plus the parts one wallet can take now (heldBy). |
| deferredUnlock | No | Supply that unlocks back to the deployer later: pct, unlockDate, cancelablePct. Null when none. |
| protocolHoldings | No | What was excluded: count and totalPct. |
| totalHolderCount | No | Solana: every holder of the token, counted. 10,000 with holderCountCapped true when there are more. Null when the count was not in yet; ask again a few seconds later. |
| holderCountCapped | No | True when the count stopped at 10,000: the token has at least that many holders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the bar is lower; the description still adds real value by disclosing the classification-and-filtering behavior, that results come back in a single non-paginated response, and the cost ('one API unit on any chain'). It stops short of describing ordering or edge cases (e.g. what a token with very few holders returns), so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then returns, then use case, then exclusions — a sensible order. A bit dense as one long sentence chain, and the trailing 'Arguments: address and chain' is largely redundant with the schema, but nothing is wasted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, annotations cover the safety profile, and the schema documents both parameters exhaustively. The description adds only what structured fields cannot convey: the classification logic, non-paginated single response, and query cost. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the chain enum with its EVM-address caveat is fully documented in the schema itself. The description only restates 'Arguments: address and chain', adding nothing beyond naming them plus the unit cost. Baseline 3 is correct when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Holder distribution for one token') and immediately qualifies scope: liquidity pools, burn addresses, lockers, exchange wallets and contracts are classified out. An agent can tell exactly what this returns versus get_whales or get_liquidity without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use case ('answer how concentrated the supply is and whether a few wallets could collapse the chart') and then explicitly excludes three sibling tools by name with the condition that selects each (get_whales, get_wallet_links/get_lookalike_clusters, get_liquidity). Routing is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_launch_bundlesLaunch-window bundlesARead-onlyIdempotentInspect
Bundle detection for one token: coordinated buys in the launch window plus delayed sweeps, accounted on peak net exposure rather than raw buy count, so wallets that bought and flipped are not counted as holders. Heavy bundling that is still held is one of the strongest rug predictors. Use it for any "was this launch bundled" question. Not for lone fast buyers with no coordination (get_launch_snipers), clusters that formed after launch (get_lookalike_clusters), or the creator's own selling (get_dev_tracker). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| bundles | No | Each bundle: its wallets, what they spent, what they still hold, how they were funded. |
| summary | No | Totals across detected bundles, accounted on peak net exposure. summary.transferredUnsoldPct is the transferred share the DeFade website prints (moved out and not sold since); transferredPct counts every transfer out, a token each time it moved, and is not a share to quote. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| hiddenBundleCount | No | Bundles the shallow detector does not see. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the description spends its space on what annotations cannot say: the detection methodology, the interpretive warning that held bundling is a strong rug predictor, and the cost (one API unit on any chain). It does not mention latency or empty-result behavior, which keeps it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition, then usage, then exclusions, then arguments — a sensible order. It is a single dense paragraph with some redundancy in the caveat clauses, but no sentence is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it does not try. Instead it covers the interpretive frame (why peak exposure accounting matters), the sibling boundaries, and the unit cost — everything an agent needs to select and call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the chain/address matching rules, formats, and rejection behavior in depth. The description's "Arguments: address and chain" plus the cost note add almost nothing beyond what the schema states, so this lands at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (bundle detection for one token) and immediately qualifies the scope: coordinated buys in the launch window plus delayed sweeps. It even clarifies the accounting model (peak net exposure vs raw buy count), which is what makes this tool distinct from a naive buy-count scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the question it answers ("was this launch bundled") and then lists three exclusions mapped to named siblings: get_launch_snipers for lone fast buyers, get_lookalike_clusters for post-launch clusters, get_dev_tracker for creator selling. Nothing is left to inference about when to pick this over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_launch_snipersFirst-block snipersARead-onlyIdempotentInspect
Bots that bought in the first block or first seconds of this token's launch, and whether they are connected to the deployer. The window is the first 120 seconds after the first transaction; at most 30 rows are returned and totalEarlyBuyers carries the full count. Migration-crank MEV bots are excluded and named rather than silently dropped. Check reachedGenesis: when false the walk did not reach the true first transaction, the result is partial, and it is cached for an hour instead of two. Use it to tell an organic launch from a pre-arranged one. Not for coordinated multi-wallet launch buying (get_launch_bundles) or the deployer's funding of other wallets (get_wallet_links). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stats | No | Cohort totals for the window. stats.transferredUnsoldPct is the transferred share the DeFade website prints; the gross transfer figures count a token each time it moved. Solana: stats.bundleCohort is false when no bundle scan had run, so transfers to bundle wallets read as transferred supply. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| pending | No | Solana: ["bundles-pro"] when this was read before Bundle Detection had run; the call started it. Call again in about a minute for the answer the scan page shows. |
| snipers | No | Wallets that bought inside the launch window, capped at 30 rows. |
| complete | No | False beside pending. |
| poweredBy | No | Always "DeFade.org". |
| terminals | No | Trading terminals the launch cohort came through; activeTerminals is who trades it now. |
| timestamp | No | ISO time the response was assembled. |
| reachedGenesis | No | Whether the walk reached the true first transaction. When false, partial is true and small snipers may be missing. |
| totalEarlyBuyers | No | How many were found in total; windowSeconds and firstTxTime describe the window. |
| migrationCrankersExcluded | No | Migration-crank MEV bots filtered out as infrastructure, named. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only/idempotent safety profile, and the description adds genuinely non-obvious behavior: the 120-second window, a 30-row cap with totalEarlyBuyers as the true count, exclusion of migration-crank MEV bots (named, not dropped), the reachedGenesis partial-result flag, and differential caching (one hour vs two). This is exactly the operational context an agent needs before trusting the numbers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then constraints, then a usage-routing sentence, then arguments — a logical order with no filler. It is on the dense side and could be broken up for readability, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still surfaces the two result fields an agent must interpret (totalEarlyBuyers for truncation, reachedGenesis for partial data). Combined with the cost and caching notes, nothing needed to call or trust the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema in far greater detail than the description, which only says "Arguments: address and chain." The description does add the useful "one API unit on any chain" cost note, but it contributes little to parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific resource (bots that bought in the first block/seconds of a token's launch) plus the deployer-connection angle, which no sibling covers. It is immediately distinguishable from get_launch_bundles and get_wallet_links, which are named later.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ("Use it to tell an organic launch from a pre-arranged one") and explicit when-not-to-use with the two correct alternatives named for each adjacent intent. Nothing is left to inference about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_liquidityLiquidity analysisARead-onlyIdempotentInspect
Liquidity pool analysis for one token: which DEX holds the deepest pool, its depth in USD, and whether the LP tokens are burned, locked or still in someone's hands. lpStatus is the verdict — LP BURNED, LP LOCKED, LP UNLOCKED, PARTIALLY BURNED, LP NOT LOCKABLE, BONDING CURVE (still on a launchpad curve, no pool yet) or NO LP FOUND, with combinations spelled out — and lpBurnPct, lpLockPct and poolLocks carry the evidence. Use it to answer whether liquidity is locked, how deep it is, and whether the position could be pulled: LP UNLOCKED means it can be pulled at any time. Cached for about two minutes. A token with no pool returns empty liquidity data, which is itself a warning on a token that is trading. Not for price or volume (get_token_price), market cap (get_token_scan) or holder concentration (get_holders). Arguments: address and chain — pools live per chain, so a 0x address needs the chain it trades on, and a Base pool is not found under ethereum; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dex | No | Which DEX holds the deepest pool. |
| risk | No | Liquidity risk label; lpEvidence carries the on-chain evidence behind it. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| lpStatus | No | Headline pool verdict: LP BURNED, LP LOCKED, LP UNLOCKED, PARTIALLY BURNED, LP NOT LOCKABLE, LP HELD BY DAO (a MetaDAO token: the vault of its DAO holds the liquidity), BONDING CURVE, NO LP FOUND, or a spelled-out combination. |
| lpBurnPct | No | Percent of LP tokens burned; lpLockPct is the percent locked. |
| poolLocks | No | Per-pool lock detail with lpLockable and an lpNote in words. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| totalLiquidityUsd | No | Combined USD depth across pools; pools lists them and poolCount counts them. On an EVM chain, null when the pair feed gives no pool a liquidity figure, or the reserve of a bonding curve could not be priced: unknown, not zero. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent safety, and the description adds real operational context: ~2-minute caching, one API unit cost, and the semantic meaning of 'LP UNLOCKED means it can be pulled at any time'. It also discloses the edge case that a token with no pool returns empty liquidity data, which is a warning signal, not an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is dense but front-loaded: purpose first, then the lpStatus verdict vocabulary, then usage, then exclusions, then arguments. The lpStatus enumeration is long but earns its place by defining the return codes. A single long paragraph rather than structured lists slightly reduces scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return shape, yet it still defines every lpStatus verdict and names the evidence fields (lpBurnPct, lpLockPct, poolLocks) that support them. Combined with caching, cost and the no-pool edge case, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds the cross-chain reasoning that a 0x address needs its chain and that a Base pool is not found under ethereum, which is a concrete failure mode worth restating. It does not add more than that, and the parameter names themselves are only enumerated briefly ('Arguments: address and chain').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Liquidity pool analysis for one token') plus the exact scope: deepest pool, depth in USD, LP burn/lock status. This is clearly distinguishable from get_token_price, get_token_scan and get_holders, which are named in the exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is stated positively ('Use it to answer whether liquidity is locked, how deep it is, and whether the position could be pulled') and negatively with named alternatives ('Not for price or volume (get_token_price), market cap (get_token_scan) or holder concentration (get_holders)'). The routing decision is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lookalike_clustersBehavioural sybil clustersARead-onlyIdempotentInspect
Clusters of wallets around one token that behave as a single actor — buys sized and timed alike so demand looks organic — even when no transfer or funding trail connects them. That behavioural inference is what separates it from get_wallet_links, which only reports proven links. Use it when supply looks distributed across many small wallets and the insider graph comes back clean; corroborate with get_fee_fingerprint. Not for proven transfer links (get_wallet_links), the funding source behind the wallets (get_funding_sources), or launch-window coordination (get_launch_bundles). Arguments: address and chain; on an EVM chain this call costs 5 API units instead of 1, because the trace runs against paid indexers.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk | No | Verdict for the token with label and severity. |
| bands | No | Wallet clusters banded by how strongly they look like one operator. |
| stats | No | Totals across the bands: wallets clustered and the supply they hold. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| computedAt | No | When this was computed; fromCache says whether it was served from a stored result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description's real addition is the cost asymmetry — 5 API units on EVM versus 1, because tracing hits paid indexers — which is genuine behavioural context an agent budgeting calls needs. It stops short of describing result shape or what an empty cluster set means, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then differentiation, then when-to-use, then exclusions, then arguments — a deliberate and useful order. Despite its density, every clause carries information the agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inference tool with rich annotations, a 100%-covered two-parameter schema and an output schema, this description covers the remaining gaps: what makes this inference distinct, when it is worth the extra cost, and which sibling to use otherwise.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the thorough chain and address semantics (0x vs base58, chain-matching requirement) are already fully documented in the schema. The description only restates the two argument names and adds a cost note, which is a baseline-3 contribution rather than added parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and mechanism: clusters of wallets acting as one actor, inferred behaviourally even without transfer or funding links. It explicitly contrasts that inference with get_wallet_links' proven links, so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete triggering condition ('supply looks distributed across many small wallets and the insider graph comes back clean'), a recommended corroborating call (get_fee_fingerprint), and an explicit exclusion list naming three siblings with the condition each covers instead. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rug_scoreRug pull probabilityARead-onlyIdempotentInspect
Rug pull probability for one token: a 0-100 score where HIGHER MEANS MORE DANGEROUS, a verdict label, and the individual signals that drove it. This is the opposite direction from get_token_scan's safety score. This is the verdict the DeFade website shows: call it, after get_token_scan, for every "is this safe", "is this a rug" or "should I buy" question, on every chain (on an EVM chain get_token_scan carries no score at all). When complete is false the score is partial: say so, and call again for the rest. Not for the evidence behind the number — it names the signals but does not list the wallets; for who is behind the risk call get_wallet_links, get_dev_tracker or get_launch_bundles. Arguments: address and chain; one API unit on Solana, five on an EVM chain, because there the score reads every module first — check get_usage before scoring many EVM tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| fusion | No | Cross-signal wallet correlation; wallets list is empty on non-Pro keys. |
| pending | No | Modules still running when the score was taken; empty when it is complete. Call the tool again for the score with them in. |
| signals | No | Each contributing signal: what fired, its weight and its explanation. |
| verdict | No | PROBABLY SAFE (<25), SOME RISK (25+), ELEVATED RISK (45+), HIGH RISK (60+), EXTREME RISK (75+); or a state that overrides the bands: RUGGED / DEAD, ABANDONED / DEAD (failed after its market cap had once passed $5,000, or with no candles to say it never did), NEVER BONDED (a launchpad coin that never left its bonding curve — no pool ever existed), NEVER TOOK OFF (off any curve, its market cap never passed $5,000); rugScore is still returned as a number. |
| complete | No | True when nothing is pending: every module the score reads is in it. |
| coverage | No | "full" when the Pro signal set contributed, "free" when only the free signals did — a "free" score has seen less evidence. "partial" when a module was still running after the 25 s this tool waits (Bundle Detection on a token nobody has scanned can take a minute or more): the modules are named in pending and keep running, so call the tool again for the complete score. |
| rugScore | No | Rug probability 0 (safe) to 100 (critical). HIGHER IS MORE DANGEROUS. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| scoreLabel | No | Null normally. "NEVER BONDED" or "NEVER TOOK OFF" when the human surfaces print that state instead of the percentage; rugScore is still the number. |
| bundleSubScore | No | The bundle component of the score. |
| proChecksLocked | No | How many Pro-only checks were withheld. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses that `complete: false` yields a partial score and that the correct behavior is to disclose partiality and re-call, and it states the cost differential (1 API unit on Solana vs 5 on EVM, with a pointer to get_usage before bulk EVM scoring). These are exactly the operational facts an agent needs and none are in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and score direction are front-loaded, and almost every clause carries routing, cost, or partial-result information. A few sentences pack multiple ideas (the get_usage cost warning, the evidence-tool list), and some phrasing is clunky, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, yet the description still frames what comes back (score, verdict, driving signals) and, critically, handles the incomplete-result case the schema cannot express. Combined with cost, chain scope, and sibling handoffs, nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries address format, chain enum values, and the 0x-requires-chain rule. The description's "Arguments: address and chain" plus the per-chain cost note adds pricing context but no new per-parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (rug pull probability for one token) and immediately pins the semantics: a 0-100 score where higher means more dangerous, plus a verdict label and driver signals. It explicitly distinguishes itself from get_token_scan by noting the inverse direction of that tool's safety score, so an agent can't confuse the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing (call after get_token_scan), the question classes that select it ("is this safe", "is this a rug", "should I buy"), the chain scope (every chain, and the EVM case where get_token_scan carries no score). It also names where not to use it — for the underlying evidence, deferring to get_wallet_links, get_dev_tracker, or get_launch_bundles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smart_moneySmart moneyARead-onlyIdempotentInspect
Wallets with a track record of profitable entries that are holding or trading this token, classified from their historical trade win rates — a "verified" smart-money tag requires a known win rate of 50% or better. Computed live from the current holder set and cached for about five minutes. Use it for the bullish side of a scan: who informed is in, and when they got in. Not for risk assessment — informed wallets present never offsets a rug signal, and a clean result is not a buy signal — and not for wallet size (get_whales). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| summary | No | analyzed, smartMoneyCount, verifiedCount, experiencedCount, activeTraderCount, retailCount, smartMoneyPct, avgWinRate, signal. |
| wallets | No | Profiled holders, each classified smart money, verified, experienced, active trader or retail, with win rate. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| activeBuys | No | Other tokens the smart wallets are currently buying. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses that results are computed live from the current holder set, cached for about five minutes, and cost one API unit on any chain. It also pre-empts the most likely misreading by stating that informed wallets present never offsets a rug signal — behavioral context the annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the bullish-scan use case are front-loaded, then exclusions, then arguments and cost — a sensible order with no filler sentences. Slightly dense with em-dash parentheticals, and the "Arguments: address and chain" clause is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; what remains — what the tag means, how fresh the data is, what it costs, and how not to interpret it — is all covered. For a two-parameter read tool, an agent has everything needed to call it and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (address, chain) are already fully documented including formats, enum values and EVM/Solana mismatch rejection. The description only adds "Arguments: address and chain; one API unit on any chain," which is a cost note rather than new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (wallets holding or trading this token) and defines the classification rule precisely — historical trade win rate, with a "verified" tag requiring 50%+. It explicitly names the sibling it is not (get_whales) for wallet size, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive case ("the bullish side of a scan: who informed is in, and when they got in") plus two explicit exclusions with rationale — not for risk assessment, and a clean result is not a buy signal. It also routes the size question to get_whales by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_priceToken priceARead-onlyIdempotentInspect
Price history for one token as OHLCV candles, plus the latest price, the window's high and low with their timestamps, and the percent change across the window — prices in USD (the *Usd fields), volume as the market source quotes it. Aggregated from DEX market sources and cached for about a minute. Intervals with no trades are omitted rather than zero-filled, so consecutive candles can sit more than one step apart. The optional timeframe argument sets the candle size and with it how far back the window reaches: 15m (the default) covers about the last 2.5 days, 1H about 10 days, 4H about 40 days and 1D up to a year of daily candles, back to the token's first trade if it is younger; there is no start or end argument, the size fixes the window. Use 1D for "what did it peak at", "how far is it down from the top" or any price history question; use the default for the market context around a risk verdict. A token with no liquidity pool returns candles: [] and totalCandles: 0 rather than an error. Not for risk of any kind — market data carries no forensic signal — and not for pool depth or lock status (get_liquidity) or market cap (get_token_scan's token block). Arguments: address, chain and timeframe — a 0x address needs its chain; one API unit on any chain regardless of timeframe.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. | |
| timeframe | No | Candle size, which also sets the window: 1m ≈ last 4 hours, 5m ≈ 20 hours, 15m ≈ 2.5 days (default), 30m ≈ 5 days, 1H ≈ 10 days, 4H ≈ 40 days, 1D ≈ up to 365 days. A token younger than the window returns candles from its first trade. Any other value is rejected before a request is spent. | 15m |
Output Schema
| Name | Required | Description |
|---|---|---|
| high | No | Window high as priceUsd plus ts; low is the same shape. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| candles | No | OHLCV candles, oldest first: ts (ms), open, high, low, close, volume and *Usd values. |
| current | No | Latest close as current.priceUsd. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| priceChange | No | Percent change from the first candle to the last. Null when it cannot be computed. |
| totalCandles | No | Number of candles; a token with no chart data answers 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/idempotent annotations, the description discloses caching (~1 minute), omission of trade-less intervals rather than zero-filling, the absence of start/end arguments, the empty-result shape for tokens with no liquidity pool, and a one-API-unit cost. These are non-obvious behavioral traits that materially affect interpretation of the returned candles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The return contents and caveats are front-loaded, and most sentences carry real information. It is somewhat long and the final argument recap plus timeframe-window repetition duplicates the schema, which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an existing output schema, the description need not explain return values, yet it still covers the key edge case (no pool → empty candles), interval gaps, window sizing, cost and sibling alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the chain defaults, address formats and timeframe windows in detail. The description restates the same window mapping and the 0x-needs-chain rule, adding mainly the one-API-unit cost note rather than new per-parameter meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource — OHLCV price history plus latest price, window high/low and percent change — and explicitly excludes siblings, naming get_liquidity and get_token_scan's token block. An agent can distinguish it from every other price/market tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 1D for peak/drawdown/history questions, the default for market context around a risk verdict. It also states when-not to use it: not for risk, not for pool depth or lock status (get_liquidity), not for market cap (get_token_scan), which is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_scanScan a tokenARead-onlyIdempotentInspect
Run a full DeFade scan on one token contract. On Solana: token metadata, holder distribution, creator history (wallet age, previous token launches) and the headline risk verdict. On an EVM chain: the contract and market read only (token metadata with the owner and the mint, blacklist, whitelist and proxy flags, market, pairs and warnings), with no holders, creator or score; call get_rug_score there for the verdict. Start here for any "is this token safe", "is this a rug pull" or "should I buy this" question, then call get_rug_score for the verdict: the safety score here weighs only holders, creator and authorities. On Solana returns risk.score as a SAFETY score where 100 is clean and low numbers are dangerous, with a rating label. For the inverse — a rug pull probability where high means dangerous — call get_rug_score. Not for a single module in isolation (call that module's tool directly), price or market-cap questions (get_token_price), or checking the caller's own quota (get_usage). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk | No | Solana only. The SAFETY score: score (0-100, 100 is clean), rating, color, flags. Opposite direction from get_rug_score. Absent on EVM chains, where get_rug_score is the score. |
| token | No | Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea, based.bid …; DEX or Unknown when none) and whose mayhem is set on a pump.fun coin launched in Mayhem mode (agent, program, mintedToAgent, endsAt; null on any other coin and once 26 hours old, absent when the curve could not be read). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid. |
| market | No | EVM only: the main pair — priceUsd, marketCap, fdv, liquidityUsd, volume24h, priceChange, pairCreatedAt, dex. A nad.fun token still on its curve is priced from the curve: source "curve" and curve. Null when no pair was found. |
| creator | No | Solana only. Deployer wallet: address, walletAgeDays, solBalance, totalTransactions, tokenCreations, recentTokens, riskLevel. |
| holders | No | Solana only. Same body as get_holders: totalHolderCount, holderCountCapped, totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, vesting, leftover, mayhemAgent, bundles. |
| success | No | Solana: whether the scan completed. |
| warnings | No | EVM only: what the contract and market read flagged, each level (critical, warning or info), code and message. |
| launchpad | No | EVM only: the launchpad the token launched on, as the DeFade page names it: name (four.meme, flap.sh, Genius, Clanker, Zora, Virtuals, Pangea, Stockereum.fun, Pons, nad.fun, LiquidLaunch …), curve (its bonding curve, null when the launchpad has none), protocol, and onCurve and bondingProgress (0-100) for a token still on its curve. Null when no launchpad DeFade names, or the lookup did not answer in time. |
| poweredBy | No | Always "DeFade.org". |
| scanCount | No | How many times this token was scanned in the last 24 hours, on every DeFade surface (web, app, extension, Telegram, API) by every user, including this scan (scanWindow "24h"). |
| timestamp | No | ISO time the response was assembled. |
| analyzedAt | No | Solana: ISO time of the scan itself. |
| scanWindow | No | The window scanCount covers: "24h". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, but the description adds substantial context: per-chain return composition, the fact that the safety score weighs only holders/creator/authorities, the inverted-scoring distinction vs get_rug_score, and the 'one API unit' cost with the All-Chains plan requirement for EVM.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded and dense with useful routing, but it is long and references get_rug_score three times with overlapping explanation, which is somewhat redundant. Still, nearly every sentence carries actionable meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param, read-only scan tool with an output schema present, the description covers scope, per-chain return differences, scoring semantics, and follow-up tools. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents address and chain with examples and enum guidance. The description only restates 'Arguments: address and chain; one API unit on any chain,' adding little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Run a full DeFade scan on one token contract') and then divides behavior by chain (Solana vs EVM), making clear exactly what the tool does and how it differs from siblings like get_holders and get_rug_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to start here ('is this token safe', 'is this a rug pull'), names the follow-up/alternative tools (get_rug_score for the verdict, get_token_price for price, get_usage for quota), and lists exclusions ('not for a single module in isolation'). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageAPI usageARead-onlyIdempotentInspect
Report the calling API key's plan, rate limits and how much of its monthly allowance is left. Takes no arguments. Use it when a call fails on quota, or when the user asks what their DeFade plan includes. Not for anything about a token — every other tool takes an address; this one reports on the key itself.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | The tier this key is on. web_mcp is the connector key included with a DeFade Pro web subscription; its allowance is the plan's monthly scans, reported in plan/limits.perMonth. |
| units | No | How metering works: one request is one unit except the heaviest EVM calls, listed in heavyOnEvm with heavyCost. |
| usage | No | today, total, thisPeriod, remainingThisPeriod, periodResetsAt. |
| limits | No | perMinute, perDay, perMonth; perMonth is null on grandfathered keys. |
| credits | No | Overage: balance, overageEnabled, costPerRequest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds useful scope context: it operates on the calling key, takes no arguments, and is orthogonal to the token-address tools. It stops short of stating anything about the returned allowance window beyond 'monthly', but that is minor given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the purpose and followed by usage triggers and an exclusion. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Purpose, trigger conditions, scope boundary, and argument count are all covered — nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description reinforces this with 'Takes no arguments', matching the empty schema with additionalProperties=false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Report the calling API key's plan, rate limits and remaining monthly allowance') and explicitly scopes it to the key rather than a token, which cleanly separates it from every sibling tool that takes an address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete trigger conditions ('when a call fails on quota', 'when the user asks what their DeFade plan includes') plus an explicit exclusion ('Not for anything about a token'). The agent can route without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_linksProven insider linksARead-onlyIdempotentInspect
The graph of proven on-chain links between wallets around one token — who funded whom, who transferred to whom, and coordinated timing — typically the deployer's supply fanned out to look like organic demand. Use it when the holder list looks distributed and you want to know whether it really is. This is the hard-evidence member of the four "who is really behind this token" tools — a link counts only when a transfer or a shared funder is on chain: wallets that merely behave alike are get_lookalike_clusters, where the money first entered the chain is get_funding_sources, and identical bot fee settings are get_fee_fingerprint. Scope: the top 25 real holders are traced (pools, lockers and exchanges excluded), connections is capped at 50 rows with connectionsTotal as the full count, and an empty graph means no on-chain link was found among them — not proof they are independent, so follow up with get_lookalike_clusters. Not for the creator wallet's own sales and transfers (get_dev_tracker) or for market data of any kind. Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | No | Graph nodes; clusters groups them. |
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| locked | No | True on non-Pro keys, in which case only reason, upgradeUrl and message are present. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| connections | No | Wallet-to-wallet transfers that tie the cohort together; connectionsTotal is the count before truncation. |
| insiderCount | No | Wallets in the connected cohort; insiderHoldingPct is the supply they hold. |
| totalTransfers | No | Transfers behind the graph, moving transferredPct of supply. |
| walletConnections | No | Per-wallet connection counts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious behavior: scope is the top 25 real holders with pools/lockers/exchanges excluded, results capped at 50 rows with connectionsTotal as the true count, and an empty graph means 'no link found' rather than independence. It also discloses cost (one API unit on any chain). This is beyond what any structured field conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core concept and the routing comparison, which is the right order. It is dense — the sibling enumeration runs long — but nearly every clause carries decision-relevant information; only the four-way sibling sweep is slightly heavier than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and the description still covers the interpretation trap (empty graph ≠ independent) and the connections/connectionsTotal relationship. For a graph tool with two params, nothing an agent needs to call or interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the chain enum plus address format rules are already fully documented in the schema, including the 0x-needs-chain rule. The description's 'Arguments: address and chain' restates rather than adds. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (the graph of proven on-chain links between wallets around one token) and immediately names the mechanism — funding, transfers, coordinated timing. It explicitly distinguishes itself from three named siblings, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the holder list looks distributed and you want to know whether it really is'), names the alternative for each adjacent case (get_lookalike_clusters for behavioral similarity, get_funding_sources for first money on chain, get_fee_fingerprint for bot fee settings), and states exclusions (not get_dev_tracker, not market data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_whalesWhale activityARead-onlyIdempotentInspect
Wallets holding at least 1% of supply once pools, lockers, treasuries and custodial accounts are removed. Each row carries the balance, share of supply, any attribution label (known KOL, dev-linked stash, exchange), the 24-hour transaction count and recent buys and sells; the summary counts dangerous and active whales and gives a whale-risk verdict. One response, no pagination; cached for 15 minutes, so activity figures can lag by that much. A token with nothing above the threshold returns an empty list and largestHumanPct, so the empty state is explainable rather than silent. Use it after get_holders when the question is about who can dump and whether they are already dumping. Not for the full ranked holder list (get_holders), historically profitable wallets (get_smart_money), or the creator's own wallet (get_dev_tracker). Arguments: address and chain; one API unit on any chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan. | solana |
| address | Yes | The token's own contract address, exactly as an explorer shows it. Solana: the base58 mint, 32-44 characters (e.g. 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN). EVM: 0x followed by 40 hex characters, case-insensitive (e.g. 0x6982508145454ce325ddbe47a25d4ec3d2311933). Never a pool, pair, wallet or deployer address — those come back as not found. Set `chain` to match the address: a 0x address alone cannot say which EVM chain it lives on, and a Solana mint sent with an EVM chain is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | No | The address that was scanned (on get_token_scan, the full token metadata object instead). |
| whales | No | Each whale: address, balance, percentage of supply, attribution label (notable wallet, dev-linked, exchange), txCount24h, recent buys and sells. |
| summary | No | totalWhales, totalWhalePct, dangerWhales, activeWhales, whaleRisk, whaleThreshold, largestHumanPct, protocol and Streamflow-lock totals. |
| poweredBy | No | Always "DeFade.org". |
| timestamp | No | ISO time the response was assembled. |
| terminalUsage | No | Which trading terminals the whale cohort trades through (Pro keys). |
| protocolAccounts | No | Pools, lockers, treasuries and custodial accounts held out of the whale list, named. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds context they cannot carry: single response with no pagination, a 15-minute cache that can make activity figures lag, an explainable empty state returning largestHumanPct, and a cost of one API unit on any chain. That is exactly the operational detail an agent needs before deciding to re-query or interpret staleness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the eligibility definition, then returns, then empty state, then routing, then arguments — a sensible order with no filler sentences. It is on the long side and the final 'Arguments: address and chain' clause is redundant against a fully documented schema, costing a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be enumerated, yet the description still frames the summary and empty-state fields. Combined with the cache/lag note, cost, and sibling routing, an agent has everything needed to call this correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself already explains the chain/address coupling, base58 vs 0x formats, and EVM plan requirements. The description only restates 'Arguments: address and chain; one API unit on any chain', adding no semantics the schema lacks, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource with its defining rule: wallets holding at least 1% of supply after pools, lockers, treasuries and custodial accounts are removed. The return shape (balance, share, attribution label, 24h tx count, buys/sells, summary verdict) is spelled out, so an agent knows exactly what question this answers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use it after get_holders when the question is about who can dump and whether they are already dumping') and three explicit exclusions naming the correct siblings: get_holders for the full ranked list, get_smart_money for profitable wallets, get_dev_tracker for the creator's wallet. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_holders1 field changed- changed
Output schema / properties / vesting / descriptionPrevious value: -"Solana: vesting a launch program holds (Jupiter Lock, LaunchLab, Meteora DBC): lockedPct, claimablePct, reclaimablePct, unlocking30dPct, nextUnlock, fullyUnlockedAt, recipients, schedules, summary. Null when none."New value: +"Solana: vesting a launch program holds (Jupiter Lock, LaunchLab, Meteora DBC): lockedPct, claimablePct, reclaimablePct, unlocking30dPct, nextUnlock, fullyUnlockedAt, recipients, schedules, summary. Null when none. EVM (a Virtuals token on Base or Robinhood): its TokenTable vesting read on chain: available, protocol, unlockers, lockedPct, unlockedPct, claimedPct, claimablePct, unlock30dPct, unlock90dPct, nextUnlock, lockedUntil, claimers, revocable, line; { available: false, reason } while the read is pending, incomplete or failed, or the token has no unlocker; absent on other tokens."
2 tool updates
- Changed
get_holders6 fields changed- changed
Output schema / properties / concentration / descriptionPrevious value: -"top5, top10, top20 as percent of supply, counting real wallets only."New value: +"top5, top10, top20 as percent of supply, counting real wallets only, plus the parts one wallet can take now (heldBy)." - added
Output schema / properties / leftoverAdded value: +{ + "additionalProperties": true, + "description": "Solana: a Meteora DBC fixed supply leftover: pct, receiver (the config's leftover receiver: the burn address 1nc1nerator11111111111111111111111111111111 when it can only be paid there), role, platform, withdrawable (now, at graduation, or null when only the burn address can receive it or it was withdrawn), withdrawn, recipients, summary, and how it scores: counted (in concentration as the receiver's: the creator or one wallet can withdraw it now), overhang (a platform's wallet can withdraw it now, or withdrew it and still holds it: its own line, not counted) or burned. Null when none.", + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / lockedSupply / descriptionPrevious value: -"pct plus a lockers array naming each escrow."New value: +"pct plus a lockers array naming each escrow; a vesting lock counts what is not claimable yet and adds unlocksTo, nextUnlock, fullyUnlockedAt." - added
Output schema / properties / mayhemAgentAdded value: +{ + "additionalProperties": true, + "description": "Solana: what pump.fun's Mayhem agent wallet holds of the token: address, pct (of supply), amount. On a coin launched in Mayhem mode (get_token_scan token.timeline.mayhem) the create minted it 1B beside the curve's 1B; it can sell into the curve (the pool once graduated) until timeline.mayhem.endsAt, 24 hours from launch, and what it holds then is burned. Out of concentration like a pool; the rug score charges +4 while it can trade and holds 1% or more. On any other coin it is only what the wallet was sent, such as an airdrop, and nothing scores it. Null when it holds none.", + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / topHolders / descriptionPrevious value: -"Top 20 accounts: rank, address, walletAddress, amount, percentage, solBalance, isProtocol, protocolLabel."New value: +"Top 20 accounts: rank, address, walletAddress, amount, percentage, solBalance, isProtocol, protocolLabel. A launch vault or escrow is split into parts (partOf); a part one wallet can take now has heldBy, and vesting, leftover, launchLeftover and supplyDetail say what it is." - added
Output schema / properties / vestingAdded value: +{ + "additionalProperties": true, + "description": "Solana: vesting a launch program holds (Jupiter Lock, LaunchLab, Meteora DBC): lockedPct, claimablePct, reclaimablePct, unlocking30dPct, nextUnlock, fullyUnlockedAt, recipients, schedules, summary. Null when none.", + "type": [ + "object", + "null" + ] +}
- Changed
get_token_scan2 fields changed- changed
Output schema / properties / holders / descriptionPrevious value: -"Solana only. Same body as get_holders: totalHolderCount, holderCountCapped, totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, bundles."New value: +"Solana only. Same body as get_holders: totalHolderCount, holderCountCapped, totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, vesting, leftover, mayhemAgent, bundles." - changed
Output schema / properties / token / descriptionPrevious value: -"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea, based.bid …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."New value: +"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea, based.bid …; DEX or Unknown when none) and whose mayhem is set on a pump.fun coin launched in Mayhem mode (agent, program, mintedToAgent, endsAt; null on any other coin and once 26 hours old, absent when the curve could not be read). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."
1 tool update
- Changed
get_rug_score2 fields changed- changed
Output schema / properties / scoreLabel / descriptionPrevious value: -"Null normally. \"NEVER BONDED\" when the human surfaces print that state instead of the percentage; rugScore is still the number."New value: +"Null normally. \"NEVER BONDED\" or \"NEVER TOOK OFF\" when the human surfaces print that state instead of the percentage; rugScore is still the number." - changed
Output schema / properties / verdict / descriptionPrevious value: -"PROBABLY SAFE (<25), SOME RISK (25+), ELEVATED RISK (45+), HIGH RISK (60+), EXTREME RISK (75+); or a state that overrides the bands: RUGGED / DEAD, ABANDONED / DEAD, NEVER BONDED (a launchpad coin that never left its bonding curve — no pool ever existed; rugScore is still returned as a number)."New value: +"PROBABLY SAFE (<25), SOME RISK (25+), ELEVATED RISK (45+), HIGH RISK (60+), EXTREME RISK (75+); or a state that overrides the bands: RUGGED / DEAD, ABANDONED / DEAD (failed after its market cap had once passed $5,000, or with no candles to say it never did), NEVER BONDED (a launchpad coin that never left its bonding curve — no pool ever existed), NEVER TOOK OFF (off any curve, its market cap never passed $5,000); rugScore is still returned as a number."
1 tool update
- Changed
get_token_scan1 field changed- changed
Output schema / properties / token / descriptionPrevious value: -"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."New value: +"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea, based.bid …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."
1 tool update
- Changed
get_token_scan1 field changed- changed
Output schema / properties / token / descriptionPrevious value: -"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."New value: +"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, ownerLaunchpad (the owner by name when it is a launch protocol's contract that owns the token only to launch it, such as Doppler's Airlock, flap.sh's Portal or four.meme's TokenManager, or a label the contract gives no powers: the owners the rug score does not count), ownerLaunchpadKind (protocol, curve, controller or label), mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."
1 tool update
- Changed
get_liquidity1 field changed- changed
Output schema / properties / totalLiquidityUsd / descriptionPrevious value: -"Combined USD depth across pools; pools lists them and poolCount counts them."New value: +"Combined USD depth across pools; pools lists them and poolCount counts them. On an EVM chain, null when the pair feed gives no pool a liquidity figure, or the reserve of a bonding curve could not be priced: unknown, not zero."
1 tool update
- Changed
get_holders1 field changed- changed
Output schema / properties / bundles / descriptionPrevious value: -"Shallow bundle detection over the real wallets: detected, bundlePct, groups."New value: +"Always { detected: false, bundlePct: \"0.00\", groups: [] }, kept for older readers: similar balances are not a cluster. Launch bundles are get_launch_bundles."
14 tool updates
- Changed
get_dev_tracker2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_fee_fingerprint2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_funding_sources2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_holders2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_launch_bundles2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_launch_snipers2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_liquidity2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_lookalike_clusters2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_rug_score2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_smart_money2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_token_price2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_token_scan5 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +] - added
Output schema / properties / launchpadAdded value: +{ + "additionalProperties": true, + "description": "EVM only: the launchpad the token launched on, as the DeFade page names it: name (four.meme, flap.sh, Genius, Clanker, Zora, Virtuals, Pangea, Stockereum.fun, Pons, nad.fun, LiquidLaunch …), curve (its bonding curve, null when the launchpad has none), protocol, and onCurve and bondingProgress (0-100) for a token still on its curve. Null when no launchpad DeFade names, or the lookup did not answer in time.", + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / market / descriptionPrevious value: -"EVM only: the main pair — priceUsd, marketCap, fdv, liquidityUsd, volume24h, priceChange, pairCreatedAt, dex. Null when no pair was found."New value: +"EVM only: the main pair — priceUsd, marketCap, fdv, liquidityUsd, volume24h, priceChange, pairCreatedAt, dex. A nad.fun token still on its curve is priced from the curve: source \"curve\" and curve. Null when no pair was found." - changed
Output schema / properties / token / descriptionPrevious value: -"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity. EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."New value: +"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity, and timeline, whose launchPlatform names the launchpad (pump.fun, bonk.fun, Jupiter Studio, boop.fun, MetaDAO, Pangea …; DEX or Unknown when none). EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid."
- Changed
get_wallet_links2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
- Changed
get_whales2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm, monad. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "bsc", - "robinhood", - "arc", - "hyperevm" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm", + "monad" +]
1 tool update
- Changed
get_liquidity1 field changed- changed
Output schema / properties / lpStatus / descriptionPrevious value: -"Headline pool verdict: LP BURNED, LP LOCKED, LP UNLOCKED, PARTIALLY BURNED, LP NOT LOCKABLE, BONDING CURVE, NO LP FOUND, or a spelled-out combination."New value: +"Headline pool verdict: LP BURNED, LP LOCKED, LP UNLOCKED, PARTIALLY BURNED, LP NOT LOCKABLE, LP HELD BY DAO (a MetaDAO token: the vault of its DAO holds the liquidity), BONDING CURVE, NO LP FOUND, or a spelled-out combination."
1 tool update
- Changed
get_fee_fingerprint1 field changed- changed
Output schema / properties / groups / descriptionPrevious value: -"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value. On EVM, router names the public router whose buyers mostly paid the group's tip, when that explains it."New value: +"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value. router names the app the group came through (an EVM public router, a Solana terminal) when the value is that app's preset or automatic fee."
2 tool updates
- Changed
get_launch_bundles1 field changed- changed
Output schema / properties / summary / descriptionPrevious value: -"Totals across detected bundles, accounted on peak net exposure."New value: +"Totals across detected bundles, accounted on peak net exposure. summary.transferredUnsoldPct is the transferred share the DeFade website prints (moved out and not sold since); transferredPct counts every transfer out, a token each time it moved, and is not a share to quote."
- Changed
get_launch_snipers1 field changed- changed
Output schema / properties / stats / descriptionPrevious value: -"Cohort totals for the window. Solana: stats.bundleCohort is false when no bundle scan had run, so transfers to bundle wallets read as transferred supply."New value: +"Cohort totals for the window. stats.transferredUnsoldPct is the transferred share the DeFade website prints; the gross transfer figures count a token each time it moved. Solana: stats.bundleCohort is false when no bundle scan had run, so transfers to bundle wallets read as transferred supply."
1 tool update
- Changed
get_fee_fingerprint1 field changed- changed
Output schema / properties / groups / descriptionPrevious value: -"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value."New value: +"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value. On EVM, router names the public router whose buyers mostly paid the group's tip, when that explains it."
1 tool update
- Changed
get_launch_snipers3 fields changed- added
Output schema / properties / completeAdded value: +{ + "description": "False beside pending.", + "type": [ + "boolean", + "null" + ] +} - added
Output schema / properties / pendingAdded value: +{ + "description": "Solana: [\"bundles-pro\"] when this was read before Bundle Detection had run; the call started it. Call again in about a minute for the answer the scan page shows.", + "type": [ + "array", + "null" + ] +} - changed
Output schema / properties / stats / descriptionPrevious value: -"Cohort totals for the window."New value: +"Cohort totals for the window. Solana: stats.bundleCohort is false when no bundle scan had run, so transfers to bundle wallets read as transferred supply."
3 tool updates
- Changed
get_fee_fingerprint2 fields changed- changed
Output schema / properties / excluded / descriptionPrevious value: -"Fee values suppressed as client defaults, with the wallet count each covered."New value: +"Fee values too common to link anyone, with the wallet count each covered and a reason: generic_default (a value most of the launch used) or, on EVM, round_preset (a round tip an app or wallet sets for every user)." - changed
Output schema / properties / groups / descriptionPrevious value: -"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence."New value: +"One entry per fee setting shared by two or more wallets, strongest first: wallets, supplyPct bought, confidence. Only a confidence of 60 or more is evidence of one operator; below it, strangers can share the value."
- Changed
get_holders3 fields changed- added
Output schema / properties / holderCountCappedAdded value: +{ + "description": "True when the count stopped at 10,000: the token has at least that many holders.", + "type": [ + "boolean", + "null" + ] +} - added
Output schema / properties / totalHolderCountAdded value: +{ + "description": "Solana: every holder of the token, counted. 10,000 with holderCountCapped true when there are more. Null when the count was not in yet; ask again a few seconds later.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / totalHolders / descriptionPrevious value: -"Holder count, estimated from the top accounts."New value: +"How many of the largest accounts were read, at most 20. Not the holder count: that is totalHolderCount."
- Changed
get_token_scan1 field changed- changed
Output schema / properties / holders / descriptionPrevious value: -"Solana only. Same body as get_holders: totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, bundles."New value: +"Solana only. Same body as get_holders: totalHolderCount, holderCountCapped, totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, bundles."
1 tool update
- Changed
get_rug_score3 fields changed- added
Output schema / properties / completeAdded value: +{ + "description": "True when nothing is pending: every module the score reads is in it.", + "type": [ + "boolean", + "null" + ] +} - changed
Output schema / properties / coverage / descriptionPrevious value: -"\"full\" when the Pro signal set contributed, \"free\" when only the free signals did — a \"free\" score has seen less evidence. (\"partial\" only appears on the raw API when a caller declines to wait; this tool always waits for the complete answer.)"New value: +"\"full\" when the Pro signal set contributed, \"free\" when only the free signals did — a \"free\" score has seen less evidence. \"partial\" when a module was still running after the 25 s this tool waits (Bundle Detection on a token nobody has scanned can take a minute or more): the modules are named in pending and keep running, so call the tool again for the complete score." - added
Output schema / properties / pendingAdded value: +{ + "description": "Modules still running when the score was taken; empty when it is complete. Call the tool again for the score with them in.", + "type": [ + "array", + "null" + ] +}
1 tool update
- Changed
get_token_scan8 fields changed- changed
Output schema / properties / analyzedAt / descriptionPrevious value: -"ISO time of the scan itself."New value: +"Solana: ISO time of the scan itself." - changed
Output schema / properties / creator / descriptionPrevious value: -"Deployer wallet: address, walletAgeDays, solBalance, totalTransactions, tokenCreations, recentTokens, riskLevel."New value: +"Solana only. Deployer wallet: address, walletAgeDays, solBalance, totalTransactions, tokenCreations, recentTokens, riskLevel." - changed
Output schema / properties / holders / descriptionPrevious value: -"Same body as get_holders: totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, bundles."New value: +"Solana only. Same body as get_holders: totalHolders, topHolders, concentration, protocolHoldings, lockedSupply, deferredUnlock, bundles." - added
Output schema / properties / marketAdded value: +{ + "additionalProperties": true, + "description": "EVM only: the main pair — priceUsd, marketCap, fdv, liquidityUsd, volume24h, priceChange, pairCreatedAt, dex. Null when no pair was found.", + "type": [ + "object", + "null" + ] +} - changed
Output schema / properties / risk / descriptionPrevious value: -"The SAFETY score: score (0-100, 100 is clean), rating, color, flags. Opposite direction from get_rug_score."New value: +"Solana only. The SAFETY score: score (0-100, 100 is clean), rating, color, flags. Opposite direction from get_rug_score. Absent on EVM chains, where get_rug_score is the score." - changed
Output schema / properties / success / descriptionPrevious value: -"Whether the scan completed."New value: +"Solana: whether the scan completed." - changed
Output schema / properties / token / descriptionPrevious value: -"Token metadata: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity."New value: +"Token metadata. Solana: name, symbol, mint, supply, decimals, creator, mintAuthority, freezeAuthority, marketCap, liquidity. EVM: name, symbol, decimals, totalSupply, owner, ownerRenounced, mintable, hasBlacklist, hasWhitelist, isProxy, dexPaid." - added
Output schema / properties / warningsAdded value: +{ + "description": "EVM only: what the contract and market read flagged, each level (critical, warning or info), code and message.", + "type": [ + "array", + "null" + ] +}
1 tool update
- Changed
get_usage1 field changed- changed
Output schema / properties / units / descriptionPrevious value: -"How metering works: one request is one unit except the heaviest EVM modules, listed in heavyOnEvm with heavyCost."New value: +"How metering works: one request is one unit except the heaviest EVM calls, listed in heavyOnEvm with heavyCost."
1 tool update
- Changed
get_fee_fingerprint2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Only solana: this tool has no implementation on other chains, and any other value is refused before a request is spent. Omit it for solana."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
13 tool updates
- Changed
get_dev_tracker2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_funding_sources2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_holders2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_launch_bundles2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_launch_snipers2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_liquidity2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_lookalike_clusters2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_rug_score2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_smart_money2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_token_price2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_token_scan2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_wallet_links2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
- Changed
get_whales2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Chain the token is deployed on: solana (default), ethereum, base, robinhood. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan."New value: +"Chain the token is deployed on: solana (default), ethereum, base, bsc, robinhood, arc, hyperevm. Required for any 0x address, because the same contract address can exist on several EVM chains. Omit it for Solana. An unsupported value is rejected before any request is spent; EVM chains need a key on an All-Chains plan." - changed
Input schema / properties / chain / enumPrevious value: -[ - "solana", - "ethereum", - "base", - "robinhood" -]New value: +[ + "solana", + "ethereum", + "base", + "bsc", + "robinhood", + "arc", + "hyperevm" +]
1 tool update
- Changed
get_rug_score1 field changed- changed
Output schema / properties / coverage / descriptionPrevious value: -"\"full\" when the Pro signal set contributed, \"free\" when only the free signals did — a \"free\" score has seen less evidence."New value: +"\"full\" when the Pro signal set contributed, \"free\" when only the free signals did — a \"free\" score has seen less evidence. (\"partial\" only appears on the raw API when a caller declines to wait; this tool always waits for the complete answer.)"
Related MCP Connectors
Solana token rug-pull detection for AI trading agents. Score, authorities, liquidity.
Instant rug-check for any EVM or Solana token, distilled to one clear 0-10 risk verdict.
Solana token safety for AI agents — rug-pull, honeypot & Token-2022 trap detection before you buy.
Token Risk — rug-pull / honeypot screening for crypto tokens.
Related MCP Servers
- AlicenseAqualityAmaintenanceRug pull risk scores and on-chain forensics for memecoins on Solana, Ethereum, Base and Robinhood Chain - launch-bundle detection, funding-origin tracing, deployer history, insider networks and whale flow. 15 read-only tools.1532 npmMIT
- AlicenseBqualityCmaintenanceProvides on-chain forensic checks for evaluating transaction risks, including token verification, rug-pull detection, and fund tracing, using public blockchain endpoints.1217 npmMIT
- AlicenseNot gradedqualityAmaintenanceCross-chain risk intelligence: entity labeling, rug detection, bridge stuck trackingMIT
- AlicenseAqualityBmaintenanceOn-chain rug-pull & honeypot risk screen for ERC-20 tokens, providing a SAFE / CAUTION / HIGH-RISK verdict based on live public RPC reads.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.