Skip to main content
Glama

Whale activity on a coin

whale_activity
Read-onlyIdempotent

What whales are doing, per coin. view: summary (default with a coin: net flow over 1h/4h/24h/7d, exchange vs on-chain vs Hyperliquid split, flow against price), hourly (buy and sell dollars per hour), trades (individual whale trades, newest first), venues (which exchanges hold the flow), context (is this unusual for THIS coin, accepts a list), hyperliquid (fills with both wallets named), onchain (DEX swaps on Ethereum, Base, Arbitrum with the signer).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
coinNoCoin symbol, e.g. BTC. A pair like ETH/USD works too.
viewNoWhich lane; see the description.
chainNoethereum, base or arbitrum. Omit for all.
coinsNoSeveral coins in one call (list or "BTC,ETH"), up to 10.
hoursNoHow many hours back to read.
limitNoRows to return (usually up to 200; more is clamped and said).
cursorNoNext page: the cursor from the previous answer.
detailNobrief (default): the answer, key numbers and top rows. full: every row, paged with cursor.
sourceNotrades only: exchanges, DEX swaps or both.
min_usdNoSmallest trade in USD.
since_msNoOnly rows newer than this Unix-ms time (polling cursor).
breakdownNohourly only: split each hour by exchange or wallet (Pro).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_ofNoData time, ISO.
caveatNoA real limit, when non-null.
cursorNoNext page (detail full).
delayedNoSet when not live.
summaryNoThe answer in one sentence.
as_of_msNoData time, Unix ms.
availableNoFalse: no data; note says why.
truncatedNoRows held back; see trimmed.
next_toolsNoFollow-up calls {tool,args,why}.
access_noteNoWhat this connection could not return.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed41 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +{}
    • addedInput schema / properties / breakdown
      Added value: +{
      +  "description": "hourly only: split each hour by exchange or wallet (Pro).",
      +  "enum": [
      +    "none",
      +    "venues",
      +    "wallets",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / chain
      Added value: +{
      +  "description": "ethereum, base or arbitrum. Omit for all.",
      +  "type": "string"
      +}
    • changedInput schema / properties / coin / description
      Previous value: -"Coin symbol, for example BTC. A pair like ETH/USD works too, the quote leg is dropped. Required: with nothing to look up the call is refused rather than answered about a different coin."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too."
    • changedInput schema / properties / coins / description
      Previous value: -"Portfolio read: a list of coin symbols (or a comma-separated string) answered side by side in one call, up to 10. Omit for one coin."New value: +"Several coins in one call (list or \"BTC,ETH\"), up to 10."
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Next page: the cursor from the previous answer.",
      +  "type": "string"
      +}
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.",
      +  "enum": [
      +    "brief",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / hours / description
      Previous value: -"How far back to read the record (min 168, i.e. 7 days). The reported windows are always 1h, 4h, 24h and 7d."New value: +"How many hours back to read."
    • removedInput schema / properties / hours / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / hours / minimum
      Removed value: --9007199254740991
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Rows to return (usually up to 200; more is clamped and said).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / min_usd
      Added value: +{
      +  "description": "Smallest trade in USD.",
      +  "type": "number"
      +}
    • removedInput schema / properties / pair
      Removed value: -{
      -  "description": "Alias for coin.",
      -  "type": "string"
      -}
    • addedInput schema / properties / since_ms
      Added value: +{
      +  "description": "Only rows newer than this Unix-ms time (polling cursor).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / source
      Added value: +{
      +  "description": "trades only: exchanges, DEX swaps or both.",
      +  "enum": [
      +    "cex",
      +    "dex",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "Which lane; see the description.",
      +  "enum": [
      +    "summary",
      +    "hourly",
      +    "trades",
      +    "venues",
      +    "context",
      +    "hyperliquid",
      +    "onchain"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / properties / access_note / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedOutput schema / properties / access_note / description
      Previous value: -"What this connection could not return and what lifts it. Always pass this on to the user: it is the only place that information appears."New value: +"What this connection could not return."
    • addedOutput schema / properties / as_of
      Added value: +{
      +  "description": "Data time, ISO."
      +}
    • addedOutput schema / properties / as_of_ms
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Data time, Unix ms."
      +}
    • removedOutput schema / properties / available / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedOutput schema / properties / available / description
      Previous value: -"False when this lane could not answer: a producer is dark, the pair sits outside this plan, or the argument named something we do not carry. Absent or true means the numbers are a real reading, not a guess."New value: +"False: no data; note says why."
    • addedOutput schema / properties / available / type
      Added value: +"boolean"
    • removedOutput schema / properties / capped
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "applied": {
      -          "description": "The value actually used.",
      -          "type": "number"
      -        },
      -        "argument": {
      -          "description": "Which argument was cut down, for example limit or hours.",
      -          "type": "string"
      -        },
      -        "by": {
      -          "description": "Why it was cut: keyless for the free ceiling, plan_max for a paid ceiling, tool_max for a ceiling no plan raises.",
      -          "type": "string"
      -        },
      -        "max": {
      -          "description": "The ceiling that applied.",
      -          "type": "number"
      -        },
      -        "requested": {
      -          "description": "The value the caller asked for.",
      -          "type": "number"
      -        }
      -      },
      -      "required": [
      -        "argument",
      -        "requested",
      -        "applied",
      -        "max",
      -        "by"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Present only when an argument was cut down to a ceiling. Absent means nothing was clamped, so a smaller number than you asked for is the data and not a limit."
      -}
    • removedOutput schema / properties / caveat / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedOutput schema / properties / caveat / description
      Previous value: -"A real limit on this answer, in one clause. Present only when something genuinely narrows what can be said."New value: +"A real limit, when non-null."
    • removedOutput schema / properties / coin
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "The coin this profile describes."
      -}
    • removedOutput schema / properties / coverage
      Removed value: -{
      -  "description": "How much of the window carries a recorded reading."
      -}
    • addedOutput schema / properties / cursor
      Added value: +{
      +  "description": "Next page (detail full)."
      +}
    • addedOutput schema / properties / delayed
      Added value: +{
      +  "description": "Set when not live."
      +}
    • removedOutput schema / properties / depth_note
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "How far back the data behind this answer reaches."
      -}
    • addedOutput schema / properties / next_tools
      Added value: +{
      +  "description": "Follow-up calls {tool,args,why}.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / note
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "One line saying what the numbers cover, or why there are none. Read it before reporting any zero as a market reading."
      -}
    • removedOutput schema / properties / pressure
      Removed value: -{
      -  "description": "Flow measured against price. state is absorption, distribution or confirming. When there is no state, reason names why (price-coverage, flow-too-small, price-flat), which means not enough to say, never no activity."
      -}
    • removedOutput schema / properties / sources
      Removed value: -{
      -  "description": "The CEX, on-chain and Hyperliquid split, including sourceSplit when those markets sit on opposite sides."
      -}
    • changedOutput schema / properties / summary / description
      Previous value: -"The answer in one plain sentence, computed from the fields below. Open the reply with this, then let the numbers back it up. Null only when there was nothing to summarise."New value: +"The answer in one sentence."
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "Rows held back; see trimmed."
      +}
    • removedOutput schema / properties / venues
      Removed value: -{
      -  "description": "Which of the streamed exchanges the flow actually sits on and how concentrated it is. split marks two exchanges on opposite sides; partial marks a window whose exchange dollars are unknown rather than zero."
      -}
    • removedOutput schema / properties / windows
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": {},
      -      "propertyNames": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Net flow per window, keyed 1h, 4h, 24h and 7d. A window states hoursCovered only when it holds fewer hours than it spans."
      -}
  2. Changed1 schema field changed
    • addedInput schema / properties / coins
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "string"
      +    }
      +  ],
      +  "description": "Portfolio read: a list of coin symbols (or a comma-separated string) answered side by side in one call, up to 10. Omit for one coin."
      +}
  3. Added

