Skip to main content
Glama

Token Risk

token_risk
Read-onlyIdempotent

Base token risk scan: on-chain rug check and honeypot-style flag detection for any ERC-20, no GoPlus, DexScreener or other vendor - real Base token safety. Reads bytecode for mint/blacklist/pause/tax powers, EIP-1967 proxy, renounced ownership, plus Uniswap v2/v3 and Aerodrome liquidity. A Jev avoid/caution/acceptable verdict leads the response, raw signals follow. Holder concentration included only when history fits 1-2 log queries. Try GET /token-risk/sample.

Input Schema

NameRequiredDescriptionDefault
addressYesERC-20 contract address on Base to analyze (0x + 40 hex chars).

Output Schema

NameRequiredDescriptionDefault
addressYes
networkNo
verdictYesavoid/caution/acceptable. verdict_source is 'model' (a real model decision with a real probability) or 'rules' (deterministic mint/blacklist/pause/owner/liquidity check, probability/probabilities/confidence null) - used whenever the model does not answer within 2 seconds, so the route always returns a verdict without ever waiting on an upstream with no SLA.
timing_msNosignals (bytecode+liquidity via Multicall3, and holders - run together, sharing a 2s window), verdict, total, in milliseconds. Total is never intended to exceed 4.0s: signal-gathering and the Jev-or-rules verdict are each bounded so their sum can't exceed that budget by construction, not because anything gets cancelled at the last moment - added 2026-09-28 after a real payment settled for an analysis whose client had already timed out.
x402_receiptNoBilling and provenance receipt for this call.
holders_analysisYesstatus: 'ok' (with distinct_holders/top10_pct_of_supply), 'skipped_established_token' (history too large to reconstruct in 1-2 eth_getLogs calls), or 'unavailable' (the 3-second per-stage budget was exceeded).
bytecode_analysisYesmint/blacklist/pause/tax flags, proxy and ownership status.
liquidity_analysisYesUniswap v2/v3 and Aerodrome pools found, with reserves.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / verdict / description
      Previous value: -"avoid/caution/acceptable. verdict_source is 'jev' (a real Jev decision with a real probability) or 'rules' (deterministic mint/blacklist/pause/owner/liquidity check, probability/probabilities/confidence null) - used whenever Jev does not answer within 2 seconds, so the route always returns a verdict without ever waiting on an upstream with no SLA."New value: +"avoid/caution/acceptable. verdict_source is 'model' (a real model decision with a real probability) or 'rules' (deterministic mint/blacklist/pause/owner/liquidity check, probability/probabilities/confidence null) - used whenever the model does not answer within 2 seconds, so the route always returns a verdict without ever waiting on an upstream with no SLA."
    • changedOutput schema / properties / verdict / properties / verdict_source / enum
      Previous value: -[
      -  "jev",
      -  "rules"
      -]New value: +[
      +  "model",
      +  "rules"
      +]
  2. Changed8 schema fields changed
    • changedOutput schema / properties / holders_analysis / description
      Previous value: -"Top-10 holder concentration, or {\"status\": \"skipped_established_token\"} if the full transfer history does not provably fit in 1-2 eth_getLogs calls."New value: +"status: 'ok' (with distinct_holders/top10_pct_of_supply), 'skipped_established_token' (history too large to reconstruct in 1-2 eth_getLogs calls), or 'unavailable' (the 3-second per-stage budget was exceeded)."
    • addedOutput schema / properties / timing_ms
      Added value: +{
      +  "description": "signals (bytecode+liquidity via Multicall3, and holders - run together, sharing a 2s window), verdict, total, in milliseconds. Total is never intended to exceed 4.0s: signal-gathering and the Jev-or-rules verdict are each bounded so their sum can't exceed that budget by construction, not because anything gets cancelled at the last moment - added 2026-09-28 after a real payment settled for an analysis whose client had already timed out.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / verdict / description
      Previous value: -"Jev-powered decision: avoid/caution/acceptable with a real probability."New value: +"avoid/caution/acceptable. verdict_source is 'jev' (a real Jev decision with a real probability) or 'rules' (deterministic mint/blacklist/pause/owner/liquidity check, probability/probabilities/confidence null) - used whenever Jev does not answer within 2 seconds, so the route always returns a verdict without ever waiting on an upstream with no SLA."
    • changedOutput schema / properties / verdict / properties / confidence / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / verdict / properties / probabilities / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
    • changedOutput schema / properties / verdict / properties / probability / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • addedOutput schema / properties / verdict / properties / reason
      Added value: +{
      +  "description": "Only present when verdict_source is 'rules'.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / verdict / properties / verdict_source
      Added value: +{
      +  "enum": [
      +    "jev",
      +    "rules"
      +  ],
      +  "type": "string"
      +}
  3. Added

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnly/openWorld/idempotent, and the description adds substantial context beyond them: what it reads (bytecode mint/blacklist/pause/tax powers, EIP-1967 proxy, renounced ownership, Uniswap v2/v3 and Aerodrome liquidity), the verdict format (avoid/caution/acceptable leading the response), and a disclosed limitation (holder concentration only when history fits 1-2 log queries). This is rich behavioral detail that is consistent with 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then supporting detail, closing with a concrete 'Try GET /token-risk/sample' pointer. It is dense and largely earns its space, though the 'no GoPlus, DexScreener or other vendor - real Base token safety' clause leans slightly promotional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param read tool with an output schema, the description needn't explain returns, yet it usefully previews the verdict and supplemental signals. Data sources, verdict structure, and a conditional-data caveat are all present; the only real omission is sibling-level routing guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter at 100% schema description coverage, so the schema already fully documents the expected '0x + 40 hex chars' Base address. The description adds no parameter-level meaning beyond the schema, which is the baseline-3 case when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and scope: 'Base token risk scan: on-chain rug check and honeypot-style flag detection for any ERC-20.' It names the exact asset class and the class of analysis, letting an agent distinguish it from generic siblings like base_call or base_proxy 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('for any ERC-20', 'real Base token safety') but there is no explicit when-to-use/when-not guidance and no named alternative. The nearby sibling base_can-sell overlaps in intent, yet the description never picks a side or explains which to prefer, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.