Skip to main content
Glama

One coin, whole whale picture

whale_profile
Read-onlyIdempotent

Everything the recorded whale record can say about ONE coin in a single call: net flow over 1h, 4h, 24h and 7d; the CEX, on-chain and Hyperliquid split; WHICH of the 15 streamed CEX venues the flow actually sits on and how concentrated it is; whether two venues sit on opposite sides (venues.split) or the CEX and on-chain markets disagree outright (sources.sourceSplit); the current run of same-direction hours; and flow measured against price. pressure.state is one of absorption (whales bought while price fell), distribution (sold while it rose) or confirming (flow and price agree). It is null with a NAMED reason (price-coverage, flow-too-small, price-flat) whenever a leg is too thin to judge, so an absent verdict must be reported as "not enough to say", never as "no activity". venues.partial marks a window containing hours recorded before per-venue dollars existed, whose venue dollars are UNKNOWN and must not be read as zero. A window states hoursCovered ONLY when it holds fewer hours than it spans, so a 3-of-24 figure is never presented as a 24h figure; full windows carry no such field and need no disclaimer. Price-coverage figures are not sent when the pressure verdict already required them to pass, so there is nothing there to hedge with: a real shortfall arrives as a caveat field instead. On the free plans BTC over the last 24 hours and any other coin as a headline; a paid plan reaches the full 30-day record. Descriptive market data only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
coinNoCoin 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.
pairNoAlias for coin.
coinsNoPortfolio 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.
hoursNoHow far back to read the record (min 168, i.e. 7 days). The reported windows are always 1h, 4h, 24h and 7d.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
coinNoThe coin this profile describes.
noteNoOne line saying what the numbers cover, or why there are none. Read it before reporting any zero as a market reading.
cappedNoPresent 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.
caveatNoA real limit on this answer, in one clause. Present only when something genuinely narrows what can be said.
venuesNoWhich 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.
sourcesNoThe CEX, on-chain and Hyperliquid split, including sourceSplit when those markets sit on opposite sides.
summaryNoThe 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.
windowsNoNet flow per window, keyed 1h, 4h, 24h and 7d. A window states hoursCovered only when it holds fewer hours than it spans.
coverageNoHow much of the window carries a recorded reading.
pressureNoFlow 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.
availableNoFalse 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.
depth_noteNoHow far back the data behind this answer reaches.
access_noteNoWhat this connection could not return and what lifts it. Always pass this on to the user: it is the only place that information appears.

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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."
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / summary
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "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."
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / coin / description
      Added 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."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "access_note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "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."
      +    },
      +    "available": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "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."
      +    },
      +    "capped": {
      +      "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."
      +    },
      +    "caveat": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "A real limit on this answer, in one clause. Present only when something genuinely narrows what can be said."
      +    },
      +    "coin": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The coin this profile describes."
      +    },
      +    "coverage": {
      +      "description": "How much of the window carries a recorded reading."
      +    },
      +    "depth_note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "How far back the data behind this answer reaches."
      +    },
      +    "note": {
      +      "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."
      +    },
      +    "pressure": {
      +      "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."
      +    },
      +    "sources": {
      +      "description": "The CEX, on-chain and Hyperliquid split, including sourceSplit when those markets sit on opposite sides."
      +    },
      +    "venues": {
      +      "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."
      +    },
      +    "windows": {
      +      "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."
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond the annotations. It explains nuanced behaviors: pressure.state can be null with a NAMED reason (price-coverage, flow-too-small, price-flat) and must be reported as 'not enough to say', never 'no activity'. It warns that venues.partial marks windows with UNKNOWN venue dollars that must not be read as zero. It explains hoursCovered semantics (only present when fewer hours than span). It also clarifies that price-coverage figures are not sent when the pressure verdict already required them to pass. These are exactly the kind of behavioral traps an agent needs to know. No contradiction with readOnlyHint/idempotentHint/destructiveHint.

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 every sentence earns its place. It front-loads the core purpose and then systematically covers the key behavioral caveats. It is long, but the complexity of the tool justifies the length. It could be slightly better organized (e.g., grouping the caveats), but the information density is high and there is no filler.

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

Completeness5/5

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

Given the tool's complexity, the description is remarkably complete. It covers the data dimensions, the pressure state semantics, the venue partial-window caveat, the hoursCovered semantics, the price-coverage hedging rule, and plan limitations. The output schema exists, so return values don't need to be spelled out. An agent has everything it needs to call this tool correctly and interpret its results without falling into the documented traps.

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%, so the schema already documents all four parameters. The description adds value by clarifying the 'hours' parameter semantics: the reported windows are always 1h, 4h, 24h and 7d, and the minimum is 168 hours (7 days). It also reinforces that 'coin' is required despite being listed as not required in the schema, and that a pair like ETH/USD works with the quote leg dropped. This is meaningful added context beyond the schema.

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?

The description opens with a clear statement of what the tool does: 'Everything the recorded whale record can say about ONE coin in a single call.' It then enumerates the specific data dimensions (net flow over 1h/4h/24h/7d, CEX/on-chain/Hyperliquid split, venue concentration, pressure state, etc.), which distinguishes it from sibling tools like whale_flow or whale_activity. The title 'One coin, whole whale picture' reinforces the single-coin scope.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you want the complete whale picture for one coin in a single call, as opposed to more specialized siblings. It also gives plan-based guidance (free plans get BTC last 24h and any other coin as headline; paid plans reach 30 days). However, it does not explicitly name alternatives or state when NOT to use it, so it falls just short of a 5.

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