whale-data
Server Details
Real-time whale trades, Smart Money Radar, market snapshots, news sentiment, signal outcomes.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 68.6% over 56 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 21 tools
Several tools overlap in purpose: big_catch and situations both describe current one-coin setups with phases, while whale_radar and market_now both surface coins with unusual whale flow. coin_brief also bundles data that news, liquidations, and whale_activity provide separately, creating ambiguous boundaries. Explicit cross-references help in a few cases, but many tools appear to do similar things with subtly different defaults.
All names use lowercase snake_case and mostly follow a noun or noun-qualifier pattern like coin_brief, market_now, and whale_activity. Minor deviations such as big_catch, watch, and plural-only liquidations/news/options slightly break the pattern, but no naming conventions are mixed. Overall the naming is predictable and readable.
With 21 tools, the set is on the heavy side and many tools internally pack multiple views—market_now has six views, traders has six, and whale_activity has seven. This makes the count feel bloated and harder to navigate, though not extreme enough for a 2. Most tools earn their place, but the surface area exceeds a tight, minimal scope.
The server covers the core read-only crypto intelligence workflow well: coin discovery, price and funding/OI history, whale-flow activity, liquidations, news, signals, orderbook, options, sectors, and personal watchlists/alerts. Minor gaps exist, such as no historical options data or an explicit comprehensive coin-list endpoint, but these can be worked around. Overall, most expected workflows have no dead ends.
Available Tools
21 toolsbig_catchLive whale setupsBRead-onlyIdempotentInspect
The whale-flow setups tracked right now, one coin each, with state (forming, confirmed, accelerating), direction, age and the price move since it started.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| limit | No | Rows to return (usually up to 100; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are live ('right now') and that detail can be brief or full, but it does not disclose clamping behavior or pagination details beyond what the schema already says. No contradiction with 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?
The description is a single, compact sentence that front-loads the core purpose and lists the key output fields. It is efficient and easy to scan, though it could be slightly more explicit about usage boundaries.
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 the output schema exists and annotations cover safety, the description is adequate for a read-only list tool. However, it does not clarify how this tool differs from whale_activity or whale_radar, and it leaves the agent to infer when to use it. For a tool with 4 optional parameters and a paging mechanism, a bit more context would help.
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 documents all four parameters. The description adds minimal semantic value beyond the schema, only reinforcing that the tool is live and that detail controls row granularity. 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 specific verb ('tracked right now') and resource ('whale-flow setups'), and lists the key fields (state, direction, age, price move). It is clear what the tool returns, though it does not explicitly distinguish it from sibling tools like whale_activity or whale_radar.
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?
The description implies real-time tracking ('right now') and mentions optional filtering by coin and pagination via cursor, but it does not explicitly state when to use this tool versus alternatives like whale_activity or whale_radar. The usage context is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coin_briefCoin brief: why it is movingARead-onlyIdempotentInspect
The one-call answer for ONE coin, in causal order: price and 24h move, the news read (summary, mood, headlines), whale flow against its own normal, forced closes, funding and open interest, with recorded-history context. Answers "why is X moving" without a second call. view: brief (default), quick (price, funding, open interest only), funding (rate per exchange), crowding (0-100 crowding read, Pro).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| view | No | Which lane; see the description. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| compact | No | true: one line of text instead of JSON. | |
| position_usd | No | Position size in USD, to price the funding cost. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, lowering the burden. The description adds meaningful behavioral context beyond those: the response is organized 'in causal order', the output is guaranteed to avoid a second call, view variants alter what is returned, and crowding is gated to Pro users. No contradiction with 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?
Two dense sentences with the core promise front-loaded ('one-call answer for ONE coin, in causal order') before the content list and view lanes. Every clause earns its place, and the view enumeration is necessary because the schema explicitly defers to the description for lane meanings.
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. The description covers the data categories, the single-call behavior, all view variants with their contents, and the Pro restriction. The only minor gap is not naming sibling alternatives for routing, but for a well-scoped read-only analysis tool this is near-complete.
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 genuinely expands on the view parameter: it defines what quick (price, funding, OI only), funding (rate per exchange), and crowding (0-100, Pro) each return, while the schema merely says 'Which lane; see the description.' This makes the description the canonical source for view semantics 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?
States a specific verb/resource: 'one-call answer for ONE coin' that answers 'why is X moving', enumerating exact content (price, 24h move, news read, whale flow, forced closes, funding, open interest). The single-coin causal framing distinguishes it from market-wide siblings like market_screener, market_now, and watchlist_brief without them being named.
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 clear context: use this when the question is 'why is X moving' for one coin and you want it without a second call. Scope is explicit with 'ONE coin', implying it is not for portfolio scans or multi-coin comparisons, but no alternative tool is named and there is no when-not-to-use exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coin_searchFind a coinARead-onlyIdempotentInspect
Find a coin by symbol or name and learn the symbol the other tools take, whether it is covered and whether it is free, with price and 24h change. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| limit | No | Rows to return (usually up to 20; more is clamped and said). | |
| query | No | Symbol or part of a name, e.g. "sol". | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful return-content context (covered status, free status, price, 24h change) and states 'Free', but it does not discuss pagination behavior, rate limits, or edge cases beyond what the parameter schema already mentions.
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 core action is front-loaded in a compact first sentence, and the description stays short overall. 'Free.' is slightly redundant with 'whether it is free', but the description earns its place by being efficiently scannable.
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 search tool with full schema coverage and an output schema, the description conveys the essential inputs and outputs: search by symbol/name, get canonical symbol, coverage, free status, price, and 24h change. It lacks explicit guidance about when to prefer a sibling like coin_brief, but the schema covers pagination and detail levels.
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%, with each parameter already having a meaningful description such as 'Next page: the cursor from the previous answer' and 'brief (default): the answer, key numbers and top rows.' The description mostly restates the query concept ('by symbol or name') rather than adding new parameter-level meaning, so the baseline score of 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?
The description opens with a specific verb and resource: 'Find a coin by symbol or name', and clearly states the lookup value: canonical symbol, coverage, free status, price, and 24h change. It does not explicitly name a sibling like coin_brief, so differentiation is conveyed functionally rather than by direct contrast.
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?
The description gives clear context for when to use this tool: when you need to resolve a coin by symbol or name and learn whether it is covered, free, and what price/change it has. It does not provide explicit exclusions or name alternative tools, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
historyPrice and funding historyARead-onlyIdempotentInspect
History for one coin. series: price (default: near-live hourly or daily bars, oldest first), funding_oi (the intraday open interest and funding path), daily (the recorded daily archive of funding, open interest, price and liquidations for the coin), whale_daily (the recorded daily whale buy and sell flow for the coin).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| days | No | How many days back to read. | |
| hours | No | How many hours back to read. | |
| limit | No | Rows to return (usually up to 720; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| series | No | Which lane; see the description. | |
| interval | No | price only: 1h (default) or 1d. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds useful behavioral context: the default series (price), the default interval (hourly or daily), ordering (oldest first), and the nature of each series (e.g., intraday funding/OI, daily archive, whale flows). This goes beyond annotations without contradicting them.
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 description is a single sentence that efficiently packs the core purpose and all four series definitions. It's front-loaded with 'History for one coin' and avoids filler. While dense, every phrase adds information, making it appropriately concise for the complexity.
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 tool with an output schema and fully documented parameters, the description covers the main decision point (which series to use) and default behavior. It doesn't mention pagination or detail modes, but those are described in the parameter fields. The description is sufficient for an agent to call the tool correctly without missing key information.
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 parameters like coin, days, limit, etc., are already documented. The description enriches the 'series' parameter by explaining what each enum value returns (e.g., 'near-live hourly or daily bars', 'intraday open interest and funding path'). This adds semantic value beyond the schema's simple 'Which lane; see the description.'
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 clearly states 'History for one coin' and enumerates the available series (price, funding_oi, daily, whale_daily), each with a brief explanation. This is specific and goes beyond a mere tautology. It doesn't explicitly contrast with sibling tools, but as the only 'history' tool it's distinct enough.
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?
No guidance is provided on when to use this tool versus alternatives. The description only explains what it does, not the conditions for selecting it over other tools like market_now or coin_brief. There's no mention of when to prefer this tool or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidationsForced closes (liquidations)ARead-onlyIdempotentInspect
Forced closes. scope: coin (recorded long vs short closes for one coin, the default when a coin is named), market (the whole market, long/short split, the default otherwise), lending (on-chain lending liquidations with both wallets, never added to perp), projected (modelled levels, not trades), heat (where closes hit by price band). A long is force-closed by selling.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| chain | No | ethereum, base or arbitrum. Omit for all. | |
| hours | No | How many hours back to read. | |
| limit | No | Rows to return (usually up to 1000; more is clamped and said). | |
| scope | No | Which lane; see the description. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| since_ms | No | Only rows newer than this Unix-ms time (polling cursor). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond that: lending closes are on-chain and excluded from perp, projected levels are modelled rather than actual trades, and long closes are executed by selling. No contradiction with annotations 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?
The description is dense and efficient: a two-word subject followed by a compact scope legend, with a final clarifying sentence about long liquidations. Every clause adds information, and there is no repetition of schema content or annotations.
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 query tool with eight optional parameters and an output schema, the description covers the meaning of every scope lane and the relevant defaults. It does not discuss pagination or polling parameters, but those are fully documented in the schema, so the description is sufficiently complete.
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 real meaning for the scope parameter, which the schema explicitly defers to the description ('see the description'). It also explains default behavior per scope, going beyond the property names and enum values.
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 clearly identifies the resource as forced closes/liquidations and enumerates the distinct scope lanes. It is unambiguous about what the tool exposes, though it does not explicitly contrast itself with sibling tools like history or market_now.
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?
The description provides clear selection context within the tool: which scope is the default when a coin is named versus otherwise, and that lending liquidations are never added to perp. It does not mention alternative tools, but the internal scope guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_nowMarket now: what changedARead-onlyIdempotentInspect
The whole market in one call. view: changes (default: what changed since your last check or since_ms, ranked by how unusual, with plain state labels, what whales net bought and sold, coins that turned unusual, biggest movers, forced closes, the market news read; pass back next_since_ms on a timer), overview (totals, whale net flow, top coins; pass coin for one row), movers (24h gainers and losers with volume), extremes (pairs at a record or their own top or bottom 5% for funding, open interest or liquidations), defi (DEX volume and TVL per chain).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| only | No | movers only: one side. | |
| view | No | Which lane; see the description. | |
| limit | No | Rows to return (usually up to 50; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| since_ms | No | changes only: only changes after this Unix-ms time. Omit for everything since your last check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: stateful behavior ('since your last check', 'pass back next_since_ms on a timer'), result clamping ('more is clamped and said' in the limit param), unusualness ranking, and the brief/full detail split. Annotations already cover the read-only, idempotent safety profile, so no contradiction exists; the description enriches the operational picture.
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 opener 'The whole market in one call' front-loads the purpose well and every clause adds information rather than padding. But the body is a single run-on sentence with nested parentheticals and semicolons exceeding 80 words, making it notably hard to parse; per-view bullets or line breaks would drastically improve 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?
For a 5-view, 7-parameter tool with an output schema and safety annotations, the description covers all views, the stateful since-last-check behavior, pagination via cursor/next_since_ms, and the brief/full detail split. Minor gaps like explicit auth/rate-limit mentions and error behavior are not critical for a read-only aggregator.
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 carries real semantic weight for the central view parameter — the schema explicitly defers ('Which lane; see the description') and the description defines each lane's payload. It also adds the since_ms/next_since_ms timer protocol and cross-parameter behavior ('overview ... pass coin for one row') that the schema does not.
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 opener 'The whole market in one call' names the verb-resource pair and positions this as the market-wide aggregator tool, and each of the five view descriptions states exactly what that lane returns. This clearly distinguishes it from siblings like coin_brief (single coin), market_screener (screening), and news (news feed).
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?
The per-view breakdown gives clear implied context for when each lane is appropriate (changes for what moved since last check, movers for 24h gainers/losers, defi for DEX volume/TVL). However, no sibling alternatives are named and there are no explicit when-not-to-use or exclusion statements, so deciding between market_now, market_screener, and coin_brief 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.
market_screenerMarket screenerARead-onlyIdempotentInspect
Screen every recorded pair at once: funding_band and oi_band against each pair's own recorded days (record high, top 5%, top 25%, typical, bottom 25%, bottom 5%, record low), a minimum whale-flow multiple, and unusual-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows to return (usually up to 50; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| compact | No | true: one line per coin. | |
| oi_band | No | Open interest band(s). | |
| funding_band | No | Funding band(s), e.g. "top 5%". | |
| unusual_only | No | Only coins with unusual whale activity now. | |
| whale_mult_min | No | Minimum whale flow as a multiple of the coin's own average. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent.te, lowering the bar. The description adds meaningful behavioral context by stating that bands are evaluated 'against each pair's own recorded days' and by listing the exact band thresholds. This helps the agent understand that results are relative per pair, not global.
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 description is a single, front-loaded sentence: 'Screen every recorded pair at once' followed by a compact list of criteria. No filler or redundant phrases. The band list is dense but necessary, and each element earns its place.
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 doesn't need to cover return shapes. It fully explains the screening logic, the key parameter semantics, and the tool's scope. Pagination and output-detail parameters are already documented in the schema, so an agent has everything needed to call this tool 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?
Although schema coverage is 100%, the description adds crucial meaning beyond the schema: it explains that funding_band and oi_band are interpreted relative to each pair's own recorded days, and it clearly maps 'minimum whale-flow multiple' to whale_mult_min and 'unusual-only' to unusual_only. This resolves ambiguity that the bare schema leaves.
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 and resource: 'Screen every recorded pair at once.' It then enumerates the screening criteria (funding_band, oi_band, whale-flow multiple, unusual-only), making it unmistakable what the tool does. This distinguishes it clearly from siblings like coin_brief or watchlist_brief, which target narrower 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?
The phrase 'every recorded pair at once' makes the tool's use case explicit: whole-market screening rather than single-coin or watchlist inspection. It doesn't name alternative tools or list exclusion conditions, but the context is clear enough for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_accessMy plan and answers leftARead-onlyIdempotentInspect
Your plan, what it includes, roughly how many answers are left, and the next plan up. Free, never counted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: 'Free, never counted' clarifies that using this tool does not consume plan answers, which is a meaningful behavioral trait beyond the annotations. It also discloses the approximate nature of the answer count ('roughly').
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 description is a single, compact sentence that front-loads the core purpose ('Your plan, what it includes, roughly how many answers are left, and the next plan up') and ends with a useful behavioral note ('Free, never counted'). Every word earns its place; 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?
For a zero-parameter, read-only status tool with a rich output schema, the description is nearly complete. It explains what the user will see and the key behavioral caveat (not counted). The only minor gap is that it doesn't explicitly say 'use this to check your plan status,' but the purpose is obvious from the description and title.
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?
The tool has zero parameters, so the schema provides no parameter semantics. The description compensates by explaining what the tool returns (plan details, answer count, next plan), which is the relevant semantic content. With 0 params, the baseline is 4, and the description meets it.
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 clearly states what the tool does: it shows the user's plan, what it includes, roughly how many answers are left, and the next plan up. It uses a specific verb ('Your plan...') and resource, and the title reinforces the purpose. It doesn't explicitly distinguish from siblings, but the resource ('my plan') is unique among the listed siblings.
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?
The description implies usage context: it's a read-only status check for the user's plan and remaining answers. It doesn't explicitly state when to use it vs alternatives, but the sibling list contains no other plan-related tool, so the context is clear enough. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_alertsMy fired alertsBRead-onlyIdempotentInspect
What your CoinLobster alerts fired since a time, newest first, with the move since each. Needs a signed-in connection (free).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| since_ms | No | Only rows newer than this Unix-ms time (polling cursor). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that a signed-in connection is needed and that it returns alerts that have 'fired' since a time, which is useful context. However, it does not elaborate on pagination behavior or response structure, but with annotations and an output schema present, the description adds sufficient supplementary context.
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 description is a single sentence, front-loaded with the main function, and includes the key prerequisite (signed-in connection). Every word earns its place; no fluff or redundancy.
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 the output schema exists, the annotations cover safety, and the schema documents all parameters, the description is fairly complete. It covers the core behavior, sorting, and the time constraint. The main gap is lack of usage guidance to differentiate from sibling tools, but that is addressed under usage_guidelines. Overall, an agent can call this tool correctly based on the information provided.
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% – every parameter has a description in the schema. The description itself only mentions 'since a time', which mirrors the since_ms parameter, but adds no new meaning beyond the schema. The baseline of 3 is appropriate because the schema handles parameter documentation.
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 clear purpose: list fired alerts since a time, sorted newest first, with the move since each. It uses a specific verb ('fired') and resource (alerts), and is not a tautology. However, it does not explicitly distinguish itself from sibling alert-related tools like 'signals' or 'watchlist_brief', though the phrase 'fired alerts' gives some distinction.
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?
No guidance on when to use this tool versus alternatives. It mentions the requirement for a signed-in connection, but does not state under what circumstances an agent should choose this over other alert/notification tools. No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
newsCrypto newsARead-onlyIdempotentInspect
Headlines for one coin with the mood score (-100 to +100), the written points behind it and the market-wide read. For "why is X moving" use coin_brief: it already carries this.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| limit | No | Rows to return (usually up to 20; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful output-composition context but no additional behavioral traits such as rate limits or side effects. No contradiction 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?
Two sentences with no filler; the output highlights are front-loaded and the alternative routing is a short second sentence. Every sentence earns its place.
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, and the parameter schema covers clamping, paging, cursor use, and detail modes. Combined with the description's clear purpose and sibling routing, nothing an agent needs for correct invocation 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 parameters are already well documented with examples, defaults, and paging behavior. The description reinforces that the tool targets one coin but adds no new parameter-level 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?
The description names the exact resource (news for one coin) and lists distinctive outputs: headline, mood score with range, written points, and market-wide read. It also distinguishes itself from coin_brief, so an agent can select it without opening the 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 explicitly says not to use this tool for 'why is X moving' and routes to coin_brief as the alternative. The tool's own use case—single-coin headlines with sentiment and market context—is clear from the first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optionsOptions (BTC, ETH)ARead-onlyIdempotentInspect
BTC or ETH options: open interest by strike, put/call balance, max pain per expiry, implied volatility and recent large option trades.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | BTC (default) or ETH. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description itself adds no behavioral context such as pagination behavior, defaults, or side effects; it only lists data content, which does not go beyond 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?
The description is a single, front-loaded sentence that packs the resource and the key delivered data fields with no filler or redundant wording. Every part earns its place.
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?
The full input schema, output schema, and annotations cover the calling contract well, and the description supplies the domain content. The only notable gap is explicit usage routing versus sibling tools, but that is already captured under the usage-guidelines dimension.
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%: coin, cursor, and detail are all documented in the schema, including defaults and the brief/full enum. The description adds no parameter-specific meaning beyond that, so the baseline of 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?
The description names the specific resource (BTC or ETH options) and enumerates exactly what data is provided: open interest by strike, put/call balance, max pain per expiry, implied volatility, and large trades. This clearly distinguishes it from sibling tools like orderbook or liquidations.
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?
The description implies a clear use case for fetching BTC/ETH options data, but gives no explicit when-to-use versus when-not-to-use guidance and does not name any alternatives or exclusions. The context is clear but the routing guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orderbookOrder bookARead-onlyIdempotentInspect
The order book for one coin merged across exchanges: best bid and ask, the gap between them, and the dollars resting on each side with the exchanges holding each level.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| levels | No | Price levels per side. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful context by disclosing that the data is merged across exchanges and showing exactly what is computed: bid/ask, spread, side dollar amounts, and holding exchanges. This goes beyond simply restating 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?
A single densely informative sentence that front-loads the core subject ('order book for one coin merged across exchanges') and then lists the returned quantities in a natural order. There is no redundant wording or 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?
For a read-only tool with no required parameters and an output schema, the description plus schema covers the coin scope, aggregation behavior, and key returned items. The only real shortfall is explicit routing guidance among sibling tools, which was already penalized under usage guidelines.
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 already documents coin, cursor, detail, and levels. The description focuses on output content rather than parameter meaning, so it does not need to compensate for schema gaps; 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?
The description clearly specifies the tool returns a consolidated per-coin order book and enumerates its key contents: best bid and ask, the gap, dollars resting on each side, and the exchanges at each level. It stops short of a 5 because it is a noun-phrase definition rather than a verb-led instruction and does not explicitly name sibling tools.
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?
The intended use is easy to infer: call this when the user wants a single coin's aggregated order book. However, there is no explicit when/when-not guidance or comparison to related tools such as market_now or coin_brief.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sectorsSector rotationARead-onlyIdempotentInspect
Where whale money is moving between sectors (L1, L2, DeFi, memes, AI and others): net direction, share of flow and the coins carrying it.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| window | No | Time window: 1h, 4h or 24h. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it provides net direction, share of flow, and coins, which is useful context about the data returned. However, it does not disclose any additional behavioral traits such as pagination limits or data freshness, but the annotations lower the burden.
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 description is a single, concise sentence that front-loads the core purpose and key outputs. There is zero fluff or redundancy, and every word contributes to understanding the tool's function.
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?
The tool has an output schema, so return values are already documented. The description states the key data points (net direction, share of flow, coins) and the scope (sectors). It is complete for an agent to decide when to call it, though it lacks explicit mention of pagination (handled by cursor) or usage conditions, which is minor given the simplicity and existing 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%, with all three parameters (cursor, detail, window) having descriptions in the schema. The description does not add any additional meaning beyond what the schema already provides. Baseline 3 is appropriate since the schema handles the parameter documentation.
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 clearly states the tool's function: tracking where whale money moves between sectors, with specific outputs like net direction, share of flow, and coins. It uses a specific verb ('moving') and resource ('sectors'), making the purpose unambiguous and distinct from siblings like whale_activity which focus on individual whales rather than sector-level flow.
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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, exclusions, or comparisons to sibling tools. The only implied usage is that it answers sector rotation queries, but no explicit when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signalsSignal track recordARead-onlyIdempotentInspect
Signals logged live when they fired, never backfilled, with the price after. view: recent (default: the latest signals and their outcomes), record (the last N firings of one type on one coin: how many rose, median move), scorecard (the totals only).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| type | No | Signal type; an unknown one lists the valid types. | |
| view | No | Which lane; see the description. | |
| hours | No | How many hours back to read. | |
| limit | No | Rows to return (usually up to 500; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already in annotations, the description adds valuable context: signals are logged live when fired and never backfilled, each entry includes the price after, record shows how many rose and median move, and scorecard returns totals only. This goes beyond annotations, though it does not mention rate limits or pagination behavior.
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 description is two sentences with no filler. The first covers the core data provenance (live, never backfilled, price after), and the second lists the three views with their distinguishing outputs. Every clause earns its place and information is front-loaded.
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 the tool's complexity (7 optional parameters, 3 views, paginated detail mode), the description combined with full schema coverage and output schema gives an agent enough to call it correctly. The main missing piece is explicit when-to-use versus siblings, which is already reflected in the usage-guidelines score.
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 meaning for the view parameter by explaining each enum value (recent, record, scorecard) in terms of returned data, and implicitly clarifies the roles of type and coin for the record view. Other parameters are adequately described in 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 description clearly states the tool exposes signals with their outcomes and enumerates three distinct views (recent, record, scorecard) with their specific outputs. This identifies the resource and operation well, though it does not explicitly name sibling tools for differentiation.
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?
The description gives internal guidance by explaining what each view is for, which helps choose among the view parameter values. However, it does not state when to use this tool instead of related siblings like history or market_now, so cross-tool usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
situationsWhat is developingARead-onlyIdempotentInspect
What is going on right now, in stages (emerging, confirmed, escalating, cooling, contested): one coin, one story each, with the evidence behind it and the price move since it started.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| limit | No | Rows to return (usually up to 50; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| include_resolved | No | Also finished ones with their outcome (Pro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the output structure (stages, evidence, price move) which is useful behavioral detail. However, it doesn't disclose any additional behaviors like pagination limits, rate limits, or specific handling of edge cases. Given the annotations, a 3 is appropriate.
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 description is a single, front-loaded sentence that efficiently conveys the purpose and key output elements. It includes the stages, the 'one coin, one story' format, evidence, and price move without redundancy. It could arguably be slightly more structured (e.g., listing the parameters) but is concise and to the 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?
The description covers the core purpose and output format. An output schema exists, so return values are documented there. The parameter schema is complete. The description does not explicitly mention pagination, but the 'detail' and 'cursor' parameters imply it. Overall, it is sufficient for an agent to understand what the tool does and how to invoke it, though it could add a note on when to use 'full' vs 'brief'.
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%, meaning all five parameters are documented in the input schema. The description does not add any parameter-specific meaning beyond what the schema already provides. It mentions the stages but not how parameters like 'coin' or 'limit' map to the output. This matches the baseline of 3 when the schema handles the heavy lifting.
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 clearly states what the tool does: it provides a snapshot of current situations categorized by stages (emerging, confirmed, escalating, cooling, contested), with one coin and story each, including evidence and price move. This is specific about the resource and output format, though it lacks an explicit verb like 'list' or 'get'. It is distinct from siblings like 'market_now' or 'signals' in that it focuses on stage-based situation tracking, but it doesn't explicitly differentiate itself.
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?
The description implies its use case (monitoring current developments) but provides no explicit guidance on when to use it versus alternatives, nor any exclusions. There is no mention of alternative tools or conditions that would favor another tool. The context is clear enough that an agent could infer usage, but it lacks direct routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tradersSmart money and big tradersARead-onlyIdempotentInspect
Smart money here means the PROVEN cohort: Hyperliquid accounts screened for real profit and verified by their own fills. view: smart_money (default: what that cohort holds and trades per coin), proven (who they are, by trader number), screened (every wallet screened from closing fills, a weaker claim), board (tracked big accounts: equity, leverage, bias), moves (opens, adds, trims, closes, flips just now), dex (wallets moving the most on DEXes).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| kind | No | moves only: open, add, trim, close or flip. | |
| view | No | Which lane; see the description. | |
| chain | No | ethereum, base or arbitrum. Omit for all. | |
| limit | No | Rows to return (usually up to 100; more is clamped and said). | |
| token | No | dex only: one token. | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| wallet | No | moves only: one account address. | |
| window | No | Time window: 1h, 4h or 24h. | |
| since_ms | No | Only rows newer than this Unix-ms time (polling cursor). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/destructive annotations, the description discloses data provenance and trust levels ('verified by their own fills', screened is 'a weaker claim') and temporal behavior ('moves... just now', dex wallets moving the most). It doesn't discuss auth or rate limits, but annotations already cover the safety profile, so the added semantics are meaningful.
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 description is compact and front-loads the defining cohort before the view list. It is dense but not padded; a more structured bullet list would aid scanability, but every clause 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?
For an 11-parameter tool with a rich output schema and full schema parameter descriptions, the description covers the key conceptual dimension (view meanings and cohort definition) that would otherwise be opaque. It leaves cross-tool comparison to siblings out, but the read-only, non-destructive profile is already annotated, so the agent has enough to call 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 coverage is 100%, so baseline is 3, but the description adds real semantics to the view parameter by explaining each enum value and marking smart_money as the default, which the schema does not do. Other parameters are sufficiently covered by 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 description defines the tool's core subject precisely ('PROVEN cohort: Hyperliquid accounts screened for real profit and verified by their own fills') and enumerates six views with their specific outputs (e.g., moves: opens/adds/trims/closes/flips just now). This clearly differentiates traders from generic whale/screener siblings by establishing the unique cohort definition, even without naming alternatives.
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 clear per-view usage guidance: smart_money is default cohort holdings/trades, proven identifies accounts by trader number, screened is explicitly a 'weaker claim', moves covers live position changes, dex covers on-chain movers. What's missing is explicit routing against sibling tools such as whale_radar or big_catch, so it is strong on context but not on exclusions/alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walletOne wallet or accountARead-onlyIdempotentInspect
One address. A Hyperliquid account returns its live positions, leverage, liquidation prices and recent fills; an Ethereum, Base or Arbitrum wallet returns its DEX swaps and net flow per token. chain: auto (default: tries Hyperliquid, then on-chain), hyperliquid, or evm.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | auto (default), hyperliquid, or evm (ethereum, base, arbitrum). | |
| limit | No | Rows to return (usually up to 200; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| address | Yes | 0x followed by 40 hex characters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior. The description adds genuine behavioral context by explaining what each chain type returns and how auto mode falls back from Hyperliquid to on-chain. It does not contradict annotations and covers the main behavioral variation an agent must know.
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?
Two sentences carry substantial meaning: scope ('One address'), per-chain output differences, and the chain parameter's behavior and values. It is front-loaded and free of filler, though the fragment 'One address.' is slightly cryptic and could be more explicit.
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 tool with a rich output schema and detailed parameter descriptions, the description covers the key invocation decision: which chain to use and what to expect. Pagination, limits, and address format are already handled by the schema and output schema, so nothing critical 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. The description adds value beyond the schema by explaining the chain parameter's auto behavior ('tries Hyperliquid, then on-chain') and by mapping chain values to the kinds of data returned. It does not over-explain fields already well described in 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 description states that a single address yields account or wallet data, and clearly differentiates Hyperliquid accounts (positions, leverage, liquidation prices, fills) from EVM wallets (DEX swaps, net flow). The verb 'returns' and resource are present, though the opening 'One address' is terse and relies on the title for full framing.
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?
The description implies usage: pass one address, optionally choose a chain, and get account/wallet data. It explains the chain auto-resolution order, which is useful, but it never explicitly says when to prefer this tool over alternatives like whale_activity, traders, or watch, and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchAlerts to a webhookADestructiveInspect
Alerts checked continuously and posted to your webhook when they trigger. action: list (default), create (coin + trigger: radar_unusual, flag_fired or funding_band with band, + webhook_url), delete (id). Starter and up to create.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | delete only: the alert id. | |
| band | No | create with funding_band: the band, e.g. "top 5%". | |
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| action | No | Which lane; see the description. | |
| trigger | No | create only: what triggers it. | |
| webhook_url | No | create only: a public https URL you control. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=false, so the bar is lower; the description adds genuinely useful context about continuous monitoring, webhook delivery, and the creation plan requirement. It doesn't elaborate on delete effects, but that side is already signaled by the destructive annotation.
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 description is two dense sentences with the core behavior front-loaded and a compact action grammar. Every clause earns its place, and there is no filler or repetition of schema details.
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 multi-action tool it covers the behavioral model, action routes, conditional parameter requirements, and the plan limitation, with an output schema available to explain returns. It doesn't address edge cases like duplicate alert creation, but annotations and the output schema absorb most of that burden.
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 value by encoding cross-parameter contracts: create needs coin + trigger + webhook_url, funding_band needs band, and delete takes id. This is more meaningful than the flat per-field schema descriptions.
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 clear behavior: alerts are continuously checked and posted to a webhook, and the action list defines list/create/delete. However, it does not explicitly distinguish itself from nearby alert-related siblings such as my_alerts or signals, so it stops short of a 5.
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?
The description gives clear action routing (list default, create with coin+trigger+webhook_url, delete by id) and the plan gate 'Starter and up to create', so usage context is implied. But it never explicitly says when NOT to use this tool or names an alternative for simpler alert viewing, leaving the agent to infer the decision boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_briefMy watchlistARead-onlyIdempotentInspect
Every coin on your watchlist through the whale read in one call: flow against each coin's normal, buy or sell lean, and whether it is unusual now. Needs a signed-in connection (free).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat those. It adds useful context beyond annotations: an authentication requirement and the kind of analytical output provided. No contradiction 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?
Two concise sentences with no filler. The primary purpose and output are front-loaded, and the auth note is brief but relevant.
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?
The description is complete for a zero-parameter read-only tool: it states what data is returned, the auth requirement, and the scope. The output schema covers return structure, and annotations cover the behavior profile, so nothing important 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?
The tool has zero parameters and schema description coverage is 100%, so the schema fully documents the input surface. The description adds no parameter-specific meaning, but none is needed; the baseline for zero-parameter tools is 4.
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 clearly states the tool returns every coin on the user's watchlist with specific metrics: flow against normal, buy/sell lean, and unusualness. It names the resource (watchlist) and differentiates itself from sibling tools like 'watch' by focusing on a per-coin brief in one call.
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 a clear context: use this to get watchlist coins with whale-flow analysis in a single call. It also states the prerequisite of a signed-in connection. It does not explicitly name alternatives or when-not-to-use, but the context is strong enough for an agent to know when it applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whale_activityWhale activity on a coinARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin symbol, e.g. BTC. A pair like ETH/USD works too. | |
| view | No | Which lane; see the description. | |
| chain | No | ethereum, base or arbitrum. Omit for all. | |
| coins | No | Several coins in one call (list or "BTC,ETH"), up to 10. | |
| hours | No | How many hours back to read. | |
| limit | No | Rows to return (usually up to 200; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| source | No | trades only: exchanges, DEX swaps or both. | |
| min_usd | No | Smallest trade in USD. | |
| since_ms | No | Only rows newer than this Unix-ms time (polling cursor). | |
| breakdown | No | hourly only: split each hour by exchange or wallet (Pro). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
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.
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.
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.
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.
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.
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.
whale_radarUnusual whale activityARead-onlyIdempotentInspect
Which coins have UNUSUAL whale flow right now, each against its own normal, over 1h, 4h and 24h, ranked by how far above normal (not by dollar size). For discovery when no coin is named.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows to return (usually up to 100; more is clamped and said). | |
| cursor | No | Next page: the cursor from the previous answer. | |
| detail | No | brief (default): the answer, key numbers and top rows. full: every row, paged with cursor. | |
| window | No | One window only. Omit for all three. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Data time, ISO. |
| caveat | No | A real limit, when non-null. |
| cursor | No | Next page (detail full). |
| delayed | No | Set when not live. |
| summary | No | The answer in one sentence. |
| as_of_ms | No | Data time, Unix ms. |
| available | No | False: no data; note says why. |
| truncated | No | Rows held back; see trimmed. |
| next_tools | No | Follow-up calls {tool,args,why}. |
| access_note | No | What this connection could not return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it explains that results are 'ranked by how far above normal (not by dollar size)' and that each coin is compared 'against its own normal'. This clarifies the output ordering and normalization logic without contradicting 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?
Two sentences, no filler. The first sentence front-loads the core query and key qualifiers (unusual, own normal, timeframes, ranking), while the second sentence gives the use case. Every word earns its place.
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?
The description is complete for a read-only discovery tool: it states the purpose, ranking logic, timeframes, and use case. The output schema covers return structure, and the input schema fully documents parameters. The only minor omission is a more explicit explanation of how 'unusual' is statistically measured, but 'against its own normal' is sufficient for an agent to call the tool 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 baseline is 3. The description mentions the time windows (1h, 4h, 24h) which map to the window parameter, but it does not add anything beyond what the schema already states (e.g., 'Omit for all three'). No extra semantics are provided for limit, cursor, or detail, so the parameter meaning comes almost entirely from 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 description uses a specific verb and resource: 'Which coins have UNUSUAL whale flow right now'. It clearly defines the scope (unusual relative to each coin's own normal), the timeframes (1h, 4h, 24h), and the ranking criterion (by how far above normal, not dollar size). The closing phrase 'For discovery when no coin is named' distinguishes it from sibling tools like whale_activity, which likely requires a coin name.
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?
The description explicitly states the primary use case: 'For discovery when no coin is named.' This gives clear context for when to choose this tool over others. However, it does not explicitly name an alternative or state a when-not condition, leaving the distinction from whale_activity implicit rather than direct.
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.
63 tool updates
- Changed
big_catch26 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"Only the setup on this coin. Omit for every live setup."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Max setups. Defaults to 10, hard ceiling 50 for everyone."New value: +"Rows to return (usually up to 100; more is clamped and said)." - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / limit / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for coin.", - "type": "string" -} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False when the engine has not published (building:true)."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rows returned." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / setupsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "coin, state, tier, direction, direction_label, catch_type, severity, age_minutes, price_move_pct; Starter and up adds score, max_score, breakdown, fire_price, price." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - removed
Output schema / properties / totalRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Live setups matching the filter." -} - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / upgradeRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only when the score layer was withheld." -}
- Added
coin_brief - Removed
coin_liquidations - Changed
coin_search27 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"Alias for query."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Max matches. Defaults to 10, hard ceiling 20 for everyone."New value: +"Rows to return (usually up to 20; more is clamped and said)." - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / limit / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for query (a pair like SOL/USD searches its base).", - "type": "string" -} - changed
Input schema / properties / query / descriptionPrevious value: -"Symbol or part of a name, for example \"sol\" or \"pepe\"."New value: +"Symbol or part of a name, e.g. \"sol\"." - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False when nothing was searched (no query) or the catalog has not loaded."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rows returned." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / matchesRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "symbol, name, pair (when streamed), streamed, free, price, change_24h_pct, volume_24h_usd, market_cap_usd, rank." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / queryRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The query as searched." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - removed
Output schema / properties / totalRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Total catalog matches." -} - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +}
- Removed
crypto_news - Removed
defi_liquidations - Removed
defi_summary - Removed
dex_board - Removed
dex_wallet - Removed
flag_outcomes - Removed
funding_matrix - Added
history - Removed
hl_board - Removed
hl_moves - Removed
hl_traders - Removed
hl_wallet - Removed
hl_whales - Removed
liq_heat - Removed
liq_zones - Changed
liquidations49 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / properties / chainAdded value: +{ + "description": "ethereum, base or arbitrum. Omit for all.", + "type": "string" +} - changed
Input schema / properties / coin / descriptionPrevious value: -"Alias for pair."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / hours / descriptionPrevious value: -"Look back this many hours, up to 720. Omit for the most recent events."New value: +"How many hours back to read." - changed
Input schema / properties / hours / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 on the free plans and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."New value: +"Rows to return (usually up to 1000; more is clamped and said)." - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / limit / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / pairRemoved value: -{ - "description": "e.g. ETH/USD. A bare symbol like ETH also works.", - "type": "string" -} - added
Input schema / properties / scopeAdded value: +{ + "description": "Which lane; see the description.", + "enum": [ + "coin", + "market", + "lending", + "projected", + "heat" + ], + "type": "string" +} - changed
Input schema / properties / since_ms / descriptionPrevious value: -"Polling cursor: only rows newer than this Unix-ms timestamp, applied before the row cap. Pass back the next_since_ms from the previous answer so a timer never re-reads the same rows."New value: +"Only rows newer than this Unix-ms time (polling cursor)." - removed
Input schema / properties / since_ms / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / since_ms / minimumRemoved value: --9007199254740991 - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / access_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Output schema / properties / access_note / descriptionPrevious 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." - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious 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." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / cappedRemoved 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." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many events fired in the whole window, not how many rows came back." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / history_includedRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "True when the recorded series was merged in, so a restart has not erased earlier events." -} - removed
Output schema / properties / liquidationsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The events themselves, newest first: price, size in base and quote, side (long_liquidated or short_liquidated), exchange and time. A sample of the window when truncated is true." -} - removed
Output schema / properties / long_liquidationsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "COUNT of longs force-closed. For dollars read long_usd." -} - removed
Output schema / properties / long_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Dollars of longs force-closed across the window." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / noteRemoved 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." -} - removed
Output schema / properties / pairRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The pair these events belong to." -} - removed
Output schema / properties / requested_hoursRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The period asked for, so a page can be told apart from a period." -} - removed
Output schema / properties / rows_returnedRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many event rows are actually in this reply." -} - removed
Output schema / properties / rows_span_minutesRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How far back the returned rows themselves reach." -} - removed
Output schema / properties / short_liquidationsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "COUNT of shorts force-closed. For dollars read short_usd." -} - removed
Output schema / properties / short_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Dollars of shorts force-closed across the window." -} - removed
Output schema / properties / sourcesRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "How the events split between the streamed exchanges and Hyperliquid, and whether the Hyperliquid part is a sample." -} - added
Output schema / properties / summaryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The answer in one sentence." +} - removed
Output schema / properties / total_in_windowRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many events the window holds in total." -} - removed
Output schema / properties / total_volume_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Dollars forced out across the whole window." -} - removed
Output schema / properties / truncated / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / truncated / descriptionPrevious value: -"True when more rows matched than were returned, so what you have is a page and not the whole set."New value: +"Rows held back; see trimmed." - removed
Output schema / properties / window_hoursRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The period the totals cover, in hours." -} - removed
Output schema / properties / window_minutesRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The same period in minutes." -}
- Removed
market_brief - Removed
market_changes - Removed
market_digest - Removed
market_extremes - Removed
market_history - Removed
market_liquidations - Removed
market_movers - Added
market_now - Removed
market_overview - Changed
market_screener38 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / compact / descriptionPrevious value: -"Return one plain-text line per matching pair rather than the JSON rows. Defaults to false."New value: +"true: one line per coin." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / funding_band / descriptionPrevious value: -"One of: record high, top 5%, top 25%, typical, bottom 25%, bottom 5%, record low."New value: +"Funding band(s), e.g. \"top 5%\"." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Defaults to 20, hard ceiling 50 for everyone and no plan raises it. `matched` counts every pair that passed the filters regardless, and truncated says whether the rows are a shortened list."New value: +"Rows to return (usually up to 50; more is clamped and said)." - removed
Input schema / properties / limit / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / limit / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / oi_band / descriptionPrevious value: -"Same values as funding_band."New value: +"Open interest band(s)." - changed
Input schema / properties / unusual_only / descriptionPrevious value: -"Keep only coins the radar currently marks unusual in its 1h, 4h or 24h window. Defaults to false."New value: +"Only coins with unusual whale activity now." - changed
Input schema / properties / whale_mult_min / descriptionPrevious value: -"Keep only coins whose 24h whale flow is at least this multiple of their own logged daily average, for example 3 for 3x and up. Coins with no logged multiple are dropped rather than treated as zero. Omit for no flow filter."New value: +"Minimum whale flow as a multiple of the coin's own average." - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / access_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Output schema / properties / access_note / descriptionPrevious 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." - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious 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." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / cappedRemoved 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." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / compactRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Present and true only on a compact:true call, where the whole answer is the text in `line`." -} - removed
Output schema / properties / criteriaRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "The filters as they were actually applied, so a misread argument is visible." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / lineRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One plain-text line per matching pair, returned only when compact:true was asked for." -} - removed
Output schema / properties / matchedRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many pairs passed every filter, counted before the row cap. Null when nothing was screened." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / noteRemoved 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." -} - removed
Output schema / properties / returnedRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many rows are in this reply." -} - removed
Output schema / properties / rowsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "One row per matching pair: pair, coin, price, 24h change, the funding and open interest bands against the same pair recorded days with the day counts behind them, the whale multiple, and whether the ranking currently calls it unusual." -} - removed
Output schema / properties / scanned_pairsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "How many pairs were examined." -} - added
Output schema / properties / summaryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The answer in one sentence." +} - removed
Output schema / properties / truncated / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / truncated / descriptionPrevious value: -"True when more rows matched than were returned, so what you have is a page and not the whole set."New value: +"Rows held back; see trimmed." - removed
Output schema / properties / unknown_bandRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Set when a band was named that this screen does not know. Nothing was screened, so this is not no matches." -} - removed
Output schema / properties / valid_bandsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The bands that do exist, returned alongside unknown_band." -}
- Removed
market_snapshot - Changed
my_access24 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / access_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Output schema / properties / access_note / descriptionPrevious 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." - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / authenticatedRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "True when any valid sign-in or key was presented." -} - added
Output schema / properties / availableAdded value: +{ + "description": "False: no data; note says why.", + "type": "boolean" +} - removed
Output schema / properties / capsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "The row cap and time window every capped tool applies right now, each with the free value and the paid-plan value beside it." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / creditsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "The balance: credits_remaining, plan, plan_active, credits_per_call, calls_left_estimate and where to top up. A null credits_remaining always carries a note saying WHY, because could not read and spent to zero send a user to two different places." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / free_pairsRemoved value: -{ - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ] - }, - { - "type": "null" - } - ], - "description": "The pairs this connection can read. A list when keyless, the words every streamed pair on a paid plan, or a short sentence when the market lane could not be read." -} - removed
Output schema / properties / how_to_liftRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "What lifts the caps, where to get it, and (as not_this) the two things people buy by mistake that change nothing here." -} - removed
Output schema / properties / locked_hereRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "What this connection cannot reach right now. Empty on a paid plan." -} - removed
Output schema / properties / meteredRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Whether calls cost credits on this connection, and how much." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / on_free_planRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "True when this connection reads free-shaped data. The single fact most users are asking for." -} - removed
Output schema / properties / plainRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One sentence describing this tier in the user own words rather than ours." -} - added
Output schema / properties / summaryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The answer in one sentence." +} - removed
Output schema / properties / tierRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Which state this connection is in: keyless, signed_in_free, or the plan key (starter, pro, alpha, scale)." -} - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +}
- Changed
my_alerts28 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"Only alerts on this coin. Omit for every coin."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for coin.", - "type": "string" -} - changed
Input schema / properties / since_ms / descriptionPrevious value: -"Only alerts fired after this Unix-ms timestamp. Defaults to the last 24 hours. Pass back next_since_ms from the previous answer to read only what is new."New value: +"Only rows newer than this Unix-ms time (polling cursor)." - removed
Input schema / properties / since_ms / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / since_ms / minimumRemoved value: --9007199254740991 - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - removed
Output schema / properties / alertsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Starter and up: fired_at, type, coin, pair, side, usd, price_at_fire, exchange, wallet, since_pct." -} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False keyless (reason no_owner: sign in, free) or when history is not wired."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / coinsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Per coin: coin, fired." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / firedRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Alerts that fired since since_ms." -} - removed
Output schema / properties / next_since_msRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Pass back as since_ms to read only what is new." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / rows_withheldRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Free: rows held back (the counts above are complete)." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / upgradeRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only when rows were withheld: the cheapest plan that returns them." -}
- Added
news - Removed
oi_funding_history - Removed
onchain_whales - Changed
options35 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"BTC or ETH (the only coins Deribit lists options for). A pair like BTC/USD works too, the quote leg is dropped. Defaults to BTC."New value: +"BTC (default) or ETH." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for coin.", - "type": "string" -} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious 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." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / callOiUsdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Open interest sitting in calls (upside bets), in USD." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / coinRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The coin these options are for (BTC or ETH)." -} - removed
Output schema / properties / coins_coveredRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The coins options are carried for (BTC, ETH)." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / dvolRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Implied-vol index: how big a swing the market is pricing in. Lower is calmer." -} - removed
Output schema / properties / expiriesRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Open interest grouped by expiry date, with days to go." -} - removed
Output schema / properties / gammaWallsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "The strikes holding the most open interest, biggest first, with the call and put split. These often act as magnets into expiry." -} - removed
Output schema / properties / maxPainRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Per near expiry, the strike where the most options expire worthless." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / noteRemoved 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." -} - removed
Output schema / properties / openInterestUsdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Total open interest in USD across all listed options." -} - removed
Output schema / properties / putCallRatioRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Put open interest divided by call open interest. Above ~1.15 is put-heavy, below ~0.7 is call-heavy." -} - removed
Output schema / properties / putOiUsdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Open interest sitting in puts (downside protection), in USD." -} - removed
Output schema / properties / recentLargeTradesRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Large option buys and sells above a size floor, newest first. Deeper on a paid plan." -} - removed
Output schema / properties / recentTradesTruncatedRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "True when the large-trade list was shortened for a keyless caller." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / underlyingPriceRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Spot price of the coin, from the venue." -} - removed
Output schema / properties / updatedAtRemoved value: -{ - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - { - "type": "null" - } - ], - "description": "When this snapshot was published." -} - removed
Output schema / properties / venueRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Always Deribit." -}
- Changed
orderbook31 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"Alias for pair."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / levels / descriptionPrevious value: -"Price levels per side. Defaults to 10; the ceiling is 5 on the free plans, 10 on Starter, 25 on Pro (hard)."New value: +"Price levels per side." - removed
Input schema / properties / levels / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / levels / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / pairRemoved value: -{ - "description": "Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted.", - "type": "string" -} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / ask_usd_in_levelsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Dollars resting on the ask side in the returned levels." -} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False when the pair is not covered, not in the free set on this plan, or has no snapshot."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / best_askRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Best ask across venues." -} - removed
Output schema / properties / best_bidRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Best bid across venues." -} - removed
Output schema / properties / bid_usd_in_levelsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Dollars resting on the bid side in the returned levels." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / combinedRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "bids and asks aggregated by price, each level listing the venues holding it." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / exchange_countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Venues merged." -} - removed
Output schema / properties / levelsRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Levels per side returned." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / per_exchangeRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Each venue's own top levels." -} - removed
Output schema / properties / spread_pctRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Spread as a percent of the ask." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +}
- Removed
price_candles - Removed
proven_traders - Added
sectors - Removed
signal_outcomes - Removed
signal_record - Added
signals - Changed
situations27 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / coin / descriptionPrevious value: -"One coin symbol to filter to. Omit for every coin."New value: +"Coin symbol, e.g. BTC. A pair like ETH/USD works too." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / include_resolved / descriptionPrevious value: -"Also return situations that resolved in the last 48h, with their outcomes. Pro and up."New value: +"Also finished ones with their outcome (Pro)." - added
Input schema / properties / limitAdded value: +{ + "description": "Rows to return (usually up to 50; more is clamped and said).", + "type": "integer" +} - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for coin.", - "type": "string" -} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - removed
Output schema / properties / active_totalRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Live situations before the free cap." -} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False when the engine has not published (building:true)."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rows returned." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / resolvedRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Pro and up, when include_resolved: situations resolved in the last 48h with outcomes." -} - removed
Output schema / properties / situationsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "id, coin, type, type_label, direction, stage, headline, extreme, started_at, last_material_at, price_move_pct, families, supporting, conflicting, changes." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / upgradeRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only when something was withheld: the cheapest plan that lifts it." -} - removed
Output schema / properties / withheldRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Live situations held back on this plan." -}
- Removed
smart_money - Removed
squeeze_score - Removed
trade_context - Added
traders - Added
wallet - Added
watch - Removed
watch_create - Removed
watch_delete - Removed
watch_list - Changed
watchlist_brief19 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious value: -"False keyless (reason no_owner) or when the watchlist is empty (empty:true)."New value: +"False: no data; note says why." - added
Output schema / properties / available / typeAdded value: +"boolean" - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - removed
Output schema / properties / coinsRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Per watchlist coin: the whale-context read (multiple vs average, records, buy share), direction, unusual_now, and the dollar flow on Starter and up." -} - removed
Output schema / properties / countRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Coins read (up to 10)." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / radarRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "The radar rows for these coins per window, in the same shape whale_radar returns on this plan." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / upgradeRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present on the free shape: the cheapest plan that adds the dollar flow." -}
- Changed
whale_activity41 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / properties / breakdownAdded value: +{ + "description": "hourly only: split each hour by exchange or wallet (Pro).", + "enum": [ + "none", + "venues", + "wallets", + "all" + ], + "type": "string" +} - added
Input schema / properties / chainAdded value: +{ + "description": "ethereum, base or arbitrum. Omit for all.", + "type": "string" +} - changed
Input schema / properties / coin / descriptionPrevious 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." - changed
Input schema / properties / coins / descriptionPrevious 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." - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - changed
Input schema / properties / hours / descriptionPrevious 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." - removed
Input schema / properties / hours / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / hours / minimumRemoved value: --9007199254740991 - added
Input schema / properties / limitAdded value: +{ + "description": "Rows to return (usually up to 200; more is clamped and said).", + "type": "integer" +} - added
Input schema / properties / min_usdAdded value: +{ + "description": "Smallest trade in USD.", + "type": "number" +} - removed
Input schema / properties / pairRemoved value: -{ - "description": "Alias for coin.", - "type": "string" -} - added
Input schema / properties / since_msAdded value: +{ + "description": "Only rows newer than this Unix-ms time (polling cursor).", + "type": "integer" +} - added
Input schema / properties / sourceAdded value: +{ + "description": "trades only: exchanges, DEX swaps or both.", + "enum": [ + "cex", + "dex", + "all" + ], + "type": "string" +} - added
Input schema / properties / viewAdded value: +{ + "description": "Which lane; see the description.", + "enum": [ + "summary", + "hourly", + "trades", + "venues", + "context", + "hyperliquid", + "onchain" + ], + "type": "string" +} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / access_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Output schema / properties / access_note / descriptionPrevious 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." - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious 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." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / cappedRemoved 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." -} - removed
Output schema / properties / caveat / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Output schema / properties / caveat / descriptionPrevious 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." - removed
Output schema / properties / coinRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The coin this profile describes." -} - removed
Output schema / properties / coverageRemoved value: -{ - "description": "How much of the window carries a recorded reading." -} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / depth_noteRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "How far back the data behind this answer reaches." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / noteRemoved 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." -} - removed
Output schema / properties / pressureRemoved 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." -} - removed
Output schema / properties / sourcesRemoved value: -{ - "description": "The CEX, on-chain and Hyperliquid split, including sourceSplit when those markets sit on opposite sides." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / venuesRemoved 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." -} - removed
Output schema / properties / windowsRemoved 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." -}
- Removed
whale_context - Removed
whale_flow - Removed
whale_profile - Changed
whale_radar28 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +{} - added
Input schema / properties / cursorAdded value: +{ + "description": "Next page: the cursor from the previous answer.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "description": "brief (default): the answer, key numbers and top rows. full: every row, paged with cursor.", + "enum": [ + "brief", + "full" + ], + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Rows to return (usually up to 100; more is clamped and said).", + "type": "integer" +} - added
Input schema / properties / windowAdded value: +{ + "description": "One window only. Omit for all three.", + "enum": [ + "1h", + "4h", + "24h" + ], + "type": "string" +} - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / access_noteAdded value: +{ + "description": "What this connection could not return." +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Data time, ISO." +} - added
Output schema / properties / as_of_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Data time, Unix ms." +} - removed
Output schema / properties / available / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Output schema / properties / available / descriptionPrevious 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." - added
Output schema / properties / available / typeAdded value: +"boolean" - removed
Output schema / properties / blurredMagnitudeRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Keyless only: true because dollar sizes on held-back coins are rounded away." -} - removed
Output schema / properties / buildingRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "True while the ranking has not been published yet." -} - added
Output schema / properties / caveatAdded value: +{ + "description": "A real limit, when non-null." +} - added
Output schema / properties / cursorAdded value: +{ + "description": "Next page (detail full)." +} - added
Output schema / properties / delayedAdded value: +{ + "description": "Set when not live." +} - removed
Output schema / properties / freeCoinsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Keyless only: the coins whose numbers come through unblurred." -} - removed
Output schema / properties / freshnessRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "How often the ranking is rebuilt." -} - removed
Output schema / properties / generatedAtRemoved value: -{ - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - { - "type": "null" - } - ], - "description": "When the ranking was computed." -} - removed
Output schema / properties / lockedCountRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Keyless only: how many coins were held back." -} - removed
Output schema / properties / lockedUnusualCountRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Keyless only: how many of the held-back coins are the unusual ones." -} - added
Output schema / properties / next_toolsAdded value: +{ + "description": "Follow-up calls {tool,args,why}.", + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / noteRemoved 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." -} - changed
Output schema / properties / summary / descriptionPrevious 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." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Rows held back; see trimmed." +} - removed
Output schema / properties / windowsRemoved value: -{ - "description": "The ranked coins per window, keyed 1h, 4h and 24h. Each row names the coin, its dollars in the window and how that compares with the same coin trailing hours." -}
- Removed
whale_sectors - Removed
whale_tape - Removed
whale_trades
4 tool updates
- Changed
crypto_news2 fields changed- added
Output schema / properties / key_levelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The one level or figure the written read points at, or null." +} - added
Output schema / properties / pointsAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The written points behind the summary, each with a kind (signal, data, risk or macro) and its text. Empty when nothing was recorded." +}
- Changed
market_brief1 field changed- added
Output schema / properties / newsAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "What is being said about this coin, so a \"why is it moving\" question is answered in this one call: summary (the written one-liner), sentiment and sentiment_score (minus 100 to plus 100, NULL when nothing was recorded, which is not the same as neutral), points (the written points behind the summary, each with a kind), key_level, headlines (title, source, published, link) and macro (the same read for the market as a whole). available:false with covered:true means the coin is recorded and this plan reaches BTC and macro only." +}
- Changed
market_liquidations1 field changed- changed
Output schema / properties / perp_liquidations / descriptionPrevious value: -"The 24h forced-close picture on leveraged markets: count, total_usd, the long and short split in both dollars and counts, hour by hour, the peak hour, the ranked coins, the biggest single event, and which exchanges are behind the totals. Long dollars are sell-side pressure."New value: +"The 24h forced-close picture on leveraged markets: count, total_usd, the long and short split in both dollars and counts, hour by hour, the peak hour, the ranked coins, the biggest single event, and which exchanges are behind the totals. Long dollars are sell-side pressure. held_out names anything removed before these numbers were built (how many rows, how many dollars, on which symbols and why), or is null when nothing was; those dollars are NOT inside any figure here."
- Changed
trade_context1 field changed- added
Output schema / properties / newsAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "What is being said about this coin, so a \"why is it moving\" question is answered in this one call: summary (the written one-liner), sentiment and sentiment_score (minus 100 to plus 100, NULL when nothing was recorded, which is not the same as neutral), points (the written points behind the summary, each with a kind), key_level, headlines (title, source, published, link) and macro (the same read for the market as a whole). available:false with covered:true means the coin is recorded and this plan reaches BTC and macro only." +}
1 tool update
- Changed
market_history1 field changed- changed
Input schema / properties / days / descriptionPrevious value: -"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 1 on the free plans and 400 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."New value: +"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 1 on the free plans and 400 on Pro (Starter sits between). Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."
17 tool updates
- Changed
coin_liquidations1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."New value: +"Max rows returned. Capped at 25 on the free plans and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."
- Changed
flag_outcomes2 fields changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How far back to look, in hours. Defaults to 48. Capped at 168 keyless and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window."New value: +"How far back to look, in hours. Defaults to 48. Capped at 168 on the free plans and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 on the free plans and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
funding_matrix1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Every streamed pair answers keyless. Rates come back per exchange at that exchange's own interval_h, so magnitudes are not comparable across rows without normalising first."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. On the free plans BTC answers in full and any other coin as a headline. Rates come back per exchange at that exchange's own interval_h, so magnitudes are not comparable across rows without normalising first."
- Changed
hl_wallet1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max recent fills returned for this account. Defaults to 50, hard ceiling 200 for everyone and no plan raises it. Keyless calls receive 3 of them whatever is asked for, and the live positions come back either way."New value: +"Max recent fills returned for this account. Defaults to 50, hard ceiling 200 for everyone and no plan raises it. The free plans receive 3 of them whatever is asked for, and the live positions come back either way."
- Changed
liq_zones1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs and get the projected levels without the cascade chains; a paid plan reaches any streamed pair with the full snapshot."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. The free plans get BTC's projected levels without the cascade chains and a headline for any other coin; a paid plan reaches any streamed pair with the full snapshot."
- Changed
liquidations1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."New value: +"Max rows returned. Capped at 25 on the free plans and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."
- Changed
market_brief1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Any streamed pair answers keyless; off the free pairs a keyless reply is the lite shape and names what it withheld in locked_layers."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. On the free plans BTC answers in full and any other coin as a headline."
- Changed
market_history1 field changed- changed
Input schema / properties / days / descriptionPrevious value: -"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 30 keyless and 400 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."New value: +"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 1 on the free plans and 400 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."
- Changed
market_snapshot1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs only; a paid plan reaches every streamed pair. A pair this server does not stream comes back covered:false, and no plan adds it."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. On the free plans BTC answers in full and any other coin as a headline; a paid plan reaches every streamed pair. A pair this server does not stream comes back covered:false, and no plan adds it."
- Changed
oi_funding_history1 field changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How many hours back. Defaults to 24; keyless ceiling 24, then the plan's flow window. Asking for more returns the cap, and the payload says so in `capped`."New value: +"How many hours back. Defaults to 24; the ceiling on the free plans is 24, then the plan's history window. Asking for more returns the cap, and the payload says so in `capped`."
- Changed
orderbook1 field changed- changed
Input schema / properties / levels / descriptionPrevious value: -"Price levels per side. Defaults to 10; the ceiling is 5 keyless, 10 on Starter, 25 on Pro (hard)."New value: +"Price levels per side. Defaults to 10; the ceiling is 5 on the free plans, 10 on Starter, 25 on Pro (hard)."
- Changed
price_candles2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"How many bars, newest-ending. Capped at 168 keyless and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"How many bars, newest-ending. Capped at 24 on the free plans and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`." - changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs only; a paid plan reaches every streamed pair. A pair this server does not stream comes back covered:false."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. On the free plans BTC answers in full and any other coin as a headline; a paid plan reaches every streamed pair. A pair this server does not stream comes back covered:false."
- Changed
signal_outcomes2 fields changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How far back to look, in hours. Defaults to 48. Capped at 168 keyless and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window."New value: +"How far back to look, in hours. Defaults to 48. Capped at 168 on the free plans and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 on the free plans and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
trade_context1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Any streamed pair answers keyless; off the free pairs a keyless reply is the lite shape and names what it withheld in locked_layers."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. On the free plans BTC answers in full and any other coin as a headline."
- Changed
whale_flow1 field changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless, 336 on Starter and 720 on Pro. Asking for more returns the cap, and the payload says so in `capped`."New value: +"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 24 on the free plans, 336 on Starter and 720 on Pro. Asking for more returns the cap, and the payload says so in `capped`."
- Changed
whale_tape2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 on the free plans and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`." - changed
Input schema / properties / min_usd / descriptionPrevious value: -"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. Keyless calls hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist."New value: +"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. The free plans hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist."
- Changed
whale_trades2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 on the free plans and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`." - changed
Input schema / properties / min_usd / descriptionPrevious value: -"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. Keyless calls hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist."New value: +"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. The free plans hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist."
1 tool update
- Changed
liq_zones2 fields changed- added
Output schema / properties / retry_after_secondsAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How long to wait before asking again when warming is true." +} - added
Output schema / properties / warmingAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the projection is not built yet for this pair. Asking started it. Not a wall, and not a claim that the pair has no liquidation levels." +}
25 tool updates
- Added
big_catch - Changed
coin_liquidations1 field changed- added
Input schema / properties / since_msAdded value: +{ + "description": "Polling cursor: only rows newer than this Unix-ms timestamp, applied before the row cap. Pass back the next_since_ms from the previous answer so a timer never re-reads the same rows.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Added
coin_search - Added
dex_board - Added
hl_moves - Changed
hl_traders1 field changed- changed
Output schema / properties / reconciliation / descriptionPrevious value: -"For wallets also on hl:proven, both numbers side by side with comparable:false. NOT like-for-like: a realized-closes figure over this window vs the venue leaderboard figure."New value: +"For wallets also on the proven-trader board, both numbers side by side with comparable:false. NOT like-for-like: a realized-closes figure over this window vs the venue leaderboard figure."
- Changed
hl_whales1 field changed- added
Input schema / properties / since_msAdded value: +{ + "description": "Polling cursor: only rows newer than this Unix-ms timestamp, applied before the row cap. Pass back the next_since_ms from the previous answer so a timer never re-reads the same rows.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Added
liq_heat - Changed
liquidations1 field changed- added
Input schema / properties / since_msAdded value: +{ + "description": "Polling cursor: only rows newer than this Unix-ms timestamp, applied before the row cap. Pass back the next_since_ms from the previous answer so a timer never re-reads the same rows.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Changed
my_access1 field changed- changed
Output schema / properties / tier / descriptionPrevious value: -"Which of four states this connection is in: keyless, signed_in_free, coinlobster_pro or developer_plan."New value: +"Which state this connection is in: keyless, signed_in_free, or the plan key (starter, pro, alpha, scale)."
- Added
my_alerts - Added
oi_funding_history - Changed
onchain_whales1 field changed- added
Input schema / properties / since_msAdded value: +{ + "description": "Polling cursor: only rows newer than this Unix-ms timestamp, applied before the row cap. Pass back the next_since_ms from the previous answer so a timer never re-reads the same rows.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Added
orderbook - Added
proven_traders - Added
signal_record - Added
situations - Added
watch_create - Added
watch_delete - Added
watch_list - Added
watchlist_brief - Changed
whale_activity1 field changed- added
Input schema / properties / coinsAdded 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." +}
- Changed
whale_flow3 fields changed- added
Input schema / properties / coinsAdded 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." +} - added
Input schema / properties / detailAdded value: +{ + "description": "Extra per-hour detail: venues adds the per-venue dollar split, wallets adds the wallets behind each hour, all adds both. Off by default (a week of wallet lists is large). Pro and up; below that the payload names the plan.", + "enum": [ + "none", + "venues", + "wallets", + "all" + ], + "type": "string" +} - changed
Input schema / properties / hours / descriptionPrevious value: -"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless and 720 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`."New value: +"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless, 336 on Starter and 720 on Pro. Asking for more returns the cap, and the payload says so in `capped`."
- Changed
whale_profile1 field changed- added
Input schema / properties / coinsAdded 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." +}
- Added
whale_sectors
22 tool updates
- Added
coin_liquidations - Changed
flag_outcomes2 fields changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How far back to look, in hours. Defaults to 48. Capped at 168 keyless and 720 on a developer plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window."New value: +"How far back to look, in hours. Defaults to 48. Capped at 168 keyless and 720 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
hl_board1 field changed- changed
Output schema / properties / withheld / descriptionPrevious value: -"How many rows a keyless connection did not receive. Zero on a developer plan."New value: +"How many rows a keyless connection did not receive. Zero on a paid plan."
- Changed
hl_traders1 field changed- changed
Output schema / properties / withheld / descriptionPrevious value: -"How many rows a keyless connection did not receive. Zero on a developer plan."New value: +"How many rows a keyless connection did not receive. Zero on a paid plan."
- Changed
hl_wallet1 field changed- changed
Output schema / properties / locked_layers / descriptionPrevious value: -"Keyless only: which computed blocks a developer plan adds."New value: +"Keyless only: which computed blocks a paid plan adds."
- Changed
liq_zones2 fields changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs and get the projected levels without the cascade chains; a developer plan reaches any streamed pair with the full snapshot."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs and get the projected levels without the cascade chains; a paid plan reaches any streamed pair with the full snapshot." - changed
Output schema / properties / projection / descriptionPrevious value: -"The projected levels: where forced closes would sit under the modeled leverage assumptions, plus the cascade chains on a developer plan. Modeled levels, NOT trades that happened."New value: +"The projected levels: where forced closes would sit under the modeled leverage assumptions, plus the cascade chains on a paid plan. Modeled levels, NOT trades that happened."
- Changed
liquidations1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 1000 on a developer plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."New value: +"Max rows returned. Capped at 25 keyless and 1000 on a paid plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."
- Added
market_brief - Added
market_changes - Changed
market_history1 field changed- changed
Input schema / properties / days / descriptionPrevious value: -"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 30 keyless and 400 on a developer plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."New value: +"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 30 keyless and 400 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current."
- Added
market_movers - Changed
market_snapshot1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs only; a developer plan reaches every streamed pair. A pair this server does not stream comes back covered:false, and no plan adds it."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs only; a paid plan reaches every streamed pair. A pair this server does not stream comes back covered:false, and no plan adds it."
- Changed
my_access3 fields changed- changed
Output schema / properties / caps / descriptionPrevious value: -"The row cap and time window every capped tool applies right now, each with the free value and the developer-plan value beside it."New value: +"The row cap and time window every capped tool applies right now, each with the free value and the paid-plan value beside it." - changed
Output schema / properties / free_pairs / descriptionPrevious value: -"The pairs this connection can read. A list when keyless, the words every streamed pair on a developer plan, or a short sentence when the market lane could not be read."New value: +"The pairs this connection can read. A list when keyless, the words every streamed pair on a paid plan, or a short sentence when the market lane could not be read." - changed
Output schema / properties / locked_here / descriptionPrevious value: -"What this connection cannot reach right now. Empty on a developer plan."New value: +"What this connection cannot reach right now. Empty on a paid plan."
- Changed
options2 fields changed- added
Input schema / properties / pairAdded value: +{ + "description": "Alias for coin.", + "type": "string" +} - changed
Output schema / properties / recentLargeTrades / descriptionPrevious value: -"Large option buys and sells above a size floor, newest first. Deeper on a developer plan."New value: +"Large option buys and sells above a size floor, newest first. Deeper on a paid plan."
- Added
price_candles - Added
signal_outcomes - Changed
squeeze_score1 field changed- changed
Input schema / properties / pair / descriptionPrevious value: -"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. A developer plan is needed for any pair here: without one the call is refused before the pair is even read."New value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. A paid plan is needed for any pair here: without one the call is refused before the pair is even read."
- Changed
trade_context3 fields changed- changed
Output schema / properties / crowding / descriptionPrevious value: -"The crowding read and the overexposed side. Null without a developer plan."New value: +"The crowding read and the overexposed side. Null without a paid plan." - added
Output schema / properties / price_readsAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Plain descriptions of price against its own recent hours, computed from hourly candles: vs_recent_average (above or below its 50-hour and 200-hour average, and which way it is drifting), recent_move (how stretched the latest move is, plus the change against 7 days ago) and choppiness (calm, normal or choppy). Each block is available:true with values or available:false with a plain reason; a leg with too few recorded hours is null with a note, never a made-up neutral. Descriptive, not a trade signal." +} - changed
Output schema / properties / whale_flow / descriptionPrevious value: -"Whale direction against the same coin logged baseline: the multiple, days logged, record and N-day-high flags, and buy share now versus 7 days. Dollar sizes are added on a developer plan."New value: +"Whale direction against the same coin logged baseline: the multiple, days logged, record and N-day-high flags, and buy share now versus 7 days. Dollar sizes are added on a paid plan."
- Added
whale_activity - Changed
whale_flow1 field changed- changed
Input schema / properties / hours / descriptionPrevious value: -"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless and 720 on a developer plan. Asking for more returns the cap, and the payload says so in `capped`."New value: +"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless and 720 on a paid plan. Asking for more returns the cap, and the payload says so in `capped`."
- Changed
whale_tape1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
whale_trades1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a paid plan; asking for more returns the cap, and the payload says so in `capped`."
1 tool update
- Added
options
6 tool updates
- Changed
market_overview1 field changed- added
Output schema / properties / summaryAdded 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." +}
- Changed
smart_money1 field changed- added
Output schema / properties / summaryAdded 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." +}
- Changed
whale_context1 field changed- added
Output schema / properties / summaryAdded 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." +}
- Changed
whale_flow2 fields changed- changed
Output schema / properties / rows / descriptionPrevious value: -"One row per recorded hour: the hour stamp plus buy and sell dollars, split CEX and on-chain."New value: +"One row per recorded hour: the hour stamp, buy and sell dollars, and the CEX / on-chain / Hyperliquid split. The per-hour wallet list and per-exchange table are not carried here (see whale_profile and hl_whales for those); this tool is the hourly timeline." - added
Output schema / properties / summaryAdded 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." +}
- Changed
whale_profile1 field changed- added
Output schema / properties / summaryAdded 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." +}
- Changed
whale_radar1 field changed- added
Output schema / properties / summaryAdded 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." +}
5 tool updates
- Changed
flag_outcomes1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 50 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
liquidations1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 50 keyless and 1000 on a developer plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."New value: +"Max rows returned. Capped at 25 keyless and 1000 on a developer plan; asking for more returns the cap, and the payload says so in `capped`. count and the *_usd totals always cover the whole window regardless."
- Added
market_digest - Changed
whale_tape1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 50 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."
- Changed
whale_trades1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows returned. Capped at 50 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."New value: +"Max rows returned. Capped at 25 keyless and 500 on a developer plan; asking for more returns the cap, and the payload says so in `capped`."
1 tool update
- Added
hl_traders
28 tool updates
- Changed
crypto_news2 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Coin symbol, for example BTC. A pair like ETH/USD works too, the quote leg is dropped. Defaults to BTC. News coverage is not every coin: where nothing was recorded the reply carries covered:false and a null sentiment_score, which is absence and not a neutral reading." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin the headlines and score are about." + }, + "covered": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when nothing was recorded for this coin, which is why sentiment_score is null. Not a neutral reading." + }, + "headlines": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Up to 20 recent headlines, each with title, source, published time and link." + }, + "macro": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The same three fields for the market as a whole: sentiment, sentiment_score and summary." + }, + "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." + }, + "realtime": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the headlines are live. Keyless connections get the delayed set." + }, + "sentiment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The wording that goes with the score, or unknown." + }, + "sentiment_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Minus 100 to plus 100. Null means nothing was measured, which is not the same as zero." + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pre-written summary for this coin, or null." + } + }, + "type": "object" +}
- Changed
defi_liquidations3 fields changed- added
Input schema / properties / chain / descriptionAdded value: +"Restrict to one chain: ethereum, base, arbitrum. Anything else is refused by name rather than answered as nothing happening there. Omit for all of them." - added
Input schema / properties / limit / descriptionAdded value: +"Max rows returned. Defaults to 50, hard ceiling 200 for everyone and no plan raises it. count and total_usd cover exactly the rows returned, and window states the period those rows span, so neither is a fixed 24h figure." - changed
Output 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." + }, + "chains_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The chains this lane indexes." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "duplicates_dropped": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many repeat rows for the same event were removed before counting, so the dollars are not doubled." + }, + "liquidations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The events, each naming BOTH wallets: the one liquidated and the one that repaid the debt and took the collateral." + }, + "matched": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows matched the chain filter before the row cap." + }, + "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." + }, + "protocols_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The lending protocols behind these rows." + }, + "total_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Dollars across exactly the rows returned. A page sum, not a fixed 24h total: the window field says what period those rows span." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + }, + "unknown_chain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Set when a chain was named that this lane does not index. Nothing was searched, so this is not no liquidations there." + }, + "window": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The period the returned rows actually span: from, to and hours." + } + }, + "type": "object" +}
- Changed
defi_summary1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "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." + }, + "chains": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "One row per chain: the chain, tokens tracked, 24h volume and total value locked." + }, + "coverage_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "What the numbers do and do not cover." + }, + "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." + }, + "tokens_withheld": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Keyless only: how many tokens were cut from top_tokens." + }, + "top_tokens": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The highest-volume tokens: chain, symbol, name, address, price, 24h change, volume and value locked. Shortened on a keyless connection." + }, + "totals": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Across all chains: 24h volume, total value locked, how many chains and how many tokens are tracked." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the on-chain token snapshot was published." + }, + "whale_activity": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Large swaps in the window: how many, buy and sell dollars, net, the largest, unique and repeat wallets, and the split per exchange and per chain. A keyless connection gets the counts with magnitudes_withheld set instead of the dollars." + } + }, + "type": "object" +}
- Changed
dex_wallet3 fields changed- added
Input schema / properties / address / descriptionAdded value: +"Ethereum, Base or Arbitrum address, 0x followed by 40 hex characters. Required. This is the on-chain wallet, not the Hyperliquid account that can sit at the same 0x string: use hl_wallet for that one. An address outside the followed set answers tracked:false, which is a coverage fact and not a wallet doing nothing." - added
Input schema / properties / limit / descriptionAdded value: +"Max recorded swaps returned for this address. Defaults to 25, hard ceiling 100 for everyone and no plan raises it." - changed
Output 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." + }, + "address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The address, normalised." + }, + "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." + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "invalid_address when the address is not 0x plus 40 hex characters. Nothing was looked up." + }, + "events": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Its recorded swaps, newest first." + }, + "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." + }, + "profile": { + "description": "What this address has been doing: net flow per token and its activity pattern." + }, + "tracked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when this address is outside the followed set. A coverage fact, not a wallet doing nothing." + }, + "venue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Always on-chain. This is NOT the Hyperliquid account that can sit at the same 0x string." + } + }, + "type": "object" +}
- Changed
flag_outcomes4 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Filter to one coin, for example BTC. A pair like ETH/USD works too, the quote leg is dropped. One symbol, not a list. Omit for every coin." - added
Input schema / properties / hours / descriptionAdded value: +"How far back to look, in hours. Defaults to 48. Capped at 168 keyless and 720 on a developer plan; asking for more returns the cap, and the payload says so in `capped`. The all_time block is unaffected by this window." - added
Input schema / properties / type / descriptionAdded value: +"Filter to one signal type. One of: whale-spike, funding-extreme, squeeze-flip, liq-cascade, flow-divergence, major-pctile, major-block, deriv-record. The underscore spellings used by alert rules (for example funding_extreme, or spike for whale-spike) are accepted too. Anything else is refused by name rather than answered as every signal. Omit for all types." - changed
Output 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." + }, + "aggregates": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "byType: how many fired per signal type inside the window." + }, + "all_time": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Permanent counters from the archive, independent of the window asked for: fired, scored_h24, since, through and by_type." + }, + "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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin filter applied, or null for all coins." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "depth_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How far back the data behind this answer reaches." + }, + "hours": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The window actually read, in hours." + }, + "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." + }, + "signals": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The signals that fired in the window, each with its type, coin, fire time, price at fire time and later price outcomes where they have been scored." + }, + "total_in_window": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many signals fired in the whole window, before the row cap." + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The signal type filter applied, or null for all types." + }, + "unknown_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Set when the type asked for is not one this record keeps. Nothing was filtered and nothing was searched." + }, + "valid_types": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The signal types that do exist, returned alongside unknown_type." + } + }, + "type": "object" +}
- Changed
funding_matrix2 fields changed- added
Input schema / properties / pair / descriptionAdded value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Every streamed pair answers keyless. Rates come back per exchange at that exchange's own interval_h, so magnitudes are not comparable across rows without normalising first." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "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." + }, + "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." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair these rates belong to." + }, + "per_venue": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "One row per exchange: the exchange name, its current funding rate, its predicted next rate where it publishes one, the next payout time, and interval_h. Rates are per that exchange own interval, so magnitudes are not comparable across rows until they are normalised." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When these rates were read." + } + }, + "type": "object" +}
- Changed
hl_board1 field changed- changed
Output 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." + }, + "crowding": { + "description": "Per-coin crowding across the tracked accounts." + }, + "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." + }, + "rows": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The accounts: wallet, equity, dollars open, leverage and which way they lean. Shortened on a keyless connection." + }, + "tracked": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many accounts are tracked." + }, + "tracked_notional_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total dollar value of everything those accounts hold open." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the board was published." + }, + "venue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Always Hyperliquid." + }, + "with_open_positions": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many of them currently hold something." + }, + "withheld": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows a keyless connection did not receive. Zero on a developer plan." + } + }, + "type": "object" +}
- Changed
hl_wallet3 fields changed- added
Input schema / properties / address / descriptionAdded value: +"Hyperliquid account address, 0x followed by 40 hex characters. Required. Every hl_whales row carries the wallet that filled it, so it can be passed straight in. An address outside the tracked set answers tracked:false, which is a coverage fact and not an account holding nothing." - added
Input schema / properties / limit / descriptionAdded value: +"Max recent fills returned for this account. Defaults to 50, hard ceiling 200 for everyone and no plan raises it. Keyless calls receive 3 of them whatever is asked for, and the live positions come back either way." - changed
Output 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." + }, + "address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The account address, normalised." + }, + "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." + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "invalid_address when the address is not 0x plus 40 hex characters. Nothing was looked up." + }, + "locked_layers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Keyless only: which computed blocks a developer plan adds." + }, + "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." + }, + "prints": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Recent whale-sized fills for this account. Keyless connections receive 3 of them whatever was asked for." + }, + "profile": { + "description": "The live account: what it holds, equity, dollars open, leverage, which way it leans and unrealized profit. Public on Hyperliquid, so it stays keyless." + }, + "tracked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when this account is outside the tracked set. A coverage fact, not an account holding nothing." + } + }, + "type": "object" +}
- Changed
hl_whales3 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Filter to one coin, for example PEPE. Matched against the parsed symbol as well as the raw market name, so the 1000-unit markets (kPEPE, kSHIB, kBONK) are found under PEPE, SHIB and BONK. One symbol, not a list. Omit for every coin." - added
Input schema / properties / limit / descriptionAdded value: +"Max fills returned. Defaults to 50, hard ceiling 200 for everyone and no plan raises it." - changed
Output 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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin filter applied, or null for every coin." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "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." + }, + "trades": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The fills, each carrying the wallet on both sides, the coin, the direction, the size and the time. Pass a wallet to hl_wallet for that account live positions." + }, + "venue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Always Hyperliquid." + } + }, + "type": "object" +}
- Changed
liq_zones2 fields changed- added
Input schema / properties / pair / descriptionAdded value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs and get the projected levels without the cascade chains; a developer plan reaches any streamed pair with the full snapshot." - changed
Output 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." + }, + "covered": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when this server does not stream the pair at all. No plan adds it." + }, + "free_pairs": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The pairs a keyless connection can read, returned when the pair asked for is not one of them." + }, + "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." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair this projection covers." + }, + "projection": { + "description": "The projected levels: where forced closes would sit under the modeled leverage assumptions, plus the cascade chains on a developer plan. Modeled levels, NOT trades that happened." + } + }, + "type": "object" +}
- Changed
liquidations1 field changed- changed
Output 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." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many events fired in the whole window, not how many rows came back." + }, + "history_included": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the recorded series was merged in, so a restart has not erased earlier events." + }, + "liquidations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The events themselves, newest first: price, size in base and quote, side (long_liquidated or short_liquidated), exchange and time. A sample of the window when truncated is true." + }, + "long_liquidations": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "COUNT of longs force-closed. For dollars read long_usd." + }, + "long_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Dollars of longs force-closed across the window." + }, + "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." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair these events belong to." + }, + "requested_hours": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The period asked for, so a page can be told apart from a period." + }, + "rows_returned": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many event rows are actually in this reply." + }, + "rows_span_minutes": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How far back the returned rows themselves reach." + }, + "short_liquidations": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "COUNT of shorts force-closed. For dollars read short_usd." + }, + "short_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Dollars of shorts force-closed across the window." + }, + "sources": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "How the events split between the streamed exchanges and Hyperliquid, and whether the Hyperliquid part is a sample." + }, + "total_in_window": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many events the window holds in total." + }, + "total_volume_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Dollars forced out across the whole window." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + }, + "window_hours": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The period the totals cover, in hours." + }, + "window_minutes": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The same period in minutes." + } + }, + "type": "object" +}
- Changed
market_extremes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "as_of_day": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The day the rows actually describe. This is the honest date, and it is usually not today." + }, + "computed_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the daily scan ran." + }, + "coverage_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Present when stale is false: why these extremes are from as_of_day rather than today." + }, + "data_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many days back as_of_day sits." + }, + "expected_lag_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How far behind live this archive is meant to run." + }, + "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." + }, + "records": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Pairs sitting at a record high or low for funding, open interest or forced closes, each against the same pair recorded days, with a ready phrase and next-day outcome stats where enough past cases exist." + }, + "stale": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True only when the rows are further back than the settle horizon explains." + }, + "stale_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Present when stale is true: how far past the horizon the scan has fallen." + }, + "top5": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The same, for pairs in their own top or bottom 5 percent rather than at a record." + } + }, + "type": "object" +}
- Changed
market_history4 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Read the daily whale buy and sell flow lane for one coin instead, for example BTC, recorded since 2026-06-18. Passing coin selects that lane and pair is then ignored. This is the one tool here where coin and pair are different questions, not two spellings of one." - added
Input schema / properties / days / descriptionAdded value: +"How many recorded days to return. Defaults to the whole window, which is also the ceiling: 30 keyless and 400 on a developer plan. Asking for more returns the cap, and the payload says so in `capped`. Both lanes settle several days behind live by design, so read as_of and data_age_days before calling any of it current." - added
Input schema / properties / pair / descriptionAdded value: +"Read the daily market lane for one pair: funding, open interest, price and liquidation totals, recorded since 2026-03-18. For example ETH/USD; a bare symbol like ETH is read as ETH/USD, and BTC/USD is the default. Ignored when coin is passed, because coin selects the other lane." - changed
Output 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." + }, + "as_of": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The newest day in this reply. Not today: both lanes settle several days behind live by design." + }, + "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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin, when the daily whale-flow lane was read." + }, + "coverage_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Present when stale is false: why the newest day is not today, and that these days must not be described as current." + }, + "data_age_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many days back as_of sits." + }, + "days_returned": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many recorded days came back." + }, + "depth_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How far back the data behind this answer reaches." + }, + "expected_lag_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How far behind live this lane is meant to run, so a healthy lag can be told from a stopped one." + }, + "funding": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Daily funding readings, oldest first, each carrying its own coverage evidence." + }, + "hour_of_day_utc": { + "description": "What a typical hour looks like for this coin, as medians per UTC hour. Absent under 14 recorded days." + }, + "liquidations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Daily forced-close totals." + }, + "open_interest": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Daily open interest readings." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair, when the daily market lane was read." + }, + "price": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Daily price readings." + }, + "stale": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True only when the lane is further back than its own settle horizon explains." + }, + "stale_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Present when stale is true: how far past the horizon it has fallen." + }, + "whale_flow_daily": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Daily whale buy and sell dollars, when the coin lane was read." + } + }, + "type": "object" +}
- Changed
market_liquidations1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "as_of": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the combined snapshot was taken, as an ISO stamp." + }, + "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." + }, + "coverage": { + "description": "Which feeds fed this snapshot." + }, + "lending_liquidations": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "A SEPARATE 24h lane: on-chain debts repaid and collateral seized. count, total_usd, protocols, chains and recent rows. Never add these to the leveraged numbers." + }, + "named_liquidations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Hyperliquid closures with the wallet named, which no other market publishes." + }, + "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." + }, + "perp_liquidations": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The 24h forced-close picture on leveraged markets: count, total_usd, the long and short split in both dollars and counts, hour by hour, the peak hour, the ranked coins, the biggest single event, and which exchanges are behind the totals. Long dollars are sell-side pressure." + }, + "stale": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the snapshot is older than it should be." + } + }, + "type": "object" +}
- Changed
market_overview3 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Return this coin's row on its own, for example BTC, instead of the whole board. Only coins in the streamed overview (roughly the top 300 by volume) are there; anything else comes back available:false rather than as an empty board." - added
Input schema / properties / limit / descriptionAdded value: +"Max board rows returned. Defaults to 20, hard ceiling 50 for everyone and no plan raises it. total_rows reports the size of the whole board so a shortened list is visible. Ignored when coin is passed, since that returns a single row." - changed
Output 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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The symbol asked for, when a single row was requested." + }, + "coverage_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The same in one sentence, present only when something is missing." + }, + "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." + }, + "regime": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The Bitcoin risk state: state, btc_price and breadth_pct. A null state means the field is absent, not neutral." + }, + "returned": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows are in this reply." + }, + "row": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "That one symbol row: base, price_usd, chg_24h_pct, vol_usd_24h and oi_usd." + }, + "rows": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The board, ranked by volume: base symbol, price, 24h change, 24h volume and open interest." + }, + "total_rows": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows the whole board holds." + }, + "totals": { + "description": "Market-wide totals: volume, open interest, forced closes and market cap." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + }, + "unavailable_fields": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Fields this snapshot is not carrying. They are null because the field is absent, NOT because the value is zero." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the snapshot was published." + }, + "whale_net_usd_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Buys minus sells across the board over 24h. Null means the field is absent from this snapshot, not that flow was balanced." + } + }, + "type": "object" +}
- Changed
market_screener5 fields changed- added
Input schema / properties / compact / descriptionAdded value: +"Return one plain-text line per matching pair rather than the JSON rows. Defaults to false." - added
Input schema / properties / limit / descriptionAdded value: +"Max rows returned. Defaults to 20, hard ceiling 50 for everyone and no plan raises it. `matched` counts every pair that passed the filters regardless, and truncated says whether the rows are a shortened list." - added
Input schema / properties / unusual_only / descriptionAdded value: +"Keep only coins the radar currently marks unusual in its 1h, 4h or 24h window. Defaults to false." - added
Input schema / properties / whale_mult_min / descriptionAdded value: +"Keep only coins whose 24h whale flow is at least this multiple of their own logged daily average, for example 3 for 3x and up. Coins with no logged multiple are dropped rather than treated as zero. Omit for no flow filter." - changed
Output 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." + }, + "compact": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Present and true only on a compact:true call, where the whole answer is the text in `line`." + }, + "criteria": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The filters as they were actually applied, so a misread argument is visible." + }, + "line": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One plain-text line per matching pair, returned only when compact:true was asked for." + }, + "matched": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many pairs passed every filter, counted before the row cap. Null when nothing was screened." + }, + "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." + }, + "returned": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows are in this reply." + }, + "rows": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "One row per matching pair: pair, coin, price, 24h change, the funding and open interest bands against the same pair recorded days with the day counts behind them, the whale multiple, and whether the ranking currently calls it unusual." + }, + "scanned_pairs": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many pairs were examined." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + }, + "unknown_band": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Set when a band was named that this screen does not know. Nothing was screened, so this is not no matches." + }, + "valid_bands": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The bands that do exist, returned alongside unknown_band." + } + }, + "type": "object" +}
- Changed
market_snapshot2 fields changed- added
Input schema / properties / pair / descriptionAdded value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Keyless calls reach the free pairs only; a developer plan reaches every streamed pair. A pair this server does not stream comes back covered:false, and no plan adds it." - changed
Output 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." + }, + "covered": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when this server does not stream the pair at all. No plan adds it." + }, + "exchanges_streaming": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many exchanges are currently streaming this pair." + }, + "free_pairs": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The pairs a keyless connection can read, returned when the pair asked for is not one of them." + }, + "funding": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "average_rate across the exchanges that publish one, and exchange_count behind that average." + }, + "liquidations_recent": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Recent forced closes for this pair: count, total_usd, the long and short split in counts and dollars, and window_minutes, without which a count cannot be read. available:false here means no reading, not zero." + }, + "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." + }, + "open_interest_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Open interest in dollars, summed across the exchanges that publish it." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair this snapshot describes." + }, + "price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Last traded price." + }, + "stats_24h": { + "description": "The 24h statistics block: open, high, low, close, change and volume." + }, + "vs_history": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Where funding and open interest sit against the same pair recorded days: a phrase, a band and how many days back the comparison reaches. Null under 30 recorded days." + } + }, + "type": "object" +}
- Changed
my_access1 field changed- changed
Output 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." + }, + "authenticated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when any valid sign-in or key was presented." + }, + "caps": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The row cap and time window every capped tool applies right now, each with the free value and the developer-plan value beside it." + }, + "credits": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The balance: credits_remaining, plan, plan_active, credits_per_call, calls_left_estimate and where to top up. A null credits_remaining always carries a note saying WHY, because could not read and spent to zero send a user to two different places." + }, + "free_pairs": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ] + }, + { + "type": "null" + } + ], + "description": "The pairs this connection can read. A list when keyless, the words every streamed pair on a developer plan, or a short sentence when the market lane could not be read." + }, + "how_to_lift": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "What lifts the caps, where to get it, and (as not_this) the two things people buy by mistake that change nothing here." + }, + "locked_here": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "What this connection cannot reach right now. Empty on a developer plan." + }, + "metered": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Whether calls cost credits on this connection, and how much." + }, + "on_free_plan": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when this connection reads free-shaped data. The single fact most users are asking for." + }, + "plain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One sentence describing this tier in the user own words rather than ours." + }, + "tier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which of four states this connection is in: keyless, signed_in_free, coinlobster_pro or developer_plan." + } + }, + "type": "object" +}
- Changed
onchain_whales5 fields changed- added
Input schema / properties / chain / descriptionAdded value: +"Restrict to one chain: ethereum, base, arbitrum. Anything else is refused by name rather than answered as nothing happening there. Omit for all of them." - added
Input schema / properties / coin / descriptionAdded value: +"Filter to one token symbol, for example PEPE. A pair like ETH/USD works too, the quote leg is dropped. One symbol, not a list. Omit for every token." - added
Input schema / properties / limit / descriptionAdded value: +"Max swaps returned. Defaults to 50, hard ceiling 200 for everyone and no plan raises it." - added
Input schema / properties / min_usd / descriptionAdded value: +"Smallest swap to return, in US dollars, for example 500000 for $500K and up. Omit for everything above the size floor this feed already records, which is not every swap on chain." - changed
Output 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." + }, + "chains_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The chains this feed indexes." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "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." + }, + "swaps": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The swaps, each carrying the wallet that signed it, the exchange it went through, the token and the dollar size." + }, + "unknown_chain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Set when a chain was named that this feed does not index. Nothing was searched, so this is not no swaps there." + } + }, + "type": "object" +}
- Changed
smart_money2 fields changed- added
Input schema / properties / window / descriptionAdded value: +"Which window flow_traded covers: 1h, 4h or 24h. Defaults to 24h. It does not move positions_held, which is always what the cohort holds right now, and windows_available in the reply lists what the roll-up actually published." - changed
Output 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." + }, + "cohort": { + "description": "Who is in the cohort and how it was screened, including rosterAgeHours, the age of the membership screen." + }, + "coverage": { + "description": "Which wallets could be read, and which are reported as unprofiled rather than counted as holding nothing." + }, + "flow_traded": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Dollars EXECUTED inside the window per coin, same row shape. A different unit from positions_held and never added to it." + }, + "flow_withheld": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many traded rows were not returned at this access level." + }, + "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." + }, + "positions_held": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Dollars currently OPEN per coin, with the wallet count behind each row and a thin flag under 3 wallets." + }, + "positions_withheld": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many holding rows were not returned at this access level." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the roll-up was published. Separate from how old the membership screen is." + }, + "venue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which market the cohort trades on." + }, + "window": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which window flow_traded covers: 1h, 4h or 24h." + }, + "windows_available": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The windows the roll-up actually published." + } + }, + "type": "object" +}
- Changed
squeeze_score2 fields changed- added
Input schema / properties / pair / descriptionAdded value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. A developer plan is needed for any pair here: without one the call is refused before the pair is even read." - changed
Output 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." + }, + "by_exchange": { + "description": "The same read broken out per exchange." + }, + "crowded_side": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which side is overexposed, long or short." + }, + "long_short_ratio": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Long accounts against short accounts." + }, + "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." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair this crowding read describes." + }, + "squeeze_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Crowding from 0 to 100. Descriptive, not a trade signal." + }, + "taker_buy_sell_ratio": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Aggressive buying against aggressive selling." + }, + "updated_at": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the read was computed." + } + }, + "type": "object" +}
- Changed
trade_context4 fields changed- added
Input schema / properties / compact / descriptionAdded value: +"Return one line of plain text rather than the JSON blob, about 30 tokens instead of 800. Same facts, same windows, same dates, no structured fields to read. Defaults to false." - added
Input schema / properties / pair / descriptionAdded value: +"Trading pair, for example ETH/USD. A bare symbol like ETH is read as ETH/USD. Defaults to BTC/USD when omitted. Any streamed pair answers keyless; off the free pairs a keyless reply is the lite shape and names what it withheld in locked_layers." - added
Input schema / properties / position_usd / descriptionAdded value: +"Position size in US dollars, for example 25000. Above zero only. When given, carry_cost adds per_day_usd_at_current_rate, the dollars a day the current funding average across exchanges works out to at that size. Arithmetic on the rate as it stands now, not a projection of future rates. Omit and carry_cost still carries the percentage and APR figures." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "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." + }, + "carry_cost": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Arithmetic on the current funding average: percent per day, the same as an annual rate, which side pays, and dollars a day when position_usd was passed. Not a projection of future rates." + }, + "compact": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Present and true only on a compact:true call, where the whole answer is the single line in `line`." + }, + "crowding": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The crowding read and the overexposed side. Null without a developer plan." + }, + "depth": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which shape came back: lite, free-pair or keyed." + }, + "funding": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "average_rate across exchanges, how many exchanges are in it, the interval in hours, and minutes to the next funding time." + }, + "line": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The composed one-line answer, returned only when compact:true was asked for. The same facts, the same windows and the same dates as the full shape." + }, + "liquidations_recent": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Forced closes visible right now: count, long_usd, short_usd and window_minutes. A timing series, market-wide totals run higher." + }, + "locked_layers": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Named rather than silently missing: which blocks this connection did not receive." + }, + "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." + }, + "open_interest_usd": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Open interest in dollars across the exchanges that publish it." + }, + "pair": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The pair this context describes." + }, + "price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Last traded price." + }, + "stats_24h": { + "description": "The 24h statistics block. Absent on the lite shape, where locked_layers names it." + }, + "vs_own_history": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Where funding and open interest sit against the same pair recorded days: phrase, band, day count, the date the reading is from, and how past cases resolved." + }, + "whale_flow": { + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whale direction against the same coin logged baseline: the multiple, days logged, record and N-day-high flags, and buy share now versus 7 days. Dollar sizes are added on a developer plan." + } + }, + "type": "object" +}
- Changed
whale_context2 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Coin symbol, for example BTC, or a comma-separated list of up to 15 for a portfolio in one call. A single coin returns a flat object, a list returns {coins:[...]} with an available:false entry for any member with no logged history. Omit for the 15 coins sitting at the highest multiple right now." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "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." + }, + "breadth": { + "description": "How wide the buying or selling is across the coins with logged history." + }, + "buy_share_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Share of the last 24h dollars that were buys, 0 to 1." + }, + "buy_share_7d": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Share of the last 7 days dollars that were buys, 0 to 1." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin this row describes, when one coin was asked for." + }, + "coins": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "One row per coin when a comma-separated list was asked for. A member with no logged history comes back as available:false." + }, + "days_logged": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many days wide the baseline window is." + }, + "highest_in_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Highest flow in this many days, or null." + }, + "mult_vs_avg_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many times its own logged daily average the last 24h of flow is." + }, + "net_usd_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Buys minus sells in the last 24h." + }, + "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." + }, + "ranking_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How the list is sorted, and why a thin_baseline row can sit near the top without meaning anything." + }, + "record_high_day": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when this is the highest recorded day for the coin." + }, + "since_day": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "The first day this baseline covers." + }, + "thin_baseline": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when about one day of flow sits in the whole window, so the multiple is close to the day count by construction and is not evidence of unusual activity." + }, + "top_by_multiple": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The coins sitting at the highest multiple right now, when no coin was asked for." + }, + "usd_24h": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total whale dollars in the last 24h." + }, + "valid_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many days of the baseline hold usable readings." + } + }, + "type": "object" +}
- Changed
whale_flow3 fields changed- added
Input schema / properties / coin / descriptionAdded 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." - added
Input schema / properties / hours / descriptionAdded value: +"How many hours of hourly buckets to read back. Defaults to the whole window, which is also the ceiling: 168 keyless and 720 on a developer plan. Asking for more returns the cap, and the payload says so in `capped`." - changed
Output 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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin these hours belong to." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many hours carry a recorded reading. Fewer than hours means the rest were never recorded, not that they were quiet." + }, + "depth_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How far back the data behind this answer reaches." + }, + "hours": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many hours back were read." + }, + "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." + }, + "rows": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "One row per recorded hour: the hour stamp plus buy and sell dollars, split CEX and on-chain." + } + }, + "type": "object" +}
- Changed
whale_profile2 fields changed- added
Input schema / properties / coin / descriptionAdded 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." - changed
Output 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" +}
- Changed
whale_radar1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "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." + }, + "blurredMagnitude": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Keyless only: true because dollar sizes on held-back coins are rounded away." + }, + "building": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True while the ranking has not been published yet." + }, + "freeCoins": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Keyless only: the coins whose numbers come through unblurred." + }, + "freshness": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How often the ranking is rebuilt." + }, + "generatedAt": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ], + "description": "When the ranking was computed." + }, + "lockedCount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Keyless only: how many coins were held back." + }, + "lockedUnusualCount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Keyless only: how many of the held-back coins are the unusual ones." + }, + "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." + }, + "windows": { + "description": "The ranked coins per window, keyed 1h, 4h and 24h. Each row names the coin, its dollars in the window and how that compares with the same coin trailing hours." + } + }, + "type": "object" +}
- Changed
whale_tape4 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Filter to one coin, for example BTC. A pair like ETH/USD works too, the quote leg is dropped. One symbol, not a list. Omit for every coin." - added
Input schema / properties / min_usd / descriptionAdded value: +"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. Keyless calls hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist." - added
Input schema / properties / source / descriptionAdded value: +"Which markets to read: cex for the 15 streamed exchanges, dex for on-chain swaps on Ethereum, Base and Arbitrum, all for both merged. Defaults to all." - changed
Output 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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin filter that was applied, or null for every coin." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "covered": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when the coin asked for is not one this feed streams, so nothing was searched. That is different from a quiet market." + }, + "depth_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How far back the data behind this answer reaches." + }, + "matched": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many trades matched the filters before the row cap was applied." + }, + "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." + }, + "scan_capped": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the search hit its own depth ceiling, so older matches may exist that were never looked at." + }, + "scan_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Says the search stopped at its ceiling, so this is not the complete set for the window." + }, + "scanned_rows": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How deep the search went before filtering. Present only when a coin or size filter ran." + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which markets were read: cex, dex or all." + }, + "trades": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The matching trades, newest first. A CEX row carries pair, exchange, price, size and side; an on-chain row carries the token, the wallet and the dollar size. Every row carries source." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + } + }, + "type": "object" +}
- Changed
whale_trades4 fields changed- added
Input schema / properties / coin / descriptionAdded value: +"Filter to one coin, for example BTC. A pair like ETH/USD works too, the quote leg is dropped. One symbol, not a list. Omit for every coin." - added
Input schema / properties / min_usd / descriptionAdded value: +"Smallest trade to return, in US dollars, for example 5000000 for $5M and up. Omit for everything already large enough to count as whale-sized. Keyless calls hold on-chain swaps to $250K and up regardless. A size filter runs after the fetch, so scan_capped in the payload states whether the search reached its own ceiling and older matches may exist." - added
Input schema / properties / source / descriptionAdded value: +"Which markets to read: cex for the 15 streamed exchanges, dex for on-chain swaps on Ethereum, Base and Arbitrum, all for both merged. Defaults to all." - changed
Output 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." + }, + "coin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The coin filter that was applied, or null for every coin." + }, + "count": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many rows this reply carries." + }, + "covered": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "False when the coin asked for is not one this feed streams, so nothing was searched. That is different from a quiet market." + }, + "depth_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How far back the data behind this answer reaches." + }, + "matched": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How many trades matched the filters before the row cap was applied." + }, + "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." + }, + "scan_capped": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when the search hit its own depth ceiling, so older matches may exist that were never looked at." + }, + "scan_note": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Says the search stopped at its ceiling, so this is not the complete set for the window." + }, + "scanned_rows": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "How deep the search went before filtering. Present only when a coin or size filter ran." + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which markets were read: cex, dex or all." + }, + "trades": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The matching trades, newest first. A CEX row carries pair, exchange, price, size and side; an on-chain row carries the token, the wallet and the dollar size. Every row carries source." + }, + "truncated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "True when more rows matched than were returned, so what you have is a page and not the whole set." + } + }, + "type": "object" +}
28 tool updates
- First observed
crypto_news - First observed
defi_liquidations - First observed
defi_summary - First observed
dex_wallet - First observed
flag_outcomes - First observed
funding_matrix - First observed
hl_board - First observed
hl_wallet - First observed
hl_whales - First observed
liq_zones - First observed
liquidations - First observed
market_extremes - First observed
market_history - First observed
market_liquidations - First observed
market_overview - First observed
market_screener - First observed
market_snapshot - First observed
my_access - First observed
onchain_whales - First observed
smart_money - First observed
squeeze_score - First observed
trade_context - First observed
whale_context - First observed
whale_flow - First observed
whale_profile - First observed
whale_radar - First observed
whale_tape - First observed
whale_trades
Related MCP Connectors
Live whale movements, wallet intel and Alpha-bot signals across 17 EVM chains, over MCP.
Crypto fundamentals, sentiment, whale tracking and influencer call accuracy for traders and agents.
AI crypto signals, whale positions, 19 technical indicators, derivatives, screener and backtests
KOL and smart money wallet tracking on 5 chains: live trades, PnL, signals, Jito bundle detection.
Related MCP Servers
AlicenseAqualityBmaintenanceProvides real-time crypto whale trade data and market analysis to AI agents, including unusual flow radar, liquidations, funding rates, and market snapshots across 15 exchanges and on-chain DEXs.1730 npm14MIT- AlicenseNot gradedqualityCmaintenanceDelivers real-time crypto market microstructure, derivatives, order flow CVD/OI regime classification, fear & greed sentiment, and whale tracking context, enabling traders to assess market regimes and complement charting tools.25 npmMIT
- AlicenseAqualityDmaintenanceReal-time radar for Solana memecoins, Pump.fun launches, and KOL trades.84MIT
- AlicenseAqualityBmaintenanceReal-time crypto whale intelligence MCP server with 55 tools across 14 blockchains. Free, no auth required.561MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.