TDQS

A3.8/5.0
Behavior5/5

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

Despite readOnlyHint and idempotentHint already covering safety, the description discloses substantial behavior: default summary contents, timeframes, flow splits, trade ordering, chain coverage, and context/unusualness semantics. This goes well beyond what annotations alone provide and makes the tool's behavior predictable.

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?

The description is dense but efficient: one leading statement plus a compressed view-by-view enumeration. It earns its length by covering seven distinct modes, though a little more structural formatting would improve skimmability.

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?

Given the 12-parameter surface and seven view variants, the description covers the semantic heart of each mode while leaving mechanical details like pagination and clamping to the schema. With an output schema present, this is reasonably complete, though it does not explain how the many filters interact.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaning beyond the schema by specifying what each view mode computes (e.g., 'net flow over 1h/4h/24h/7d', 'fills with both wallets named', 'DEX swaps ... with the signer'). It clarifies that context accepts a list and which parameter modes are exclusive, improving selection confidence.

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

Purpose4/5

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

The description states the tool's core purpose concretely: 'What whales are doing, per coin,' and enumerates all seven views with the data each returns. It is clearly scoped to per-coin whale activity, though it does not explicitly contrast with sibling tools like whale_radar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The view list maps to sub-modes, but there is no guidance on when to choose this tool versus sibling tools or which view fits a user's question. No exclusions or alternatives are mentioned, so an agent must infer usage from the view names.

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.

Resources