Skip to main content
Glama

bykaranteli-mcp

MCP (Model Context Protocol) server for live crypto derivatives data: funding rates, cross-exchange funding arbitrage, open interest pressure, liquidations, options, ETF flows, Fear & Greed and BTC dominance.

68 read-only and account tools over the public JSON API of bykaranteli.com: the market data tools only read, and the alert and watchlist tools act on your own account through your key (Account tools). Since 2026-09-10 the API asks programs for an account key: a free key comes with any verified account at https://bykaranteli.com/dashboard/api (30 requests a minute and 15,000 a month, public depth), and the Builder, Business and Scale plans raise the rate and the monthly fair use and unlock member depth (LiqMap on seven timeframes, 5-minute series) and a monthly allowance of x402 catalog calls within each plan's history window (Plans and paid depth). Set it as BYKARANTELI_API_KEY. Data covers Binance USDT-M perpetuals; funding arbitrage, liquidations, order book depth, options, positioning and insurance funds add the other venues each board lists on bykaranteli.com/coverage.

Hosted endpoint (no install)

Paste https://mcp.bykaranteli.com as a custom connector in any MCP-capable assistant. The same tools, nothing to install. Every tool call needs your account key (free at https://bykaranteli.com/dashboard/api); connecting and listing the tools work without one. The key travels one of three ways:

  • the request header x-api-key: bk_... (claude.ai custom connectors, Cursor, Claude Code);

  • the request header Authorization: Bearer bk_...;

  • the address https://mcp.bykaranteli.com/?key=bk_... for clients that cannot send headers (ChatGPT). Treat that address like a password and revoke the key if it leaks.

Or sign in with OAuth 2.1 where the client offers it (claude.ai custom connectors: Authentication, Sign in; ChatGPT connectors: OAuth): the client identifies itself with its client metadata document (an https client id the authorization server reads, the way the 2026-07-28 MCP revision prefers) or registers itself (RFC 7591), always with PKCE S256; you approve it once on bykaranteli.com and it runs on a key of your own account, which the Data and API page lists under connected apps. Discovery: https://mcp.bykaranteli.com/.well-known/oauth-protected-resource.

A free account covers the API and the hosted MCP on one monthly counter; Builder and above bring higher rates and member depth.

Step-by-step guide for beginners: https://bykaranteli.com/guide/connect

Related MCP server: usenami-mcp

Quick start

Claude Code

claude mcp add bykaranteli -e BYKARANTELI_API_KEY=bk_... -- npx -y bykaranteli-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "bykaranteli": {
      "command": "npx",
      "args": ["-y", "bykaranteli-mcp"],
      "env": { "BYKARANTELI_API_KEY": "bk_..." }
    }
  }
}

Cursor / other MCP clients

Any stdio MCP client works: command npx, args ["-y", "bykaranteli-mcp"], env BYKARANTELI_API_KEY.

Requires Node.js 20 or newer (1.0.0; the 0.x releases ran on 18). The server speaks both the 2026-07-28 revision of the protocol and the 2025-era initialize handshake, so every MCP client released so far connects unchanged.

Tools

Tool

What it answers

get_market_indices

"What is the Fear & Greed index today?", "What is BTC dominance right now?"

get_funding_heatmap

"What are funding rates right now?", "What is SOL's funding?"

get_funding_arbitrage

"Any funding arb opportunities?", "Best venue to long/short BTC for carry?"

get_pressure_scores

"Which coins are over-leveraged / crowded right now?"

get_top_movers

"Biggest OI spikes today?", "Most extreme funding right now?"

get_liquidations

"How much was liquidated today?", "Did longs or shorts get flushed this week?"

get_liquidation_leaderboard

"What was the biggest liquidation today?", "When do liquidations cluster, Asia or US hours?"

get_insurance_funds

"How big is the Binance insurance fund?", "Did any exchange insurance fund shrink this week?"

get_tokenized_stocks

"How much tokenized Tesla exists onchain?", "Which tokenized stock trades furthest from the real share?", "Which price valued this wrapper's supply?" (price_source, totals.priced_by)

get_etf_flows

"Did the Bitcoin ETFs buy or sell yesterday?", "Cumulative ETH ETF inflow?", "XRP ETF flows this week?"

get_cot_positioning

"Are hedge funds long or short Bitcoin?", "What did the COT report show?"

get_options_snapshot

"Where are the BTC option walls?", "What is DVOL / the zero-gamma level?"

get_coinbase_premium

"Are US investors buying Bitcoin?", "What does the basis trade pay?"

get_flow_toxicity

"Is toxic order flow building?", "What is BTC's VPIN right now?"

get_options_flow

"What are the big options players buying?", "Any block trades today?"

get_slippage

"How much slippage on a $1M market order?", "Which book is thinnest?"

get_fomc_impact

"What does BTC do on Fed days?", "When is the next FOMC meeting?"

get_liquidation_cascades

"What caused that flush?", "Who got liquidated this week?"

get_open_interest

"Is leverage entering the market?", "Are shorts building in XRP?"

get_psi_charge

"What liquidity state is the market in?", "Is parked money deploying?"

get_theme_indices

"Which crypto narrative is leading: AI, RWA, DePIN, memes, L2s, DeFi?"

get_factor_board

"Which indicators sit in an unusual band today, and what followed historically?"

get_venue_markets

"Total BTC open interest across exchanges?", "What is the DEX share of perp OI?", "Is USDT off peg anywhere?"

get_leverage_tiers

"How much leverage does Bybit allow on SOL?", "Which exchange has the highest max leverage for DOGE?", "Did any venue cut leverage on a coin this week?"

get_withdrawal_status

"Has KuCoin paused USDT withdrawals?", "Cheapest network to withdraw USDT from Gate?", "Which exchanges have withdrawals closed right now?"

get_venue_profile

"What do you record about Bybit?", "How many contracts does OKX list?", "Is HTX up, and what happened there this week?"

get_settlements

"What expires this week?", "When is the next BTC quarterly on OKX?", "At what price did the September future settle?"

get_borrow_rates

"What does it cost to borrow USDT on Binance?", "Cheapest venue to borrow ETH?", "Is stablecoin borrow spiking?"

get_fee_table

"What are Bitget's perp fees?", "Which exchange has the lowest taker fee?", "Did any venue change fees this week?"

get_lead_lag

"Does Coinbase or Binance move first?"

get_iv_surface

"What is BTC implied vol by expiry?", "Is downside protection expensive (skew)?"

get_whale_tape

"Are whales buying or selling right now?"

get_correlations

"How correlated is SOL to BTC over 30 days?"

get_new_listings

"Which perpetuals were listed this week, and where first?"

get_macro_liquidity

"What is the Fed balance sheet / RRP / stablecoin supply doing?"

get_network_health

"Bitcoin hashrate, difficulty, fees, mempool right now?"

get_tradfi_board

"TSLA perp funding rate? Which exchanges list NVDA perps? Is the stock session open?"

get_rsi_heatmap

"Which coins are oversold on the daily? BTC RSI on 4h and 1w?"

get_hl_whales

"Are Hyperliquid whales net long BTC? What did the biggest accounts just flip?"

get_positioning

"BTC long/short ratio on Binance? Are top traders net short ETH? CVD today?"

get_coverage

"Which exchanges are behind your liquidation totals? How fresh is the data?"

get_orderbook_depth

"Where is the biggest BTC bid wall? How deep is ETH within 2% on Coinbase vs Binance?"

get_jupiter_perps

"How much long vs short OI is on Jupiter SOL perps? Who topped Jupiter this week? What is the JLP APR?"

get_solana_perps

"Which Solana perp DEX has the most open interest? What is Pacifica's BTC funding and 24h volume? Phoenix SOL open interest? GM Trade versus Jupiter?"

get_desk_notes

"What did the desk observe in the derivatives data today? What happened on 14 October? Give me a dated, quotable sentence with its number and time."

get_turkey_premium

"What do lira buyers pay for bitcoin above the world price? What is the Turkey Premium Index and its score right now? Which Turkish exchange is dearest? What is USDT/TRY against the official rate?"

get_data_proof

"Can I verify a ByKaranteli number was not changed later? Show the on-chain proof for BTC funding right now. Which Solana transaction sealed the newest epoch?"

get_cycle_indicators

"Has the Pi Cycle crossed? Mayer Multiple and Puell today?"

get_altseason

"Is it altseason?", "What is the altcoin season index?"

get_metric_context

"Is today's funding extreme historically?", "Where does this reading sit in its distribution?"

get_quantum_exposure

"How much Bitcoin is quantum-vulnerable?", "What is the P2PK exposure?"

get_liqmap

"Where are the BTC liquidation clusters?", "Where would leveraged longs get liquidated?"

get_market_profile

"Where is the BTC point of control today?", "What was yesterday's value area?", "Which naked POCs are still untested?"

get_options_chain

"How did BTC open interest move by strike today?", "Where is ETH ATM IV hour by hour?", "Which expiry gained the most open interest in 24h?"

get_hl_positions

"Where do Hyperliquid whales get liquidated on BTC?", "How much tracked notional sits below price?", "Does the model agree with the tracked positions?"

get_venue_share

"Which exchange had the most liquidations this week?", "How is perp open interest split by venue?"

get_tradfi_gaps

"What did the TSLA perp do over the weekend?", "How big was the Monday open gap on NVDA?", "How far apart were the venues overnight?"

get_series

"BTC open interest by hour for the last week?", "ETH funding on OKX since 1 September?", "Daily Coinbase premium this month?" (metric list, units and finest periods: https://bykaranteli.com/api/series/metrics)

All market answers are JSON and carry a generatedAt timestamp, a source URL to the human-readable page and a provenance block: source_page, api_path, the answer's own generated_at, fetched_at, and when the answer carries them the venues behind the number, coverage (full, sampled or mixed), stale_venues and recorded_since, plus the proof page (https://bykaranteli.com/proof). A field the answer does not carry is left out, never filled in. Symbols accept both BTCUSDT and bare BTC.

Answers are sized for a model's context: a call without arguments returns a short first page (for example 30 rows, or the newest points of a series), never a whole board. Every shortened list is named in trimmed with field, returned, total and more, the parameter that returns the rest (symbol, coin, asset, limit, days, detail and the like); a filtered call keeps its full detail. One answer is capped at 100,000 characters; above that the tool says how to narrow the call.

Thirteen large tools (get_liqmap, get_turkey_premium, get_correlations, get_hl_whales, get_options_flow, get_funding_arbitrage, get_desk_notes, get_positioning, get_coverage, get_new_listings, get_venue_markets, get_tokenized_stocks, get_factor_board) also take detail: "compact" answers a shorter page than the default one (fewer rows, numbers rounded to six significant digits, long free text cut, grids left out; every cut named in trimmed), "full" the whole route answer. get_liqmap and get_coverage keep their boolean form, where true means full. Since 1.1.0.

Account tools (alerts and watchlist)

These tools read and change your own ByKaranteli account with the same key: the alert recipes that notify you on Telegram, email, push or webhook, and your watchlists. They never trade, move funds or touch another account.

Tool

What it does

parse_alert_text

Turns "BTC funding above 0.05%" or "tell me when ETH drops 5% in a day" into the exact recipe, with a confidence and what the text left open. Rule based; saves nothing, never invents a threshold.

list_alert_recipes

Lists your alert recipes with their conditions, scope, channels and when each last fired.

create_alert_recipe

Saves an alert recipe (writes to your account).

delete_alert_recipe

Deletes one of your alert recipes by id (writes to your account).

list_watchlists

Lists your watchlists and the symbols on each.

add_watchlist_symbol

Adds a symbol to your default list or the list you name (writes to your account).

remove_watchlist_symbol

Removes a symbol from a list (writes to your account).

list_tracked_addresses

Lists the Hyperliquid addresses you follow, with their last positions (reads your account).

add_tracked_address

Follows a Hyperliquid address for position alerts (writes to your account; Terminal and above).

remove_tracked_address

Stops following an address (writes to your account).

  • The write tools carry readOnlyHint: false (and destructiveHint: true for the two that remove something), so clients that ask before a change will ask.

  • How many recipes an account keeps follows its plan; past it, create_alert_recipe answers with the limit instead of saving.

  • Every call counts on the key's plan like any other request; writes are also rate limited per key, and each write is recorded on the account with the key that made it.

  • Recipes and watchlist changes show up at once on https://bykaranteli.com/dashboard/alerts and https://bykaranteli.com/dashboard/watchlist.

  • If a tool call answers 401, the body's error_description says what to send and the x-byk-mcp-auth header names the cause: key_required (no credential at all), key_unusable (a header or the address carried no key: the bk_... placeholder, an unset variable, a non-Bearer scheme, an OAuth token of the wrong shape), key_wrong_type (a prepaid bk_live_ key, which pays per call on /api/x402/* and does not open the MCP) or key_unrecognised (mistyped, expired or revoked). The WWW-Authenticate challenge starts the OAuth sign-in in clients that support it. This package forwards the REST body verbatim, so the same sentence reaches the model over stdio.

Configuration

Env var

Default

Purpose

BYKARANTELI_API_KEY

none

Account key (bk_...) sent as Authorization: Bearer. Free at https://bykaranteli.com/dashboard/api; required for programs from 2026-09-10

BYKARANTELI_BASE_URL

https://bykaranteli.com

Override the API host (testing only). The key is sent to whatever host this names, so point it only at a server you trust.

Data notes

  • The signal engine was retired in September 2026; this server publishes recorded market data only, no trading signals or performance claims.

  • Funding, OI and pressure data refresh every 15 to 30 minutes; indices every 30 minutes.

  • Nothing here is financial advice. See bykaranteli.com/risk-guide.

Development

npm install
npm run build
node dist/index.js   # speaks MCP over stdio

Release notes per version: CHANGELOG.md.

License

Server: MIT. Data: personal and research use with attribution "ByKaranteli (bykaranteli.com)"; commercial use with the Business plan. Licence text: https://bykaranteli.com/data#license.

Plans and paid depth

Plan

Rate

Monthly

Depth

Free API

30 / min

15,000

public pages

Terminal

60 / min

150,000

public pages

Builder

300 / min

1,000,000 fair use

member depth, x402 catalog: 1,000 calls a month included over the last 90 days at up to 5,000 rows a call, summary series only, raw record routes paid per call

Business

1,200 / min

3,000,000 fair use

member depth, commercial licence, x402 catalog: 10,000 calls a month included over the last 365 days with raw records, monthly bulk exports over the same window

Scale

3,000 / min

10,000,000 fair use

member depth, derived redistribution, x402 catalog with no monthly ceiling over the whole archive with raw records, monthly bulk exports over the whole archive

Prices: https://bykaranteli.com/pricing

A Free or Terminal key past its monthly figure gets 429 until the month resets. A paid key past its fair use is never stopped: it answers at the Free rate (30 a minute) until the month resets, with x-quota-state: slow on every answer.

Full table: https://bykaranteli.com/developers#tiers. For recorded history and raw records beyond the live snapshots, bykaranteli.com also exposes pay-per-call x402 endpoints for anonymous agents (USDC on Solana or Base, priced per call, no account): https://bykaranteli.com/developers#x402 · machine catalog: https://bykaranteli.com/api/x402. Builder, Business and Scale keys call those routes unpaid within the plan's catalog allowance (table above); each included call also counts as 10 requests of the monthly fair use. A call the plan does not include answers x402_allowance_used, history_window or raw_tier_required, and a route the plan does not carry answers tier_required (bulk exports start at Business): pay it with a prepaid key in x-api-key while the account key stays in Authorization: Bearer, or without the account key from a wallet.

Available Tools

68 tools
add_tracked_addressFollow a Hyperliquid address for position alerts (writes to your account)A
Idempotent
Inspect

Call this when the user asks to follow, track or get alerts for a Hyperliquid address (0x followed by 40 hex characters). Every later position change of the address (opened, closed, increased, reduced, flipped) reaches the user's alert channels; the first sight is the baseline and sends nothing. Counted against the plan's address limit; the route answers terminal_required or limit_reached when it cannot add.

NameRequiredDescriptionDefault
labelNostring, optional name for the address, up to 40 characters
addressYesstring, 0x followed by 40 hex characters

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: every later position change (opened/closed/increased/reduced/flipped) is pushed to the user's channels, the first sight is a silent baseline, and the address counts against the plan's limit. The named failure responses (terminal_required, limit_reached) disclose error behavior the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Front-loads the invocation trigger in the first clause, then layers behavior, baseline semantics, and failure modes. Dense but every clause (including the format hint and error codes) earns its place; nothing is redundant with the title.

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

Completeness4/5

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

For a two-parameter write tool with no output schema, the definition covers trigger, push behavior, limit accounting, and failure codes. It omits what a successful response returns (e.g., an identifier) and any auth requirements implied by 'writes to your account,' leaving a small gap.

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

Parameters3/5

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

Schema coverage is 100%, so both address and label are already documented in the schema. The description repeats the address format but says nothing about the optional label parameter, so it adds only marginal value. Baseline 3 applies when the schema carries the parameter documentation.

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

Purpose5/5

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

States a specific verb+resource: follow/track a Hyperliquid address to receive position alerts. The parenthetical format spec (0x + 40 hex) and the sibling list (add_watchlist_symbol, create_alert_recipe) make it unambiguous what this tool does versus adjacent alert tools.

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

Usage Guidelines4/5

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

"Call this when the user asks to follow, track or get alerts for a Hyperliquid address" gives a clear invocation trigger, and the terminal_required/limit_reached conditions tell the agent when the call will fail. It doesn't explicitly name alternatives (e.g., use add_watchlist_symbol for symbols) or the remove counterpart, 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.

add_watchlist_symbolAdd a symbol to your watchlist (writes to your account)A
Idempotent
Inspect

Call this when the user asks to watch, follow or add a coin to their watchlist. Adds the symbol to the list named by watchlist_id, else to the default list (or the only list the account has); a symbol already on the list stays once. Returns the list's symbols after the change. Writes are rate limited per connection (sign-in or key) and each one is recorded on the account.

NameRequiredDescriptionDefault
symbolYesstring, a Binance USDT-M perp or coin, e.g. SOLUSDT or SOL
watchlist_idNostring, optional list id from list_watchlists (default: the default list)

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the default-list fallback including the single-list edge case, dedup behavior ('stays once', consistent with idempotentHint=true), per-connection rate limiting, and account-level auditing of each write. Nothing contradicts the declared hints; the readOnly=false/destructive=false profile is consistent with 'adds' and 'stays once'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three tight sentences: trigger first, then resolution/default behavior, then return value and write side effects. Every sentence carries distinct information with no repetition of the title or schema.

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

Completeness5/5

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

With no output schema, the description compensates by stating the return value ('Returns the list's symbols after the change'). Combined with rate-limit and audit side effects and the default-list resolution rules, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds real semantics the schema lacks: watchlist_id falls back to the default list and, if the account has only one list, to that list. It also reinforces the symbol-format hint only implicitly, which keeps it from a 5.

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

Purpose5/5

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

States a specific verb and resource ('Adds the symbol to the list named by watchlist_id') and pairs it with a natural-language trigger ('watch, follow or add a coin'). It is trivially distinguishable from siblings like remove_watchlist_symbol, list_watchlists, and add_tracked_address 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.

Usage Guidelines4/5

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

Gives a concrete user-intent trigger ('when the user asks to watch, follow or add a coin to their watchlist'), which covers the main selection question. It does not explicitly name the inverse tool (remove_watchlist_symbol) or state when not to use it, so it falls short of full alternative routing.

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

create_alert_recipeCreate an alert recipe (writes to your account)AInspect

Call this when the user asks to be alerted when a metric crosses a threshold and has agreed to the exact condition (parse_alert_text turns their words into one). Saves an alert recipe on the account: it fires when every condition holds, delivers by Telegram first with email as fallback unless channels says otherwise, and waits cooldown_hours before it fires again for the same symbol. field is one of: mark_price, pressure_score, funding_rate_pct, oi24h_pct, basis_pct, price_change_24h_pct, liq_cluster_distance_pct, usdt_peg_min_usd, usdc_peg_min_usd, liq_1h_usd, rsi_4h, ls_ratio_global, book_imbalance_2pct_pct, withdrawal_paused_venues, max_leverage_min, borrow_apr_pct, hl_whale_long_share_pct; op is one of >= > <= < ==; percent fields take percent values (0.05 means 0.05%). Pass field, op and threshold for one condition, or conditions for up to 6. scope: watchlist (default), any, or symbols with symbols. The plan sets how many recipes an account keeps; past it the tool answers with the limit. Writes are rate limited per connection (sign-in or key) and each one is recorded on the account.

NameRequiredDescriptionDefault
opNostring, one condition's comparison: >= | > | <= | < | ==
nameNostring, optional name; default describes the condition
fieldNostring, one condition's metric, e.g. funding_rate_pct
scopeNostring, optional: watchlist (default), any, symbols
symbolsNoarray, optional up to 20 symbols, e.g. ["BTCUSDT", "ETH"]; implies scope symbols
channelsNoarray, optional delivery channels: telegram | email | push | webhook; empty means Telegram first, email as fallback
thresholdNonumber, one condition's threshold, e.g. 0.05
conditionsNoarray, optional up to 6 conditions {field, op, value}, all must hold (instead of field, op, threshold)
cooldown_hoursNonumber, optional 1..168 hours before it fires again (default 24)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare a non-readonly, non-idempotent write, and the description adds meaningful extra context: default delivery (Telegram first, email fallback), cooldown_hours suppressing repeat fires per symbol, per-plan recipe caps returning a limit response, and per-connection write rate limiting with each write recorded on the account.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the 'Call this when...' routing sentence and dense with useful facts, but the entire body is a single run-on paragraph mixing field enum, units, conditions, scope, plan limits, and rate limits. A little structure would make the enum list and the write-constraints easier to scan.

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

Completeness5/5

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

For a 9-param mutation tool with no output schema, the description covers what is created, how it fires, default channels, cooldown, scope defaults, plan caps, and rate limiting. Nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100% (baseline 3), but the description goes well beyond it: it enumerates all 17 valid field values that the schema only hints at with 'e.g. funding_rate_pct', and it disambiguates percent units ('0.05 means 0.05%'). It also clarifies the field/op/threshold vs conditions (max 6) alternative and the symbols-implies-scope-symbols relationship.

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

Purpose5/5

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

States a specific verb+resource ('Saves an alert recipe on the account') and immediately frames the trigger semantics (fires when every condition holds). It is clearly separable from list_alert_recipes, delete_alert_recipe, and parse_alert_text by naming the prep-step relationship.

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

Usage Guidelines5/5

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

Explicitly says when to call it: the user asks to be alerted on a metric threshold AND has agreed to the exact condition, and it names parse_alert_text as the tool that produces that condition. Also states the plan-limit failure behavior, which is actionable guidance.

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

delete_alert_recipeDelete one of your alert recipes (writes to your account)A
DestructiveIdempotent
Inspect

Call this when the user asks to remove an alert. Deletes the alert recipe with this id from the account (list_alert_recipes shows the ids); an id that is not one of the account's recipes changes nothing and says so. Writes are rate limited per connection (sign-in or key) and each one is recorded on the account.

NameRequiredDescriptionDefault
idYesstring, the recipe id from list_alert_recipes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description earns credit for going further: it explains that an unknown id is a safe no-op that reports itself, that writes are rate limited per connection (sign-in or key), and that each write is recorded on the account. That is exactly the operational context an agent needs before a destructive call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three tight clauses: trigger first, then the action and no-op behavior, then rate-limit/audit facts. No filler, and the most decision-relevant information is front-loaded.

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

Completeness4/5

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

For a one-param destructive tool with no output schema, the description covers trigger, id provenance, failure semantics, and rate limiting. The only gap is the response shape on success, which is minor given the no-op case is described.

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

Parameters4/5

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

Schema coverage is 100% and the single param's schema description already points to list_alert_recipes, so baseline is high. The description reinforces the id's provenance and adds non-obvious semantics — a stale/foreign id silently changes nothing — which is real value beyond the schema.

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

Purpose5/5

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

The description names a specific verb and resource ('Deletes the alert recipe with this id') and explicitly scopes it to the account. It also points to list_alert_recipes as the id source, so an agent can immediately distinguish it from create_alert_recipe and list_alert_recipes.

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

Usage Guidelines4/5

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

'Call this when the user asks to remove an alert' is an explicit trigger condition, and 'list_alert_recipes shows the ids' supplies the prerequisite lookup step. It lacks an explicit when-not clause (e.g., versus editing a recipe), but the context is clear enough to route correctly.

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

get_altseasonAltcoin Season Index (live + recorded history)A
Read-only
Inspect

Call this when the user asks whether it is altseason, how altcoins are doing against Bitcoin, or about market rotation. Returns the live Altcoin Season Index (share of the top 50 Binance perpetual altcoins beating BTC over the trailing 90 days; >=75 altseason, <=25 bitcoin season), the strongest and weakest large alts, and the recorded daily history (never reconstructed).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds real substance beyond them: the exact computation window, venue universe, and the >=75 / <=25 thresholds that define altseason vs bitcoin season. The provenance note "recorded daily history (never reconstructed)" is a valuable data-integrity disclosure an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two dense sentences with zero filler: the trigger condition leads, the returned content and its semantics follow. Every clause carries information (thresholds, universe, provenance).

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: live index value plus interpretation bands, strongest/weakest large alts, and recorded daily history. Nothing an agent needs to select or call the tool is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly adds nothing parameter-related, since there is nothing to disambiguate.

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

Purpose5/5

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

States a specific verb+resource: returns the live Altcoin Season Index along with strongest/weakest large alts and daily history. The index definition (share of top 50 Binance perp alts beating BTC over 90 days) makes it unmistakably distinct from siblings like get_market_indices, get_theme_indices, and get_factor_board.

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

Usage Guidelines4/5

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

"Call this when the user asks whether it is altseason, how altcoins are doing against Bitcoin, or about market rotation" gives explicit triggering conditions tied to user intent. It does not name an alternative tool or a when-not-to-use case, so it stops short of a 5.

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

get_borrow_ratesMargin borrow rates per venue: the cost of leverage, hourlyA
Read-only
Inspect

Call this when the user asks what it costs to borrow USDT, USDC, BTC, ETH or a major alt on an exchange, which venue has the cheapest borrow, whether stablecoin borrow cost is spiking, or what the carry of a basis trade is on a venue (funding minus borrow). Returns the latest annualised rate per venue and asset, 30 days of hourly series for the stablecoins and majors, and the carry table. Recorded hourly by ByKaranteli (Binance and OKX today). The series hold the last 24 hours unless hours (up to 720) or asset is passed.

NameRequiredDescriptionDefault
assetNoOptional. One asset, e.g. USDT: its rates, carry and full 30-day series.
hoursNoOptional. Hours of hourly series to return (default 24, or the full 720 with asset).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely new behavioral context: data is recorded hourly, the source is ByKaranteli (Binance and OKX only), and the series hold just the last 24 hours unless hours/asset is passed — an important truncation behavior an agent would otherwise miss.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Usage triggers are front-loaded, followed by return contents and then retention caveats — a logical order with no filler. It is dense with comma-separated clauses, but every sentence carries information an agent needs.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of describing return values, and it does: latest annualised rate per venue and asset, 30 days of hourly series for stablecoins and majors, and the carry table. Combined with the venue coverage and retention limits, an agent has enough to call this correctly without further clarification.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented including the 720 maximum and the default-24 behavior. The description's line about series retention restates the schema's 'default 24, or the full 720 with asset' rather than adding new syntax or format detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific resource (annualised margin borrow rates per venue and asset) with concrete output components: latest rate, 30-day hourly series, and the carry table. It is clearly distinguishable from siblings like get_funding_arbitrage or get_funding_heatmap because it names borrow cost and carry (funding minus borrow) as the subject.

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

Usage Guidelines4/5

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

Opens with an explicit trigger list ('Call this when the user asks what it costs to borrow USDT, USDC...', 'which venue has the cheapest borrow', 'whether stablecoin borrow cost is spiking', 'what the carry of a basis trade is'). That is strong positive guidance, but it names no alternative tool and no when-not-to-use condition, so it falls short of the 5 bar.

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

get_coinbase_premiumCoinbase Premium (US demand gauge) + carry yieldA
Read-only
Inspect

Call this when the user asks whether US investors are buying or selling Bitcoin or Ethereum, about the Coinbase Premium, or what the cash-and-carry basis trade pays. Returns the latest daily premium in percent, 7-day average, same-sign streak, the last 30 days, and annualized quarterly carry yields. History since 2017; positive premium = US buying pressure. The kimchi and Turkey premium daily rows cover the last 7 days; pass days (up to 90) for more.

NameRequiredDescriptionDefault
daysNoOptional. Days of kimchi and Turkey premium daily rows, newest first (default 7, up to 90).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safe-read (readOnlyHint=true, openWorldHint=true), so the description's job is to add output shape and quirks, which it does: history since 2017, positive premium = US buying pressure, and the non-obvious fact that the days parameter only extends the kimchi/Turkey rows. It does not state freshness/lag cadence of the 'latest daily' value, which is the main remaining unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The trigger clause is front-loaded before the return-value inventory, and every sentence carries information (triggers, outputs, sign convention, history depth, parameter scoping). It is dense but slightly overpacked, mixing trigger guidance and output enumeration in a single flow.

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

Completeness5/5

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

With no output schema, the description carries return-value burden and does so: it enumerates every field an agent would need, gives the sign interpretation, states history depth since 2017, and clarifies the one optional parameter's limited effect. Nothing required to call or interpret this tool is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description earns an extra point by flagging that days only widens the kimchi and Turkey daily rows (up to 90) and does not extend the fixed 30-day headline premium series — a scoping nuance an agent could easily misread from the parameter name alone.

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

Purpose4/5

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

The description names the resource (Coinbase premium / US demand gauge) and states exactly what it returns: latest daily premium in percent, 7-day average, streak, 30 days of history, and annualized carry yields. It is specific and distinguishable from most siblings. The one gap is that 'what the cash-and-carry basis trade pays' overlaps conceptually with get_funding_arbitrage, and no boundary is drawn there.

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

Usage Guidelines4/5

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

It opens with an explicit trigger: 'Call this when the user asks whether US investors are buying or selling Bitcoin or Ethereum, about the Coinbase Premium, or what the cash-and-carry basis trade pays.' That gives concrete user-intent contexts rather than a vague topic. It stops short of any exclusion or named alternative (e.g. get_turkey_premium for Turkey-only questions), so it is clear context without routing.

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

get_correlationsCrypto correlation matrixA
Read-only
Inspect

Call this when the user asks how correlated two coins are, for decorrelated pairs, or how tightly alts track BTC. Returns the 30-day rolling Pearson correlation matrix of daily returns across the top perpetuals. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds the analytical window (30-day rolling, daily returns) and universe (top perpetuals), which is real added context. It does not disclose result size limits or pagination behavior itself — those live only in the schema — so it adds value but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, trigger condition front-loaded, then return shape, then parameter hint. No filler and nothing buried.

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

Completeness4/5

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

With no output schema and only one optional parameter, the description supplies what an agent needs: what the matrix is (Pearson, daily returns, 30-day rolling), over what universe, and how to reduce payload. It omits the character-ceiling behavior and the trimmed/truncation signaling that a caller may hit on a large board, which is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 100% and the detail parameter's schema text already defines compact/full/omitted semantics in depth. The description's closing sentence merely restates that mapping, adding no new syntax or edge cases. Baseline 3 applies since the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb-level outcome (returns the 30-day rolling Pearson correlation matrix of daily returns across top perpetuals) and names concrete user intents it answers: pairwise correlation, decorrelated pairs, alt/BTC tracking. No sibling in the list produces a correlation matrix, so it is cleanly distinguishable.

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

Usage Guidelines4/5

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

Opening clause gives explicit triggers ("how correlated two coins are", "decorrelated pairs", "how tightly alts track BTC"), which is strong when-to-use guidance. It stops short of naming near-neighbors such as get_lead_lag or get_factor_board or stating when another tool is the better choice, so it is not a 5.

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

get_cot_positioningCME futures positioning (weekly COT report, BTC + ETH)A
Read-only
Inspect

Call this when the user asks how hedge funds or institutions are positioned in Bitcoin or Ethereum, or about the CFTC Commitments of Traders report. Returns net positions in contracts, week-over-week changes, open interest and notable extremes/streaks, from official CFTC data updated every Friday. Note: a large share of hedge fund shorts is the market-neutral basis trade, so the weekly change carries more signal than the level.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds genuinely new context: data provenance (official CFTC), freshness ('updated every Friday'), and an interpretive caveat that hedge fund shorts are largely basis trade so week-over-week change matters more than level. That interpretive note is exactly the kind of behavioral insight annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, each earning its place: the trigger first, then the returned payload and cadence, then the interpretation caveat. No filler and the actionable when-to-call clause is front-loaded.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing returns and does so (net positions, WoW changes, open interest, extremes/streaks) plus update cadence. For a zero-parameter read-only tool, an agent has everything needed to invoke and interpret it.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is empty and fully consistent with the description.

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

Purpose4/5

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

The description names the specific data source (CFTC Commitments of Traders), the assets covered (Bitcoin/Ethereum) and the unit returned (net contracts), which is far beyond a restatement of the name. It does not, however, contrast itself with the sibling get_positioning, which an agent could easily confuse with this one.

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

Usage Guidelines4/5

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

It gives explicit invocation triggers ('when the user asks how hedge funds or institutions are positioned', 'or about the CFTC Commitments of Traders report'), which is strong positive guidance. It stops short of stating when not to use it or which sibling to prefer for other positioning views.

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

get_coverageCoverage registry: which venues and data types we collect, how, and how freshA
Read-only
Inspect

Call this when the user asks which exchanges sit behind a ByKaranteli number, whether a feed is complete or sampled, since when a venue is collected, or how fresh the data is. Returns the live coverage registry: liquidation feeds per venue with kind and last record, snapshot feeds per venue and market, funding arbitrage legs, positioning sources, whale tape, spot minutes and the Hyperliquid whale scan with freshness. snapshots[].country is the jurisdiction only when the venue states one; it is null for most venues, so do not read null as unknown risk. By default the first 30 snapshot feeds, English notes only and no per-venue matrix cells; pass detail "full" for the full registry. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the read-only annotation, the description discloses important behavioral traits: the default response includes only the first 30 snapshot feeds, English notes only, and no per-venue matrix cells; detail modes alter truncation; and null country values should not be interpreted as unknown risk. These are substantive operational details an agent could not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the triggering question types and then moves to return contents, caveats, and detail modes. It is dense but mostly efficient; the detail-mode explanation repeats information already present in the schema, which is a minor redundancy.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of explaining return contents, which it does thoroughly by listing the registry sections and freshness information. It also covers default truncation, the meaning of null country values, and how detail modes change the response, leaving no major gaps for a one-parameter read-only registry tool.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter description already explains compact, full, true, and default behavior in detail. The tool description restates the default and detail modes but does not add meaning beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific resource — the live coverage registry — and enumerates exactly what it contains: liquidation feeds, snapshot feeds, funding arbitrage legs, positioning sources, whale tape, spot minutes, and Hyperliquid scan freshness. It clearly distinguishes itself from metric-oriented siblings by serving as the registry explaining what data is collected and how fresh it is.

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

Usage Guidelines4/5

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

It gives an explicit triggering condition: 'Call this when the user asks which exchanges sit behind a ByKaranteli number, whether a feed is complete or sampled, since when a venue is collected, or how fresh the data is.' This is clear usage context, but it does not name any sibling alternative or state when not to use it.

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

get_cycle_indicatorsBitcoin cycle indicators: Pi Cycle, Mayer, 200W MA, Puell, S2FA
Read-only
Inspect

Call this when the user asks whether Bitcoin is near a cycle top or bottom by the classic indicators, about the Pi Cycle Top, Mayer Multiple, 200-week moving average, 2-year MA multiplier, golden ratio multiple, profitable days, stock-to-flow, Puell Multiple or Bitfinex margin positioning. Returns the latest readings, the Pi Cycle cross dates on record, and optionally the daily series (recomputed nightly from a first-party close record since 2012). Levels, not forecasts.

NameRequiredDescriptionDefault
daysNoWindow in days for the series (default 730)
include_pointsNoInclude the daily series (large). Default false: latest values and cross dates only.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly and openWorld annotations, the description discloses that it returns latest readings and Pi Cycle cross dates, optionally the daily series, and that data is 'recomputed nightly from a first-party close record since 2012.' It also clarifies 'Levels, not forecasts,' setting correct expectations about output nature. These are meaningful behavioral details not captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the usage condition and is reasonably efficient. The long enumeration of indicators is slightly repetitive with the title but serves to specify coverage. Every sentence contributes, though the list could be trimmed without losing much.

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

Completeness5/5

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

For a read-only tool with 100% schema coverage and no output schema, the description provides all an agent needs: the trigger scenario, the specific indicators covered, the return content (readings, cross dates, optional series), data source and update cadence, and a caveat ('Levels, not forecasts'). Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters fully. The description mentions 'optionally the daily series' and the nightly recomputation, which lightly reinforces include_points and data recency, but adds no syntax or format details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Call this when...') and a precise resource: Bitcoin cycle indicators, enumerating the exact indicators covered (Pi Cycle Top, Mayer Multiple, 200-week MA, 2-year MA multiplier, golden ratio multiple, profitable days, stock-to-flow, Puell Multiple, Bitfinex margin positioning). This clearly distinguishes the tool from siblings like get_market_indices or get_series, which are broader.

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

Usage Guidelines4/5

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

The description gives an explicit trigger: 'Call this when the user asks whether Bitcoin is near a cycle top or bottom by the classic indicators.' It does not name an alternative tool or state when not to use it, but the context is sufficiently clear that an agent can infer appropriate use.

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

get_data_proofBYK Data Layer: on-chain proof that a ByKaranteli number was sealed, signed and anchored on Solana and BaseA
Read-only
Inspect

Call this when the user asks whether ByKaranteli data can be verified or was changed afterwards, about the BYK Data Layer, on-chain proofs of market data, or wants the proof behind one sealed number. Every 5 minutes a catalog of derived feeds (funding composite, aggregate open interest, liquidations, depth within 2%, pressure scores, Kimchi and Turkey premiums) is sealed into one Merkle root, signed and written to Solana mainnet, and attested on Base once a day. With no arguments returns the stream overview: network, epochs and records sealed, final anchors and the newest epochs with explorer links. Pass feed and asset for one record's proof (value, 104-byte leaf, Merkle path, signed manifest, signature, Solana and Base anchors) at the newest epoch or at sequence; sequence alone for one epoch; catalog for the feed list. result ANCHORED means ByKaranteli signed it and an anchor is final; the protocol verdict is reached from the chains alone at https://bykaranteli.com/proof.

NameRequiredDescriptionDefault
feedNoFeed id from the catalog, e.g. BYK.FUNDING.COMPOSITE.B
assetNoAsset of the feed: BTC, ETH, SOL, XRP, DOGE, BNB, USDT or ALL
catalogNotrue: list every sealed feed with its unit and methodology
sequenceNoEpoch sequence; omit for the newest

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds non-obvious behavior such as the 5-minute sealing cadence, Solana mainnet writes, daily Base attestation, and the meaning of result ANCHORED. It also describes what the overview and per-record proof contain, going well 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.

Conciseness4/5

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

The description is front-loaded with the call condition and then covers invocation modes and return meaning without obvious filler. The prose is dense and could be split for readability, but every sentence contributes relevant information.

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

Completeness5/5

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

For a complex proof/verification tool with no output schema, the description supplies the missing return context: overview fields, record proof components, anchors, and verdict meaning. It also covers the main invocation modes, leaving little an agent needs for correct selection and invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; however, the description adds semantic argument combinations beyond the schema: no arguments returns the stream overview, feed+asset returns one record at the newest epoch or at sequence, sequence alone returns one epoch, and catalog lists feeds. It does not add format details for each parameter, but the schema already covers those.

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

Purpose5/5

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

The description states a specific resource and action: it returns on-chain proof for a sealed ByKaranteli number, either as a stream overview or as a per-record Merkle/signature proof. It distinguishes this verification/proof tool from sibling market-data getters by focusing on seals, Merkle roots, signatures, and Solana/Base anchors.

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

Usage Guidelines4/5

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

It gives concrete triggering questions such as whether ByKaranteli data can be verified or was changed afterwards, and it explains argument modes: no arguments for overview, feed+asset for one record, sequence for one epoch, and catalog for the feed list. It does not name alternatives or explicitly say when not to use this tool versus sibling data tools.

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

get_desk_notesDesk notes: short dated observations the ByKaranteli desk wrote from its own recorded derivatives dataA
Read-only
Inspect

Call this when the user asks what happened in crypto derivatives today or on a date, what the desk observed, what moved in funding, open interest, liquidations, options, ETF flows or exchange premiums, or wants a dated, quotable sentence with its number and time. Returns the desk's notes newest first: each is one observation written by the desk writer (an AI model) from the platform's own recorded data and checked against it before publishing, with its publish time in UTC, the card's data time, the desk's 0 to 10 news value, the board it read from, the coins it names and its permanent URL. Information about the data, never advice. Default the newest 25 notes of the last 24 hours (count says how many came back; limit up to 100 for more); pass day for one UTC day, since for a window up to 7 days back (50 notes unless limit says otherwise), type for one card type (funding-arb, liqmap-btc, event-liq-burst, ...), lang for zh, ru or ko text. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
dayNoOne UTC day, YYYY-MM-DD
langNoText language (default en); a note without that translation comes back in English
typeNoOne card type, e.g. funding-arb, liqmap-btc, event-liq-burst
limitNoNotes to return, 1..100 (default 25 for the last 24 hours, 50 with day or since)
sinceNoISO time; notes published at or after it, at most 7 days back (ignored with day)
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark it read-only and open-world, and the description adds substantial behavioral context beyond them: returns newest first, AI-written notes checked against recorded data before publishing, publish time and data time, news-value score, board, coins, and permanent URL. It also discloses default window, count behavior, and detail variants, with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loads the call condition and then moves to return behavior and parameter guidance, so an agent can find the key routing information quickly. It is dense and somewhat repetitive with the schema, but the content is largely purposeful for a complex, zero-required-param tool.

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

Completeness5/5

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

No output schema exists, so the description must explain what comes back; it does so thoroughly with ordering, provenance, field names, defaults, limits, language and card-type filters, and compact/full detail behavior. Given the annotations and full schema coverage, an agent has enough to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six optional parameters. The description mostly restates those defaults and options, adding only marginal context such as count indicating how many came back; baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific resource and scope: the desk's short dated observations written from its own recorded derivatives data. It distinguishes itself from raw-data siblings by framing the output as checked, quotable desk notes and explicitly saying it is information about data, never advice.

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

Usage Guidelines4/5

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

Gives a clear triggering condition: call when the user asks what happened in crypto derivatives today/on a date, what the desk observed, or wants a dated quotable sentence. It implicitly overlaps with many sibling data tools but does not explicitly name alternatives or when not to use this one.

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

get_etf_flowsUS spot Bitcoin, Ethereum, Solana and XRP ETF daily flowsA
Read-only
Inspect

Call this when the user asks about Bitcoin, Ethereum, Solana or XRP spot ETF flows: daily net inflows or outflows, cumulative flow since launch, or total net assets of the US spot ETFs (IBIT, FBTC, ETHA, XRPC and the rest). Returns one row per finalized US trading day and asset with net inflow, total net assets, cumulative inflow since launch and value traded, all in USD. History by asset: BTC and ETH since 2025-05-20, SOL since 2025-10-28, XRP since 2026-09-08.

NameRequiredDescriptionDefault
daysNoHow many most recent trading days to return (default 10).
assetNoFilter to one asset (BTC, ETH, SOL or XRP). Omit for all.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds real value beyond that by disclosing the return grain ('one row per finalized US trading day and asset'), the units (USD), the four returned fields, and per-asset history start dates. It omits anything about caching, rate limits, or what happens when days exceeds available history, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences: trigger first, return shape second, data-coverage caveat last. Every sentence carries distinct information an agent needs before calling, and nothing is repeated from the schema or annotations.

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

Completeness5/5

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

With no output schema, the description compensates by listing the returned fields and row grain, and the per-asset history windows preempt the most likely failure mode (requesting days beyond available data). For a two-parameter read-only tool this is complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description earns above that by clarifying that 'days' counts US trading days and by giving per-asset start dates — which tells the agent that a large 'days' value returns fewer rows for SOL/XRP than for BTC/ETH. The asset enum is left entirely to the schema, which is fine.

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

Purpose5/5

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

States a specific trigger condition plus resource: 'when the user asks about Bitcoin, Ethereum, Solana or XRP spot ETF flows' and enumerates the exact metrics (net inflows/outflows, cumulative flow, total net assets). Names concrete tickers (IBIT, FBTC, ETHA, XRPC) so an agent can map a user question to this tool without opening the schema, and no sibling tool covers ETF flows.

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

Usage Guidelines4/5

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

The 'call this when' clause gives a clear positive trigger and enumerates three distinct user intents (daily net flow, cumulative since launch, total net assets). It does not name an exclusion or a competing tool (e.g. get_series or get_market_indices), but with no close sibling in the list the risk of mis-selection is low.

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

get_factor_boardFactor board: what followed days like today across recorded metricsA
Read-only
Inspect

Call this when the user asks which indicators currently sit in an unusual band, whether a metric's current level historically preceded BTC moves, or for a cross-metric conditional overview. Returns every recorded metric in its historical band with the median 7-day BTC move that followed versus the base rate, with an n >= 30 gate; distributions, not forecasts. Without limit the first 40 rows in the board's own order (rows_total counts every row, trimmed names the cut); pass limit up to 400 for the whole board. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
limitNoOptional. Rows to return, 1..400 (default 40)
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover read-only/open-world, and the description adds real behavioral substance the annotations lack: the n >= 30 significance gate, the 'distributions, not forecasts' caveat, the default 40-row page in board order, rows_total and trimmed reporting, and the 100,000-character ceiling on full answers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The trigger condition is front-loaded in the first clause, followed by return shape and then paging rules, which is the right order. It is dense but nearly every clause carries distinct information; the default/limit point is slightly restated from the schema.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: it names the per-row fields (band, median 7-day follow-through vs base rate), the envelope fields (rows_total, trimmed), and the char ceiling. An agent could call this correctly without further information.

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

Parameters4/5

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

Schema coverage is 100% and already documents both parameters, so the baseline is 3. The description still adds meaning beyond the schema by explaining that trimmed names every cut, that rows_total counts all rows, and that the default ordering is the board's own.

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

Purpose4/5

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

The description states a concrete resource and payload: every recorded metric in its historical band plus the median 7-day BTC move versus base rate, explicitly framed as distributions not forecasts. That is far more than a restatement of the name, though it never names the nearest sibling (e.g. get_metric_context) to say how it differs.

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

Usage Guidelines4/5

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

It gives three explicit triggering user questions ('unusual band', 'historically preceded BTC moves', 'cross-metric conditional overview'), which is unusually actionable. It stops short of exclusions or naming an alternative tool for the single-metric case.

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

get_fee_tableTrading fee schedules per venue, base tier maker and takerA
Read-only
Inspect

Call this when the user asks what an exchange charges to trade, how maker and taker fees compare across venues, whether a venue changed its fees, or what a round trip costs on a given notional. Returns base tier maker and taker per venue and market type (median across pairs where the venue prices per pair) and the fee change log, read daily by ByKaranteli from each venue's own fee endpoint.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description's job is to add context, and it does: data is read daily from each venue's own fee endpoint, and per-pair priced venues are reduced to a median across pairs. It does not disclose coverage gaps or venues lacking a fee endpoint, which is the main remaining behavioral unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Two sentences, front-loaded with the invocation triggers, with no filler. The second sentence is long and packs in return shape, aggregation rule, and provenance, which is dense but still readable; a slight split would improve scannability.

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

Completeness4/5

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

No output schema exists, yet the description states what comes back (maker/taker base tier per venue and market type, plus fee change log) and where it comes from. It stops short of specifying units (percent vs bps), timestamp granularity, or how venues without per-pair pricing are handled.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly frames the output as venue-wide rather than accepting a notional argument, implicitly telling the agent that round-trip math must be done client-side.

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

Purpose5/5

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

The description names a specific resource (trading fee schedules) and a precise scope (base tier maker/taker per venue and market type, plus a fee change log). It clearly separates itself from siblings like get_leverage_tiers, get_venue_profile, or get_venue_markets by talking only about maker/taker pricing.

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

Usage Guidelines4/5

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

Four concrete triggers are given: asking what an exchange charges, comparing maker/taker across venues, checking whether fees changed, and computing round-trip cost on a notional. What is missing is an explicit exclusion or named alternative (e.g. 'for VIP/volume tiers use X'), so the routing is clear but not exhaustive.

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

get_flow_toxicityOrder-flow toxicity (VPIN) for BTC, ETH, SOL perpsA
Read-only
Inspect

Call this when the user asks whether informed or toxic order flow is building, about VPIN, or whether market makers are under pressure in Bitcoin, Ethereum or Solana. Returns the current VPIN (0 = balanced, 1 = fully one-sided), its 90-day percentile, the danger threshold and the 24h average. Elevated readings historically precede volatility; VPIN says nothing about direction.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only annotation, the description explains the VPIN scale, percentile, danger threshold, 24h average, historical implication, and the crucial caveat that VPIN says nothing about direction. This adds substantial interpretation and safety context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two dense sentences front-load the usage trigger and then summarize the return values and interpretation. Every clause carries useful information, with no redundant restatement of the name or annotations.

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

Completeness5/5

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

With no parameters and no output schema, the description fully carries the burden by stating what is returned, how to interpret VPIN, the historical meaning, and the direction caveat. An agent has enough information to call and explain the result correctly.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to clarify. The baseline for a parameterless tool applies, and nothing in the description misrepresents inputs.

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

Purpose5/5

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

The description states a specific metric (VPIN order-flow toxicity) and asset scope (BTC, ETH, SOL perps), plus the exact user questions it answers. It is distinguishable from general positioning or pressure siblings because it is explicitly about informed/toxic order flow and market-maker pressure.

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

Usage Guidelines4/5

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

It gives clear triggering conditions: users asking about informed or toxic flow, VPIN, or market-maker pressure. It does not explicitly name when not to use it or which sibling to use instead, so it falls short of the top score.

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

get_fomc_impactMeasured FOMC impact on BitcoinA
Read-only
Inspect

Call this when the user asks what Bitcoin does on Fed days, how FOMC statements move crypto, or when the next FOMC meeting is. Returns per-statement 5/30/60-minute BTC reactions measured from a minute-resolution record, the average move versus a normal half hour, the up/down split (near a coin flip), and the next meeting date. Description, not prediction.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description adds substantial context beyond that: the data is measured from a minute-resolution record and is descriptive rather than predictive, plus it discloses the shape of results. Beyond annotations, no gaps or return-format issues remain, though pagination/error behavior is unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, front-loaded with when to call, then what is returned. Every clause earns its place, including the 'Description, not prediction' caveat that prevents misuse.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of describing return values — and it does so thoroughly (per-window reactions, benchmark average, up/down split, next meeting date). Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4; there is nothing for the description to clarify or omit.

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

Purpose5/5

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

States a specific verb+resource (measured FOMC impact on BTC) and precisely enumerates what it returns: 5/30/60-minute reactions, average versus a normal half hour, up/down split, next meeting date. It is clearly distinct from siblings like get_macro_liquidity or get_tradfi_board.

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

Usage Guidelines4/5

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

Gives explicit triggering conditions — 'what Bitcoin does on Fed days', 'how FOMC statements move crypto', 'when the next FOMC meeting is' — which is strong context. It does not name a sibling alternative or state when-not to use it, so it stops short of a 5.

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

get_funding_arbitrageCross-exchange funding arbitrage opportunitiesA
Read-only
Inspect

Call this when the user asks about funding arbitrage, funding rate differences between exchanges, or delta-neutral carry trades. Compares funding across every venue on the board, from Binance, OKX and Bybit to Hyperliquid, dYdX and the smaller perp venues fed by the venue snapshot, for 12 major perps and returns the best long/short venue per symbol with gross and net annualized APR (net of taker fees and weekly rebalance cost). Each row lists its first 5 venue legs; pass symbol for every leg of one perp. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
symbolNoOptional. One perp, e.g. BTCUSDT or BTC: its row with every venue leg.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context beyond annotations: the venue coverage, the 12-perp scope, the fact that APR is net of taker fees and weekly rebalance cost, and that each row lists only its first 5 venue legs unless symbol is passed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the usage trigger, then moves efficiently into behavior and parameter guidance. The venue-name list is somewhat long but earns its place by clarifying breadth of coverage; overall it is appropriately sized for the tool.

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

Completeness4/5

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

There is no output schema, so the description must explain the return shape, and it does: best long/short venue per symbol with gross and net APR and limited venue legs per row. It covers the important calling context for a read-only analytics tool, though it could be slightly more explicit about pagination or page limits.

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

Parameters3/5

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

Schema description coverage is 100%, so both detail and symbol are already well documented in the schema. The description largely mirrors that schema text, though 'pass symbol for every leg of one perp' adds a small amount of row-level context. Baseline 3 is appropriate when the schema carries the parameter documentation.

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

Purpose4/5

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

The description states a specific action and scope: it compares funding across venues for 12 major perps and returns the best long/short venue per symbol with gross and net annualized APR. It is clearly about cross-exchange funding arbitrage rather than general funding data, but it does not explicitly distinguish itself from sibling tools such as get_funding_heatmap.

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

Usage Guidelines4/5

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

The opening sentence gives clear trigger conditions: funding arbitrage, funding rate differences between exchanges, or delta-neutral carry trades. It also explains how to use symbol and detail, but it does not name alternatives or state when not to use this tool.

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

get_funding_heatmapFunding rates across the ~30 most traded Binance perpsA
Read-only
Inspect

Call this when the user asks for the full current funding table across the ~30 most traded Binance perps (28-30 rows; contracts without a live funding print are skipped), or the funding rate of one specific coin. For a pre-ranked top-10 of the most extreme funding rates, use get_top_movers instead. Returns per-symbol funding rate (per settlement interval), 24h open interest change and 24h price change for the most traded Binance USDT-M perpetuals. Positive funding means longs pay shorts.

NameRequiredDescriptionDefault
symbolNoOptional. Filter to one symbol, e.g. BTCUSDT or just BTC. Omit to get all 30 rows.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real context beyond that: row count range (28-30), the fact that contracts without a live funding print are skipped, the exact returned fields, and the sign convention for funding. It does not cover rate limits or freshness/latency, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the usage trigger and tightly packed, with no filler sentences. The second and third sentences are long and run-on, which mildly hurts scannability, but every clause carries information.

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

Completeness5/5

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

For a single optional param, read-only tool with no output schema, the description carries the return-shape burden itself (funding rate per settlement interval, 24h OI change, 24h price change) and covers the edge case of skipped symbols. Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the symbol parameter already documents the BTCUSDT/BTC formats and the omit-for-all behavior. The description only restates the omitted-symbol default, so per the rubric baseline 3 applies.

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

Purpose5/5

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

States a specific resource (current funding table across ~30 most traded Binance perps) plus the single-symbol variant, and names the sibling (get_top_movers) it is distinct from. 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.

Usage Guidelines5/5

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

'Call this when the user asks for the full current funding table ... or the funding rate of one specific coin' gives an explicit trigger, and 'For a pre-ranked top-10 of the most extreme funding rates, use get_top_movers instead' provides an explicit alternative with the condition that selects it.

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

get_hl_positionsHyperliquid tracked positions: the liquidation price map of the largest accounts per coin, against the LiqMap modelA
Read-only
Inspect

Call this when the user asks where Hyperliquid whales would be liquidated, how much tracked notional sits at each price, how the largest accounts lean on a coin, or how their liquidation prices compare with the LiqMap model. The universe is the largest accounts by equity on Hyperliquid's public leaderboard, scanned every five minutes; the levels are their own liquidation prices bucketed around the mark. hours returns the hourly archive of level totals.

NameRequiredDescriptionDefault
coinNoCoin as Hyperliquid names it, e.g. BTC, ETH, SOL (default BTC)
hoursNoHours of archive to return, 1..720 (default 24)

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the `readOnlyHint: true` annotation, the description provides crucial behavioral context: the data source ('largest accounts by equity on Hyperliquid's public leaderboard'), the update frequency ('scanned every five minutes'), and the output structure ('levels are their own liquidation prices bucketed around the mark').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The tool utilizes its descriptive space entirely efficiently. Every sentence serves to scope the data, define its source, or describe the expected output format without unnecessary filler.

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

Completeness5/5

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

Despite lacking an output schema, the description provides all necessary context for an agent: what the data represents (liquidation price map), how fresh it is (5-minute scan), and how the resulting levels are categorized, making it a complete tool definition for an agent.

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

Parameters4/5

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

Given 100% schema description coverage, the baseline is high. The description reinforces the context of the parameters by linking 'hours' to an 'hourly archive of level totals' and the 'coin' to 'Hyperliquid names,' adding valuable operational meaning.

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

Purpose5/5

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

The description clearly articulates the tool's specific function: mapping Hyperliquid whale tracked positions to liquidation prices. It provides multiple examples of use cases (notional at each price, comparison to LiqMap) which immediately define its purpose.

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

Usage Guidelines5/5

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

It acts as a precise dispatcher, listing exact user intent phrases that necessitate this tool call. By providing specific data characteristics (tracked accounts, equity leader board) it implicitly defines its scope compared to broader market analysis tools.

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

get_hl_whalesHyperliquid whale tracker: top-300 accounts, long vs short, positions, changesA
Read-only
Inspect

Call this when the user asks what Hyperliquid whales are doing, whether the biggest Hyperliquid accounts are net long or short a coin, for the largest open positions with liquidation prices, or what large accounts just opened, closed or flipped. Returns the live board of the 300 largest accounts by equity (scanned every 5 minutes, addresses only) and with events the last 200 position changes. Without coin, the 30 largest coins and positions; pass coin, or limit (up to 200) for more. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
coinNoOne coin, e.g. BTC
limitNoOptional. Coins and positions without coin, largest first (default 30).
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
eventsNoInclude the last 200 position change events

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds what annotations cannot: the 5-minute refresh cadence, that data is addresses-only, and the 100,000 character ceiling with remediation advice. It does not state degradation behavior when the scan is stale or unavailable, but the substantive behavioral context is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The trigger conditions are correctly front-loaded, but the second sentence is a dense six-clause run-on that merges return contents, defaults and parameter advice into one breath. Every clause carries information, yet the packing forces re-reading and would be clearer split apart.

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

Completeness4/5

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

There is no output schema, so the description must describe returns and does: the live board, positions with liquidation prices, and optional last-200 change events. It stops short of describing the fields per row (entry price, notional, PnL) or the trimmed-metadata behavior, which leaves some ambiguity for an agent reporting results to a user.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the interplay between parameters — without coin the limit applies to the 30 largest coins and positions, and with coin it narrows scope. That cross-parameter relationship is genuinely additive rather than a restatement of the schema.

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

Purpose5/5

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

States a specific verb and resource: a live board of the 300 largest Hyperliquid accounts by equity, with long vs short, positions, liquidation prices and recent changes. An agent can tell this apart from generic positioning tools because the description names the venue, the account population and the ranking metric.

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

Usage Guidelines4/5

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

Opens with explicit trigger conditions ("Call this when the user asks what Hyperliquid whales are doing, whether the biggest accounts are net long or short a coin...") covering four distinct question types. It also states default behavior without a coin. It does not name the nearest sibling, get_hl_positions, or say when that is the better choice, so routing against alternatives is left implicit.

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

get_insurance_fundsExchange insurance funds: size, 24h and 7d change, fund against open interest, daily historyA
Read-only
Inspect

Call this when the user asks how big an exchange's insurance fund is, whether a fund is shrinking or was used after a crash, how much exchanges hold to absorb bankrupt liquidations, or how a fund compares with the venue's open interest. Returns the latest hourly reading per covered venue (every exchange the insurance fund board lists): the fund in USD (OKX's own published total, the sum of priced pools elsewhere), per asset, 24h and 7d change, the fund as a percent of the venue's perpetual open interest on the coins ByKaranteli tracks, and daily closes per venue. Set pools to include every pool row (the contracts it covers, asset, balance, USD). A fund is a balance the venue reports, not an audit of its reserves.

NameRequiredDescriptionDefault
poolsNoInclude every pool row (large for Binance and Bybit). Default false.
venueNoOne venue; omit for every covered venue.
history_daysNoDays of daily closes (default 30, max 366).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint, yet the description adds substantial context beyond them: data is a latest-hourly reading per venue, coverage spans every exchange on the insurance fund board, USD figures are OKX's own published total versus summed priced pools elsewhere, and a caveat that 'a fund is a balance the venue reports, not an audit of its reserves.' That precision and the methodological caveat are genuinely useful for interpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loads the trigger scenarios, then the return shape, then the one parameter nuance and a caveat — a logical order with no filler. The single long paragraph is dense; breaking the return inventory into a tighter clause list would improve scannability slightly.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining returns — and it does, covering the metric set, the venue coverage, the hourly cadence, and the per-venue daily history. An agent has everything needed to decide and invoke.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning: it explains exactly what 'pools' unlocks (contracts covered, asset, balance, USD) beyond the schema's terse 'large for Binance and Bybit' note. It also ties history output to 'daily closes per venue' without contradicting the schema's 1-366 day range.

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

Purpose5/5

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

States a specific verb+resource (retrieve exchange insurance fund data) and enumerates the exact metrics returned: fund size in USD, per asset, 24h/7d change, percent of perpetual open interest, and daily closes. This is clearly distinguishable from siblings like get_open_interest or get_venue_profile.

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

Usage Guidelines4/5

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

Opens with explicit trigger conditions ('Call this when the user asks how big... whether a fund is shrinking or was used after a crash... how much exchanges hold to absorb bankrupt liquidations... how a fund compares with open interest'). It does not name a specific alternative sibling to use instead for the underlying OI data, but the when-to-use context is unambiguous.

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

get_iv_surfaceOptions implied-volatility surface and 25-delta skewA
Read-only
Inspect

Call this when the user asks about implied volatility by strike or expiry, skew, put versus call IV, term structure of IV, or whether downside protection is expensive. Returns the IV surface (expiry x moneyness), per-expiry ATM / 25-delta put and call IV, skew and butterfly, and the constant-30d history, from the daily Deribit chain.

NameRequiredDescriptionDefault
currencyNoBTC or ETH, default BTC

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, open-world data lookup, so the description does not need to carry the safety profile. It still adds useful context by naming the data source (daily Deribit chain) and enumerating the returned fields, which helps since there is no output schema; it stops short of disclosure about freshness, latency, or snapshot timing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, front-loaded with the selection trigger and followed by the return contents. Every clause earns its place and there is no filler.

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

Completeness5/5

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

With no output schema and only one fully documented parameter, the description supplies exactly the missing information: what analytical questions it answers and what fields the response includes. An agent can decide to call it and interpret the result without further context.

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

Parameters3/5

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

The single currency parameter has full schema description coverage and an enum, so the schema already documents it completely. The description does not mention currency at all, so it adds no meaning beyond the schema; baseline 3 is appropriate.

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

Purpose5/5

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

The description states a precise resource (implied-volatility surface and 25-delta skew) and enumerates the exact analytical questions it answers (IV by strike/expiry, skew, put vs call IV, term structure, downside protection cost). Those triggers distinguish it clearly from siblings like get_options_chain, get_options_snapshot, and get_options_flow.

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

Usage Guidelines4/5

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

It gives explicit when-to-use triggers tied to user questions about IV, skew, term structure, and downside protection cost. It does not name an alternative tool or state when not to use it, but the trigger conditions are specific enough to route most calls correctly.

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

get_jupiter_perpsJupiter Perps (Solana): exact long/short OI, utilization, borrow rates, weekly top tradersA
Read-only
Inspect

Call this when the user asks about Jupiter perpetuals on Solana: long versus short open interest per market (SOL, ETH, BTC) read from the on-chain custody state, pool utilization and hourly borrow rates, JLP pool AUM and APR, 24h volume, or the week's top traders by realized PnL. Pass base and history_days for the hourly OI history.

NameRequiredDescriptionDefault
baseNoMarket base: SOL, ETH or BTC
history_daysNoInclude hourly OI history for the base, 1..30 days

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered; the description adds genuine context by stating the OI figures come from on-chain custody state, which tells the agent the data is authoritative/derived rather than estimated. It does not mention freshness/latency, rate limits, or the shape of the response, so with annotations doing the heavy lifting a 3 is right.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, zero padding, and the trigger condition is front-loaded before the enumeration of returned data. Every clause earns its place by mapping to a distinct piece of output the agent can expect.

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

Completeness4/5

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

With no output schema, the description carries the burden of telling the agent what comes back, and the enumerated fields (OI, utilization, borrow rates, AUM/APR, volume, top traders) do that well. What is missing is any guidance on when history_days should be omitted versus set, though with both parameters optional that is a minor gap.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description's final sentence ('Pass base and history_days for the hourly OI history') adds a small amount by implying the two interact — history_days yields hourly OI history for the chosen base — but it repeats rather than enriches the schema text.

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

Purpose4/5

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

States a specific verb-by-implication ('call this when the user asks about') plus a precise resource: Jupiter perpetuals on Solana, with an enumerated list of the data it returns (long/short OI, utilization, borrow rates, JLP AUM/APR, volume, top traders). Naming Jupiter distinguishes it in substance from the generic siblings get_solana_perps and get_open_interest, but it never explicitly says how it differs from them, leaving some overlap for the agent to resolve.

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

Usage Guidelines4/5

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

Gives a clear invocation trigger ('when the user asks about Jupiter perpetuals on Solana') tied to named user intents. There are no exclusions or explicit alternatives ('use get_solana_perps instead when...'), which keeps it below a 5 given the crowded sibling set of perps/OI tools.

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

get_lead_lagVenue lead-lag: who moves first (Coinbase, Kraken, Binance)A
Read-only
Inspect

Call this when the user asks which exchange leads price discovery or whether spot or perp moves first. Returns per-pair daily cross-correlations of one-minute returns at lags -3..+3 and the lead asymmetry, with the share of days each venue led. Each pair's daily rows cover the last 7 days (its summary covers the whole window); pass days (up to 30) for more.

NameRequiredDescriptionDefault
daysNoOptional. Daily rows per pair, newest kept (default 7, up to 30).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description's job is supplementary and it delivers: it discloses the return shape (daily rows vs. whole-window summary), the lag range, and the rolling coverage window. It does not mention rate limits or data-source freshness, keeping it just short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, front-loaded with the trigger before the return description, then the parameter nuance. Nothing is redundant or padding.

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

Completeness5/5

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

With no output schema, the description must explain return values, and it does — lag structure, lead asymmetry, and per-venue share of leading days. Combined with the single optional well-documented parameter and read-only annotations, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description goes slightly further by explaining the consequence of the parameter — the default 7-day daily rows versus the whole-window summary, and that 'days' up to 30 extends coverage. It largely restates the schema's default/max, so the added value is modest.

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

Purpose5/5

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

Names a specific analytical artifact (per-pair daily cross-correlations of one-minute returns at lags -3..+3 plus lead asymmetry) rather than restating the tool name. The venue-focus (Coinbase, Kraken, Binance) and spot-vs-perp framing let an agent tell it apart from generic correlation siblings like get_correlations.

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

Usage Guidelines4/5

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

Opens with an explicit trigger: 'Call this when the user asks which exchange leads price discovery or whether spot or perp moves first.' That is a clear usage condition, but no exclusion or named alternative (e.g. get_correlations) is offered for overlapping questions.

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

get_leverage_tiersLeverage tiers: max leverage and maintenance margin per perpetual on every venueA
Read-only
Inspect

Call this when the user asks how much leverage an exchange allows on a coin, what the maintenance margin or risk limit ladder is, which venue offers the highest leverage for a symbol, or whether an exchange recently cut leverage. Returns the current ladder per venue (tier, notional floor and cap, max leverage, maintenance margin rate) recorded daily by ByKaranteli, plus a change log. Pass symbol for one base asset (e.g. SOL) and venue for one exchange (bybit, okx, gate, htx, bitget, mexc). Without symbol, the first 30 rows of each list and the first 5 tiers of each ladder; pass symbol for every tier, or limit (up to 300).

NameRequiredDescriptionDefault
limitNoOptional. Rows per list without symbol (default 30).
venueNostring, optional venue id, e.g. bybit
symbolNostring, optional base asset, e.g. BTC

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds real context beyond that — provenance (recorded daily by ByKaranteli), a change log alongside current tiers, and truncation behavior (first 30 rows / first 5 tiers, up to 300) so the agent can anticipate incomplete results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Triggers come first, then return contents, then parameter behavior — well front-loaded. The final sentence packs three conditional clipping rules together and reads slightly run-on, costing a bit of clarity.

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

Completeness5/5

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

No output schema exists, yet the description enumerates the returned fields and the change log, and discloses pagination/clipping defaults. An agent has everything needed to call it and interpret the response without guessing.

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

Parameters5/5

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 materially: it gives the base-asset convention for symbol (e.g. SOL), enumerates valid venue ids that the schema lacks (bybit, okx, gate, htx, bitget, mexc), and explains the symbol/limit interaction that the schema leaves implicit.

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

Purpose5/5

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

States a specific resource (leverage ladder per venue: tier, notional floor/cap, max leverage, maintenance margin) and the exact questions it answers, which cleanly separates it from siblings like get_fee_table or get_venue_profile.

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

Usage Guidelines5/5

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

Opens with explicit triggers (leverage allowance per coin, maintenance margin/risk limit ladder, highest-leverage venue, recent leverage cuts), so an agent knows precisely when to select it. It also explains the consequence of omitting symbol versus supplying it.

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

get_liqmapLiqMap: estimated liquidation clusters with real prints overlaidA
Read-only
Inspect

Call this when the user asks where liquidation clusters or liquidity pools sit for a perpetual, where leveraged longs/shorts would get liquidated, or for a liquidation heatmap reading. Returns the LiqMap snapshot for one symbol: modeled liquidation levels by price, zone aggregates and real liquidation prints from every liquidation venue ByKaranteli counts (listed on bykaranteli.com/coverage). On the Free plan the 24h view; on Builder and higher plans every timeframe from 1h to 30d. By default the 30 real levels nearest the price and the 30 largest real prints; pass detail "full" for all of them. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
symbolNoSymbol like BTCUSDT (bare BTC accepted). Default BTCUSDT.
timeframeNoModel window. Default 24h, the only one on the Free plan; Builder and higher plans get every window.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly and open-world behavior. The description adds valuable context beyond that: plan-based timeframe access, default capping to the 30 nearest levels and 30 largest prints, and what detail modes change.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the invocation trigger and return summary, then adds plan and detail behavior. It is somewhat repetitive with the schema around detail modes, but the repetition is functional rather than noisy.

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

Completeness5/5

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

For a read-only, open-world analytics tool with no output schema, it explains when to use it, what the response contains, plan limitations, default truncation, and detail-mode behavior. An agent has enough context to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already explains detail, symbol, and timeframe. The description still adds useful default-output semantics, notably the 30 levels / 30 prints cap and how detail full or compact alters the result.

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

Purpose5/5

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

States a specific operation and resource: returns a LiqMap snapshot with modeled liquidation levels, zone aggregates, and real liquidation prints. It clearly distinguishes this from generic liquidation-list siblings by naming clusters/heatmap and one-symbol scope.

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

Usage Guidelines4/5

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

Gives explicit user-intent triggers such as where liquidation clusters sit, where leveraged longs/shorts would be liquidated, or reading a liquidation heatmap. It does not explicitly compare against siblings like get_liquidations or get_liquidation_cascades, 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.

get_liquidation_cascadesAuto-detected liquidation cascades (forensic case file)A
Read-only
Inspect

Call this when the user asks what caused a recent crash or flush, about liquidation cascades, or who got liquidated. Returns auto-detected cascade incidents: when, total notional flushed, long/short split, which coins led, and BTC's move during the window. Totals are an honestly-labeled lower bound from a real liquidation tape.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=true, openWorldHint=true), and the description adds non-obvious context: the totals are 'an honestly-labeled lower bound from a real liquidation tape,' which tells the agent the figures are flooring estimates derived from observed data. It stops short of disclosing lookback depth, incident count, or aggregation methodology.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three tight sentences: trigger first, return payload second, data-quality caveat last. No filler, and the most decision-relevant information (when to call) is front-loaded.

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

Completeness4/5

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

With no output schema, the description carries the return-shape burden and does so by enumerating the incident fields. However, a zero-parameter tool gives the agent no control over scope, and the description never states the lookback window or how many incidents come back — relevant since the user's 'recent crash' may not match the detector's window.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description usefully fills the vacated space by describing what the parameterless call returns.

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

Purpose4/5

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

Names a specific deliverable ('auto-detected cascade incidents') and enumerates the returned fields (timing, notional flushed, long/short split, leading coins, BTC move), which distinguishes it from the raw-tape sibling get_liquidations. It does not explicitly name siblings, and the phrase 'who got liquidated' partially overlaps with get_liquidation_leaderboard, so the differentiation is strong but not airtight.

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

Usage Guidelines4/5

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

Opens with an explicit invocation trigger: 'Call this when the user asks what caused a recent crash or flush, about liquidation cascades, or who got liquidated.' That gives clear context for selection, though it states no exclusions or conditions pointing to alternative tools.

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

get_liquidation_leaderboardLargest single liquidations and a 30-day session heatmap (counted venue feeds)A
Read-only
Inspect

Call this when the user asks for the biggest liquidation today or this week, who got liquidated for the most, the largest single liquidation print, or when in the day or week liquidations cluster (Asia, Europe or US hours, weekday by UTC hour). Returns the largest single liquidation prints of the last 24h, 7d or 30d (rank, symbol, venue, side where SELL means a long was liquidated, price, quantity, notional, millisecond time) recorded from the counted venues' public feeds, plus a 30-day weekday by UTC hour heatmap with hour, weekday and session totals. Binance publishes at most one print per second per symbol, so its rows are a floor.

NameRequiredDescriptionDefault
daysNoDays folded into the session heatmap (default 30).
limitNoRows to return (default 25, max 100).
windowNoRanking window: 24h (default), 7d or 30d.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds materially useful context: the data comes from 'counted venues' public feeds', SELL means a long was liquidated, and Binance's one-print-per-second-per-symbol cap makes its rows a floor. Those caveats go beyond structured fields and prevent misreading the ranking as exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Two sentences, front-loaded with the trigger conditions before the return description, and no filler. The second sentence is long and run-on, packing rank/symbol/venue/side/price/quantity/notional/time into a parenthetical, but every element is informative.

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

Completeness4/5

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

No output schema exists, so the description must explain the return payload — it does so field by field and includes the heatmap dimensions and a data-quality caveat. What remains unstated is pagination/truncation behavior on limit and whether venue coverage varies by window, which are secondary for a read-only leaderboard.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents its meaning, default, and bounds, so the schema does the heavy lifting. The description reaffirms the 24h/7d/30d window and the days-to-heatmap relationship but adds no syntax or edge-case detail beyond what is structured.

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

Purpose4/5

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

States a specific resource and scope: the largest single liquidation prints plus a 30-day weekday-by-UTC-hour session heatmap, with explicit window options. It distinguishes itself from a generic liquidations feed by emphasizing 'largest single prints' and the clustering heatmap, though it never names which sibling to use instead.

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

Usage Guidelines4/5

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

Opens with concrete triggering questions ('biggest liquidation today or this week', 'who got liquidated for the most', 'when in the day or week liquidations cluster'), giving clear context for selection. It stops short of exclusions, e.g. it does not say when to prefer get_liquidations, get_liquidation_cascades, or get_liqmap.

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

get_liquidationsCrypto liquidations: daily long/short totals per symbol and exchangeA
Read-only
Inspect

Call this when the user asks how much was liquidated in crypto futures, whether longs or shorts got flushed, or for liquidation history. Returns daily long and short liquidation totals in USD per symbol and exchange, recorded from ByKaranteli's own stream collectors on every liquidation venue it counts, listed on bykaranteli.com/coverage (recorded events, a floor, not estimates). One row per finalized UTC day, symbol and exchange; history begins 2026-07-30 and grows daily. Without symbol, rows holds the first 30 rows (newest day, largest first) while summary covers every matching row; pass symbol or limit (up to 400) for more rows.

NameRequiredDescriptionDefault
daysNoHow many most recent days to return (default 7).
limitNoOptional. Rows to return, newest day first and largest first within a day (default 30 without symbol, 400 with one).
symbolNoOptional symbol filter like BTCUSDT or ETHUSDT. Omit for all symbols.

TDQS

A4.7/5.0
Behavior5/5

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

With readOnlyHint and openWorldHint already set, the description adds substantial behavioral context: the data comes from own stream collectors, represents recorded events as a floor rather than estimates, covers a list of venues on a coverage page, starts at a specific date, and grows daily. It also clarifies the rows-versus-summary behavior, which is important for interpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is front-loaded with the primary use case and return shape. It is dense but every sentence earns its place by covering provenance, limitations, granularity, history start, and pagination behavior.

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

Completeness5/5

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

For a read-only query tool with no output schema, the description explains the return structure (daily long/short totals per symbol and exchange), the rows versus summary distinction, the history start date, and how to expand results. Nothing essential is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents default limits and ordering. The description adds useful meaning beyond the schema by explaining that without a symbol the rows array holds the first 30 rows while summary covers every matching row, and that passing symbol or limit returns more rows.

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

Purpose5/5

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

The description states a specific verb and resource: it returns daily long and short liquidation totals in USD per symbol and exchange. The granularity (one row per finalized UTC day, symbol, exchange) clearly distinguishes it from sibling tools like get_liquidation_cascades, get_liquidation_leaderboard, and get_liqmap, even without naming them explicitly.

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

Usage Guidelines4/5

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

It gives a clear triggering condition: call this when the user asks how much was liquidated, whether longs or shorts got flushed, or for liquidation history. It also explains how to get more rows via symbol or limit. However, it does not explicitly say when to prefer a sibling such as get_liquidation_cascades or get_liquidation_leaderboard instead.

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

get_macro_liquidityMacro liquidity: Fed funds, 10y, balance sheet, RRP, stablecoin supplyA
Read-only
Inspect

Call this when the user asks about macro liquidity, the Fed balance sheet, reverse repo, rates or stablecoin supply in relation to crypto. Returns the recorded daily series and latest values. Without days, each series holds its newest 7 points; pass days for the daily series, and series for one key over a long window.

NameRequiredDescriptionDefault
daysNoWindow in days, 30-4000; the route clamps to that range. Omit for the newest 7 points of each series.
seriesNoOptional. One series key from the answer's series field, e.g. fred_walcl_busd.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral detail beyond that: the return consists of recorded daily series plus latest values, and omitting days yields only the newest 7 points per series, which is a meaningful default an agent must know. It does not discuss data freshness, source, or gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Three sentences, front-loaded with the trigger, then return shape, then parameter guidance. No filler. Slightly dense phrasing ("pass days for the daily series, and series for one key over a long window") but every clause carries information.

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

Completeness4/5

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

For a two-parameter, no-required-argument read tool with no output schema, the description covers trigger, return shape, and default window behavior. The only gap is that it does not enumerate or point to how an agent discovers valid series keys beyond the schema's note about the answer's series field.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds the interaction between the two parameters: days controls the daily series, series narrows to one key over a long window. That combination logic is not obvious from either schema field alone, so it earns above baseline.

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

Purpose4/5

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

States a specific resource (macro liquidity: Fed balance sheet, reverse repo, rates, stablecoin supply) and what it returns (recorded daily series and latest values). An agent can tell it is a macro-series reader rather than an on-chain or venue tool. It stops short of naming a sibling it could be confused with, such as get_series or get_tradfi_board.

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

Usage Guidelines4/5

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

"Call this when the user asks about macro liquidity, the Fed balance sheet, reverse repo, rates or stablecoin supply in relation to crypto" gives an explicit trigger condition. It also tells the agent which parameter form to pick: omit days for short default windows, supply days for the daily series, supply series for one key over a long window. No exclusion of alternatives is stated.

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

get_market_indicesCrypto market indices (Fear & Greed, BTC dominance, euphoria)A
Read-only
Inspect

Call this when the user asks about overall crypto market sentiment or macro state: the Fear & Greed index (today and yesterday), Bitcoin dominance percentage, total market cap, or the Retail Euphoria composite. Live values refreshed about every 30 minutes.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=true. The description adds useful behavioral context beyond that: values are live and refreshed roughly every 30 minutes, and Fear & Greed includes today and yesterday. It does not describe error behavior or exact freshness guarantees, but the added cadence detail is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

It is a single compact sentence that front-loads the use case and enumerates the returned data points. Every clause contributes useful selection or freshness information, with no repetition of annotations.

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

Completeness4/5

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

For a zero-parameter read-only tool without an output schema, the description is nearly complete: it lists the main values returned and notes refresh cadence. It could be slightly stronger by clarifying the exact shape or units of the composite/dominance values, but nothing essential to invocation is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty at 100% coverage, so there is no parameter semantics burden. The description correctly does not invent parameter details.

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

Purpose4/5

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

The description names specific indices (Fear & Greed, Bitcoin dominance, total market cap, Retail Euphoria) and a clear use context, so the agent knows exactly what data this tool returns. It does not explicitly contrast itself with similarly themed siblings such as get_altseason, get_cycle_indicators, or get_pressure_scores, which keeps it from a 5.

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

Usage Guidelines4/5

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

It gives a clear trigger condition: 'when the user asks about overall crypto market sentiment or macro state.' That is strong usage context, but it offers no explicit exclusions or named alternatives for overlapping sentiment/macro tools.

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

get_market_profileMarket Profile: daily TPO profile of a perpetual, point of control, value area, initial balance, naked POCsA
Read-only
Inspect

Call this when the user asks about a perpetual's Market Profile, TPO profile, point of control (POC), value area (VAH, VAL), initial balance or naked (untested) points of control. Returns one row per closed UTC day from ByKaranteli's own one-minute bars of the Binance USDT-M perpetual (30-minute TPO periods, buckets of 0.05% of the day's open, 70% value area, first-hour initial balance, volume point of control), the naked points of control of the last 60 recorded days and the latest day's profile per price bucket. Symbols without recorded minute bars return no_profile.

NameRequiredDescriptionDefault
daysNoClosed UTC days, newest first, 1..30 (default 7)
symbolNoTicker such as BTC or BTCUSDT (default BTC)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only cover readOnly and openWorld; the description adds substantial behavior: data provenance (ByKaranteli's own one-minute Binance USDT-M bars), the exact construction (30-minute TPO periods, 0.05% buckets of the day's open, 70% value area, first-hour IB, volume POC), and a documented empty-result path ('no_profile'). It does not mention rate limits, latency, or whether the last 60-day naked-POC window is truncated by the days parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

It is front-loaded with the activation condition and then the return payload, with no filler sentences. The second sentence is very long and dense with parenthetical method detail, which slightly hurts scanability but every clause carries information.

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

Completeness4/5

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

With no output schema, the description must carry the return shape, and it does: per-day rows, naked POCs, latest-day bucket profile, plus the no_profile failure mode. It is complete enough to invoke correctly; only the interaction between the days parameter and the fixed 60-day naked-POC window is left ambiguous.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (days 1..30 default 7, symbol pattern) are already fully documented, which sets the baseline at 3. The description adds context about what 'days' means in output terms (one row per closed UTC day, naked POCs over the last 60 recorded days) but does not reconcile how the 60-day naked-POC window interacts with the days cap.

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

Purpose5/5

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

The first sentence names the specific resource (Market Profile / TPO profile) and enumerates the concepts it resolves — POC, value area, initial balance, naked POCs — which no sibling tool covers. A reader can tell this apart from get_venue_profile or get_series 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.

Usage Guidelines4/5

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

The description opens with an explicit trigger ('Call this when the user asks about a perpetual's Market Profile, TPO profile, POC...'), giving the agent a clear activation condition. It stops short of naming when NOT to use it or which sibling to prefer for adjacent questions (e.g. get_venue_profile, get_series).

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

get_metric_contextHistorical context for any recorded metric (conditional distribution)A
Read-only
Inspect

Call this when the user asks whether a metric's current reading is high or low, or what happened after similar readings. Buckets today's value against the metric's own recorded daily history and returns the median forward BTC return and up-share per bucket at +1/+3/+7 days, with the all-days base rate alongside. Honesty rules: buckets under 30 days are suppressed, and most metrics do NOT separate from the base rate; the interpretation says so plainly. History, not a forecast. Metrics include coinbase_premium_pct, kraken_btc_premium_pct, dvol_btc, fear_greed, funding_btc_daily_pct, etf_btc_net_flow_usd, vpin_btc, altseason_index, stablecoin_total_mcap_busd, fred_dff, fred_dgs10, fred_walcl_busd, fred_rrp_busd and the btc_* network series.

NameRequiredDescriptionDefault
metricYesMetric key, e.g. coinbase_premium_pct, fear_greed, altseason_index, stablecoin_total_mcap_busd.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark it read-only and open-world, and the description adds substantive behavioral detail: buckets under 30 days are suppressed, most metrics do not separate from the base rate, and the interpretation says so plainly. That is exactly the kind of caveat an agent needs before reporting a result to a user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the trigger, then the mechanics, then the honesty rules — a sensible order with no filler sentences. The trailing metric enumeration is long but functional, listing the namespace rather than restating the schema.

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

Completeness5/5

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

For a single-parameter read tool with no output schema, the description carries the full burden and does so: it describes the returned fields (median forward BTC return, up-share at +1/+3/+7 days, all-days base rate), the suppression threshold, and the interpretation caveat. Nothing needed to call or interpret it is missing.

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

Parameters4/5

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

Schema coverage is 100% with a pattern constraint and four example keys, so the baseline is 3. The description adds real value by enumerating the full accepted metric namespace (dvol_btc, vpin_btc, fred_* series, btc_* network series), which the schema only hints at.

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

Purpose5/5

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

States a specific verb and resource — bucketing a metric's current value against its own daily history and returning forward-return statistics per bucket. Distinguishes itself from sibling lookups like get_series or get_market_profile by framing the output as conditional distribution vs. base rate.

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

Usage Guidelines5/5

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

Opens with an explicit trigger condition: call it when the user asks if a reading is high/low or what happened after similar readings. It also sets an explicit boundary with 'History, not a forecast,' telling the agent what this tool is not for.

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

get_network_healthBitcoin network health from our own nodeA
Read-only
Inspect

Call this when the user asks about Bitcoin hashrate, difficulty or block fees (our node runs blocksonly, so there is no mempool series). Returns the recorded daily series and latest values measured on ByKaranteli's own node. Without days, each series holds its newest 7 points; pass days for the daily series, and series for one key over a long window.

NameRequiredDescriptionDefault
daysNoWindow in days, 30-4000; the route clamps to that range. Omit for the newest 7 points of each series.
seriesNoOptional. One series key from the answer's series field, e.g. btc_hashrate_ehs.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds genuinely useful context the annotations lack — the node is blocksonly, mempool data is absent, and the default window is the newest 7 points. It stops short of describing response shape beyond 'recorded daily series and latest values'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Three tight sentences, front-loaded with the invocation trigger, followed by what is returned and how the two parameters behave. Nothing is redundant enough to cut, though the parameter sentence is somewhat compressed.

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

Completeness4/5

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

With only two optional parameters, no output schema and read-only annotations, the description supplies what is needed: the metric coverage, the data-source limitation, the default window, and the existence of a series key field. A note on the returned series keys or units would close the remaining gap.

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

Parameters4/5

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

Schema coverage is 100% and both parameters are documented there, so the baseline is 3. The description still adds interaction semantics the schema does not: days applies to the daily series, series selects one key over a long window, and omitting both yields 7 points per series.

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

Purpose5/5

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

States a specific verb and resource — returns recorded daily series and latest values for Bitcoin hashrate, difficulty and block fees — and scopes it to the operator's own node. The blocksonly caveat explicitly distinguishes it from any mempool-based sibling, so an agent can pick 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.

Usage Guidelines4/5

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

Opens with an explicit 'Call this when the user asks about...' trigger covering the three relevant metrics and an exclusion (no mempool series). It explains the no-args vs days vs series modes, but never names a sibling as an alternative for overlapping questions like fee tables.

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

get_new_listingsNew and delisted perpetual contractsA
Read-only
Inspect

Call this when the user asks what new perpetuals were listed, which exchange listed a coin first, or about delistings. Returns listings and delistings across every exchange the hourly scan covers. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
daysNoWindow in days, 1-30 (default 30). Longer listing history is the listings dataset at bykaranteli.com/data.
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint and openWorldHint, so safety is already covered; the description adds real context beyond that -- the data comes from an hourly scan and spans every covered exchange, and the detail flag trades page size against completeness. It stops short of describing ordering, freshness lag, or result shape in any detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences: trigger first, coverage second, parameter guidance last. Every sentence carries distinct information and nothing is repeated from the annotations or the name.

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

Completeness4/5

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

With no output schema, the description does the work of explaining what comes back (listings plus delistings across exchanges) and how 'detail' changes the payload. The one gap is the time-window dimension -- the 30-day default and the cut-off to the external dataset are left entirely to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the 'detail' parameter's compact/full tradeoff in plain language, which is mild added value, but it says nothing about the 'days' window -- the 1-30 day constraint and the pointer to the external listings dataset live only in the schema.

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

Purpose5/5

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

The description names a specific resource (new and delisted perpetual contracts) and a specific scope (across every exchange the hourly scan covers), which no sibling tool covers -- get_jupiter_perps and get_solana_perps are venue-specific market views, not listing/delisting feeds. The opening line maps directly to user question phrasing, so the tool's role is unambiguous.

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

Usage Guidelines4/5

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

It gives explicit user-question triggers ('what new perpetuals were listed', 'which exchange listed a coin first', 'about delistings') that tell an agent exactly when to reach for it. It does not name an alternative tool or state when NOT to use it, which keeps it short of a 5.

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

get_open_interestIntraday open interest and leverage regimes (10 major perps)A
Read-only
Inspect

Call this when the user asks whether leverage is entering or leaving the market, about open interest changes, or whether longs or shorts are building in a major coin. Returns 5-minute-resolution OI with 24h OI and price deltas and a four-regime read per symbol: longs building, shorts building, long squeeze, short squeeze, or quiet.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint), yet the description still adds meaningful behavior: 5-minute resolution, the exact deltas returned, and the five regime labels the output can take. It omits any note about how fresh the data is, which symbols are covered beyond 'major perps', or rate limits, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, no filler: the first front-loads the trigger conditions, the second front-loads the return shape. Every clause carries information an agent would otherwise have to guess.

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

Completeness4/5

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

Given no output schema and no parameters, the description does the heavy lifting by specifying resolution, deltas, and regime categories, which is enough to decide relevance and interpret results. A brief note on the symbol universe or refresh cadence would close the remaining gap.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the baseline is 4, and the description correctly signals that results are returned per symbol rather than requiring a symbol argument. No further parameter meaning is needed or missing.

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

Purpose4/5

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

The description names a specific resource (5-minute open interest with 24h OI and price deltas) and a distinctive analytical output (four-regime read per symbol), so an agent knows exactly what comes back. It stops short of naming which sibling (e.g. get_funding_heatmap or get_positioning) to prefer, so differentiation is implied by the regime framing rather than stated.

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

Usage Guidelines4/5

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

Gives three concrete trigger questions – leverage entering/leaving, OI changes, longs vs shorts building – which is strong when-to-call guidance. It offers no when-not-to-call conditions and does not point to a competing tool for adjacent questions like funding or liquidations.

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

get_options_chainOptions chain hour by hour: open interest and IV per expiry and strike, the change over 1h and 24h, the ATM IV pathA
Read-only
Inspect

Call this when the user asks how the BTC or ETH option chain moved today or over the last day: open interest and mark IV per expiry and strike from ByKaranteli's own hourly capture of every listed venue, the change over the last hour and the last 24 hours, and the front expiry's ATM IV hour by hour. The Free plan lists the largest strikes; Builder and higher plans list every strike. Recorded from 2026-09-30, so the first days carry a short history.

NameRequiredDescriptionDefault
venueNoOne venue or all (default all)
expiryNoExpiry as DDMONYY, e.g. 31OCT26 (default: every expiry)
strikesNotop (largest strikes) or all (Builder and higher plans)
currencyNoBTC or ETH (default BTC)

TDQS

A3.6/5.0
Behavior3/5

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

With readOnlyHint and openWorldHint already declared, the description adds real value: it discloses the data source (own hourly capture across every listed venue), plan gating (Free = largest strikes, Builder+ = all strikes), and a hard history boundary (recorded from 2026-09-30, so early days have short history). It does not cover payload shape, pagination, or latency, but with annotations carried elsewhere a 3 fits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

A single dense but well-ordered block: trigger first, payload second, plan/history caveats last. Every clause carries content (source, fields, plan limits, history start), though the sentence runs long enough that an agent must parse carefully.

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

Completeness4/5

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

For a read-only analytical tool with a fully described 4-param schema and no output schema, the description covers the trigger, the returned fields, the venue scope, plan-tier limits, and the history truncation caveat. The main remaining gap is a sense of response shape/granularity (row-per-strike-per-hour vs. summary), which is only inferable.

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

Parameters3/5

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

Schema coverage is 100% and three of four params are enums with their own descriptions, so the schema does the heavy lifting and the baseline applies. The description adds only the plan-constrained meaning of strikes=all and the default-every-expiry behavior, which is marginally useful but largely redundant with the schema.

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

Purpose4/5

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

States a concrete trigger and resource: 'when the user asks how the BTC or ETH option chain moved today or over the last day', plus the exact payload (OI and mark IV per expiry/strike, 1h/24h change, front-expiry ATM IV path). This implicitly separates it from snapshot-style siblings like get_options_snapshot and get_iv_surface, but it never names those siblings explicitly.

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

Usage Guidelines4/5

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

Gives an explicit, actionable call condition ('moved today or over the last day'), which is more than most siblings offer. It stops short of naming alternatives or stating when another options tool (snapshot, flow, IV surface) is the better choice.

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

get_options_flowOptions tape: biggest prints and premium flow (BTC + ETH)A
Read-only
Inspect

Call this when the user asks what big options players are buying, about block trades, or whether call or put premium dominates today. Returns 24h call vs put premium bought (net of the sold legs of the same multi-leg block or combo, so a spread counts its net premium), the block-trade share, the multi-leg structure count, and the largest prints of the last 48 hours with strikes, premium, IV, structure id and venue (Deribit or OKX). Updated every 15 minutes. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly and open-world, so the safety profile is covered; the description still adds genuine behavioral context beyond them. The net-of-sold-legs explanation ('a spread counts its net premium') is a real methodological disclosure that prevents misreading the call/put premium split, and the 15-minute refresh cadence plus the Deribit/OKX venue scope tell the agent how fresh and how broad the data is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the usage trigger, then the return payload, then freshness, then the parameter — a sensible order. It is dense but nearly every clause carries information (venue, 48h window, net premium, cadence); only the trailing detail-parameter sentence is redundant with the schema.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does it well: it enumerates the four returned quantities and the fields on each print, plus refresh cadence and data sources. The one gap is asset coverage — BTC/ETH scope appears only in the title, not the body, and there is no symbol parameter to narrow it, so an agent could over-generalize the universe.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter's own description already spells out compact vs full, the trimmed list, and the 100,000-character ceiling. The description's sentence 'Pass detail "compact" for a shorter page or "full" for the whole answer' restates the schema with no added syntax, default, or interaction detail, so baseline 3 applies.

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

Purpose4/5

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

States a concrete verb-plus-resource with unusual specificity: it returns 24h call vs put premium, block-trade share, multi-leg structure count, and the largest prints of the last 48h with strikes, IV, structure id and venue. That scope is clearly distinct from a point-in-time options snapshot or chain listing. It never names a sibling tool, so an agent must infer the boundary with get_options_snapshot, get_options_chain and get_iv_surface.

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

Usage Guidelines4/5

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

Opens with an explicit invocation trigger — 'Call this when the user asks what big options players are buying, about block trades, or whether call or put premium dominates today' — giving three concrete question patterns. There are no exclusions or named alternatives, so an agent asking 'what is the option chain' or 'what's IV now' gets no routing guidance.

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

get_options_snapshotOptions walls, gamma exposure and DVOL (BTC + ETH)A
Read-only
Inspect

Call this when the user asks where the big options bets sit, about call/put walls, gamma exposure (GEX), the zero-gamma level, implied volatility (DVOL) or the IV term structure for Bitcoin or Ethereum, across options venues or on one venue. Daily snapshot of the listed option chains of every options venue we record, summed by default or one venue with venue: the call wall (largest call open interest above spot) and put wall (largest put open interest below spot), the largest bars on the whole axis, top strikes by open interest, put/call ratio, dealer hedging map, ATM IV by expiry (calls and puts interpolated at the money, iv_source names the venue whose quotes price the chain), each venue's open interest (venues_included), and per expiry the open interest by side, the max pain strike (where the open contracts as a group pay out the least at settlement, not a price target) and the one-sigma implied move the ATM IV prices (expiries). DVOL is Deribit's index whatever the venue.

NameRequiredDescriptionDefault
venueNoall (default) sums every options venue; or one venue id: deribit, bybit, binance, okx or delta (Delta Exchange India).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already state readOnlyHint and openWorldHint, so the description correctly focuses on behavior beyond safety: the data is a daily snapshot (not intraday), venues are summed by default, 'DVOL is Deribit's index whatever the venue' is a real caveat, and max pain is flagged as 'not a price target'. These are genuine additions, though there is no coverage of latency, rate limits or data staleness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The trigger phrase is well front-loaded, but the second sentence is an enormous run-on that strings a dozen returned fields together with parenthetical explanations. It remains readable, yet the field inventory reads as a data dictionary and would be tighter as a structured list.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining return contents, and it does so thoroughly: walls, top OI strikes, put/call ratio, dealer hedging map, ATM IV by expiry with iv_source provenance, venues_included, per-expiry max pain and one-sigma implied move. An agent knows what it will get back before calling.

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

Parameters3/5

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

Schema description coverage is 100% and the venue enum is fully documented in the schema. The description only restates the default-summing behavior and the meaning of the venue switch, which slightly clarifies semantics but adds little the schema does not already say.

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

Purpose5/5

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

The description names concrete resources: call/put walls, GEX, zero-gamma level, DVOL, IV term structure, max pain, and per-expiry open interest, framed as a daily aggregated snapshot across venues. That specificity is enough to separate it from chain-level or surface-level siblings such as get_options_chain or get_iv_surface, even though those are not named explicitly.

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

Usage Guidelines4/5

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

The opening sentence is an explicit trigger list ('call this when the user asks where the big options bets sit, about call/put walls, gamma exposure...'), which gives a clear when-to-use signal. It does not state when NOT to use it or name a preferred alternative for raw chain or IV-surface queries, so it falls short of a 5.

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

get_orderbook_depthSpot order book depth: walls and 2% depth from every spot venue on the coverage pageA
Read-only
Inspect

Call this when the user asks where the bid or ask walls are, how deep the spot order book is, whether buyers or sellers have more resting orders near price, or for an order book heatmap. Returns the books of every spot venue with a public book that the coverage page lists, binned into 0.1% buckets within 20% of mid (USD notional), the largest walls with venue split, 2% depth and book reach per venue, and optionally the summed 5-minute history; coins: BTC, ETH, SOL, XRP, DOGE, ADA, LINK, AVAX, LTC, BNB. Books whose size is not corroborated are recorded and returned per venue with in_aggregate false (listed in held_out) but not summed into the walls, 2% depth or history.

NameRequiredDescriptionDefault
hoursNoInclude the summed 5-minute history for this many hours
symbolNoOne coin, e.g. BTC (default BTC)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare read-only and open-world; the description goes well beyond by specifying the bucketing scheme (0.1% bins within 20% of mid, USD notional), the fixed coin universe, and the important caveat that uncorroborated books are returned with in_aggregate=false and held_out but excluded from aggregates. That held-out behavior is exactly the kind of non-obvious trait an agent must know before quoting numbers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the triggering conditions before the payload description, so the most decision-relevant content comes first. It is dense and runs as one long block, which makes it slightly harder to scan, but essentially every clause (bucket size, coin list, held_out rule) carries operational value.

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

Completeness5/5

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

No output schema exists, yet the description fully characterizes the return payload (binned book, walls with venue split, 2% depth, book reach, optional history) and the per-venue exclusion flag. For a two-parameter read-only tool, nothing an agent needs to call it or interpret results is missing.

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

Parameters4/5

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

Schema coverage is 100% and both params are self-documented, so the baseline is 3. The description adds real meaning by enumerating the supported coins (BTC, ETH, SOL, XRP, DOGE, ADA, LINK, AVAX, LTC, BNB) – information the schema only implies via a regex pattern – and by clarifying that hours enables the optional 5-minute summed history.

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

Purpose5/5

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

States a specific resource (spot order book depth across all venues on the coverage page) and enumerates exactly what it yields: 0.1% binned book, largest walls with venue split, 2% depth and book reach. This is clearly separable from siblings like get_liqmap, get_market_profile or get_slippage 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.

Usage Guidelines4/5

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

Gives four concrete user-question triggers ('where are the bid or ask walls', 'how deep is the book', 'buyers or sellers have more resting orders', 'order book heatmap'), which is strong positive routing. It stops short of naming an alternative tool or stating when not to use it (e.g. perp books vs spot), so it does not reach a 5.

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

get_positioningPositioning: long/short ratios, taker buy/sell and CVD across exchangesA
Read-only
Inspect

Call this when the user asks about the long/short ratio, whether retail or top traders are net long or short, the taker buy/sell ratio, or CVD (cumulative volume delta) for a perpetual. Returns exchange-published statistics for the 30 most traded Binance USDT perps on every perpetual venue the positioning board records (Binance global and top-trader ratios, Bybit share long, OKX ratios and taker volume, Gate account and top-trader ratios, HTX elite ratios, Bitget account and position ratios) and CVD series for BTC, ETH and SOL; refreshed every 15 minutes. Without symbol, the 10 most traded perps and the newest 24 points of each CVD series; pass symbol, limit or cvd_points for more. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
limitNoOptional. Perps without symbol, most traded first (default 10, up to 30).
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
symbolNoOne Binance symbol, e.g. BTCUSDT
cvd_pointsNoOptional. Newest points per CVD series (1h and 5m); default 24 without symbol, every point with one.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds real behavioral context the annotations don't: a 15-minute refresh cadence, the exact venue coverage list, and the default page shape when no symbol is given. It stops short of describing error behavior or what happens when a venue is unreachable, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the trigger condition, then returns, then defaults, then parameters — a sensible information order with essentially no filler. It is a single dense paragraph, though, and the venue enumeration is long enough that slightly tighter structure (or bulleting) would scan better.

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

Completeness5/5

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

No output schema exists, so the description carries the return-value burden and does: venue-by-venue contents, CVD coverage limited to BTC/ETH/SOL, the 100,000-character ceiling note on 'full', and the trimmed-field reporting on 'compact'. An agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by stating the coupled defaults — no symbol yields the 10 most traded perps plus 24 newest CVD points, and passing symbol/limit/cvd_points widens that. The detail enum is explained in the description as well as the schema.

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

Purpose5/5

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

Names the exact analytics returned (long/short ratio, taker buy/sell ratio, CVD) and the exact population (Binance USDT perps across every recorded venue), with venue-level enumeration. This is clearly separable from siblings like get_cot_positioning or get_pressure_scores without opening a schema.

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

Usage Guidelines5/5

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

Opens with an explicit invocation trigger: 'Call this when the user asks about the long/short ratio... net long or short... taker buy/sell ratio, or CVD for a perpetual.' It further routes between the default view and the symbol/limit/detail variants, so the agent knows both when to call it and how to shape the call.

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

get_pressure_scoresDerivatives pressure scores (funding + OI + basis composite)A
Read-only
Inspect

Call this when the user asks which coins are crowded or over-leveraged, or asks for the pressure/derivatives-stress score of specific coins. For a quick top-10 ranking of the highest-stress coins right now, use get_top_movers instead. Each symbol gets a 0-100 composite score built from funding rate, 1h/4h/24h open interest deltas and basis, with a LONG/SHORT/NEUTRAL direction and a plain-language regime label.

NameRequiredDescriptionDefault
limitNoOptional. Max rows to return when no symbol filter is set (default 20, sorted by score).
symbolNoOptional. Return only this symbol, e.g. BTCUSDT or BTC.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, open-world operation. The description adds useful behavioral context: each symbol gets a composite score from funding, 1h/4h/24h OI deltas and basis, plus a LONG/SHORT/NEUTRAL direction and a regime label. It does not discuss rate limits or auth needs, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, all front-loaded and purposeful. The trigger, the alternative tool, and the returned content each appear without filler or repetition.

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

Completeness5/5

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

For a two-parameter, no-required-filter read tool with full schema coverage and annotations covering the safety profile, the description supplies everything else an agent needs: when to call it, the main alternative, and what the output contains.

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

Parameters3/5

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

Schema description coverage is 100%, so both limit and symbol are already well documented in the schema. The description does not add syntax, defaults, or filtering semantics beyond what the schema provides, which is the baseline expectation when the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb and resource: it returns a 0-100 derivatives pressure/stress score per symbol. It explicitly distinguishes itself from get_top_movers, the sibling used for a quick top-10 ranking, so an agent can separate the two without reading either schema.

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

Usage Guidelines5/5

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

It gives explicit trigger conditions: user asks which coins are crowded/over-leveraged or asks for pressure scores of specific coins. It also names the alternative tool, get_top_movers, and the condition that selects it.

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

get_psi_chargePsiCharge liquidity state (proprietary model, outcomes published)A
Read-only
Inspect

Call this when the user asks about the market's hidden liquidity state, PsiCharge, or whether parked money is deploying or stress is unwinding. Returns the current Psi score (0-100), state (superposition = charge building, collapse = low-stress discharge, purge = high-stress discharge and historically the most consistent risk-off state, ground = ordinary), stress locality, recent alarms and the year-split measured scorecard. Inputs are proprietary; outcomes are always published. Not a trade signal, not a crash predictor.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Beyond readOnlyHint and openWorldHint, the description discloses that inputs are proprietary, outcomes are always published, and the result includes a score, state interpretation, stress locality, alarms, and scorecard. It also sets expectations by stating it is not a trade signal or crash predictor, though it does not mention freshness or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the call trigger and then explains returns, state meanings, and caveats. It is longer than a minimal definition but every part is useful for interpreting the proprietary state labels.

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

Completeness5/5

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

With no output schema, the description carries the return-value explanation and does so sufficiently: Psi score range, four state meanings, stress locality, recent alarms, and year-split scorecard. It also discloses proprietary inputs and interpretation limits, making it complete enough for a zero-parameter read tool.

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

Parameters4/5

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

The tool takes no parameters, so there is no parameter semantics burden beyond the schema itself. The description appropriately avoids inventing input details and focuses on triggers and outputs.

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

Purpose4/5

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

The description states a specific resource and output: the market's hidden liquidity state via PsiCharge, including the Psi score and state labels. It clearly distinguishes this from a trade signal or crash predictor, but does not explicitly compare it to sibling tools such as get_macro_liquidity.

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

Usage Guidelines4/5

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

It gives a clear trigger: call this when the user asks about hidden liquidity state, PsiCharge, or deploying parked money versus unwinding stress. It does not name alternative tools or explicit when-not-to-use conditions beyond saying it is not a trade signal or crash predictor.

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

get_quantum_exposureQuantum-exposed Bitcoin (daily first-party measurement)A
Read-only
Inspect

Call this when the user asks how much Bitcoin is vulnerable to a quantum computer, about quantum-exposed supply, P2PK coins, or Satoshi-era exposure. Returns the latest daily measurement from ByKaranteli's own Bitcoin Core node: exposed BTC and its share of held value and UTXO count, composition by script family, dormancy cohorts, the dormant-P2PK watch set, and provenance hashes (base_height, base_hash, txoutset_hash) so any figure can be re-verified against any node.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantive context: this is a daily measurement from ByKaranteli's own Bitcoin Core node, and it details returned fields including exposed BTC share, script-family composition, dormancy cohorts, dormant-P2PK watch set, and provenance hashes. This gives the agent a clear sense of data provenance and verifiability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences: the first front-loads the call conditions, the second efficiently enumerates the payload. No filler, and every sentence earns its place.

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

Completeness5/5

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

Without an output schema, the description carries the full burden of explaining return values and does so thoroughly, covering the main metrics, composition, cohorts, watch set, and provenance hashes. An agent has enough information to call it correctly.

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

Parameters4/5

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

The tool has zero parameters and an empty schema, so there are no parameter semantics to explain; baseline 4 applies. The description does not need to compensate for missing schema coverage.

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

Purpose5/5

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

States a specific verb-resource pair (get quantum exposure) and a precise domain: daily first-party measurement of Bitcoin vulnerable to quantum computing. No sibling tool covers quantum exposure, so an agent can distinguish it immediately.

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

Usage Guidelines4/5

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

Explicitly lists the user questions that should trigger the tool: how much Bitcoin is vulnerable to a quantum computer, quantum-exposed supply, P2PK coins, and Satoshi-era exposure. It does not name alternatives or exclusions, but none of the sibling tools overlap with this domain.

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

get_rsi_heatmapRSI heatmap: Wilder RSI(14) on eight timeframes for the top-400 crypto perps and every TradFi perpA
Read-only
Inspect

Call this when the user asks which coins are overbought or oversold, for a crypto RSI heatmap, multi-timeframe RSI, or one contract's RSI on 15m, 1h, 4h, 12h, 1d, 3d, 1w or 1M. Returns the live board for the top-400 Binance crypto perps by volume plus every TradFi perp, with overbought/oversold counts per interval. Filter by symbol or kind (crypto|tradfi), sort by an interval. Without symbol, the first 30 rows (by volume, or by the sort interval); pass limit (up to 400) for more, or order asc with sort for the most oversold first.

NameRequiredDescriptionDefault
kindNocrypto | tradfi
sortNoInterval to sort by, descending
limitNoOptional. Rows without symbol (default 30).
orderNoOptional. With sort: desc (default, most overbought first) or asc (most oversold first).
symbolNoOne Binance symbol, e.g. BTCUSDT

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered and the description is free to spend its words elsewhere. It does exactly that: live board scope, the top-400 volume cutoff, the default 30-row window, the 400-row ceiling, and the semantics of asc vs desc ordering. What it omits is refresh cadence and per-row field composition, which is meaningful but secondary for a read-only board.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The trigger is front-loaded in the first clause, followed by return scope, then filtering/sorting, then pagination defaults, which is a sensible information order. It is a single dense paragraph with no filler sentences. A light break into trigger / returns / paging would have made it scannable rather than a run-on.

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

Completeness4/5

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

There is no output schema, so the description correctly carries return-value burden by stating that it returns the live board plus overbought/oversold counts per interval. Combined with the fully documented 5-parameter schema and read-only annotations, an agent has enough to invoke it correctly. Remaining gaps are refinement-level: the per-symbol row shape and what happens if symbol is outside the top-400 universe.

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

Parameters4/5

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

Schema coverage is 100%, so the per-parameter baseline is already a 3. The description goes beyond the schema by explaining parameter interaction: that limit only matters in the absence of symbol, that the default slice is volume-ordered unless sort is given, and that order asc combined with sort yields most-oversold-first. That crossover behavior is not stated in the schema and is where mis-calls would otherwise happen.

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

Purpose5/5

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

The description names a concrete resource and metric (Wilder RSI(14) heatmap across eight named timeframes) over a defined universe (top-400 Binance crypto perps by volume plus every TradFi perp). That level of specificity separates it cleanly from lookalike siblings such as get_funding_heatmap, get_tradfi_board and get_top_movers without opening any schema.

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

Usage Guidelines4/5

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

The opening clause gives explicit trigger conditions ('when the user asks which coins are overbought or oversold', multi-timeframe RSI, or one contract's RSI on a named interval), which is strong when-to-use guidance. It also explains the default path (no symbol -> first 30 rows) and the escalation path (limit up to 400, order asc + sort for most oversold first). It stops short of naming when-not-to-use or a specific alternative sibling, which keeps it off a 5.

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

get_seriesRecorded series: bars or points of one metric for one perpetual (price, OI, funding, CVD, liquidations, long/short, RSI and more)A
Read-only
Inspect

Call this when the user wants the history of one recorded metric for one perpetual as a time series: price candles, volume, perp or spot CVD, open interest, funding (one venue, or OI-weighted across every venue as funding_agg), liquidations, long/short ratios, RSI, the Coinbase premium, US spot ETF flows, borrow rates or Hyperliquid whale net flow, for charting, backtesting or "what did X do over the last N days". Returns the /api/series answer (points as [t, v], or [t, o, h, l, c, v] for price, with unit, kind, source and source_kind, the bars served and whether member depth applied) plus provenance. metric is one of: price, volume, cvd_perp, cvd_spot, oi, funding, funding_agg, liquidations, long_short, top_traders, rsi, premium, etf_flow, borrow, whale_net (unit, finest period and venue support of each: https://bykaranteli.com/api/series/metrics). The Free plan gets public depth: fewer bars and no bars under 15 minutes (1m, 3m, 5m, 10m); Builder and higher plans get member depth; the bar limits are in the same list. The answer names the venue it was read from (venue) and every venue a market-wide series sums (venues). Without from or limit, the newest 300 bars; pass limit for more of the newest bars, or from and to (ISO) for a window. The public window is the newest 300 bars of the period: a to before it needs member depth (Builder and higher plans) and answers 403 history_member_only otherwise, except daily and coarser price bars, which stay open to every plan.

NameRequiredDescriptionDefault
toNostring, optional ISO end (default now); a to before the newest 300 bars of the period needs member depth, except daily and coarser price bars
fromNostring, optional ISO start, e.g. 2026-09-01T00:00:00Z
limitNonumber, optional newest bars, 10..5000; the plan's depth caps it (default 300 without from)
venueNostring, optional venue id for price, oi, funding or borrow, e.g. okx (default binance)
metricYesstring, metric key, e.g. price, oi, funding, liquidations (list: /api/series/metrics)
periodNostring, optional bar period: 1m | 3m | 5m | 10m | 15m | 30m | 1h | 2h | 4h | 6h | 8h | 12h | 1d | 3d | 1w | 1M (default 1h; each metric has a finest period)
symbolNostring, optional Binance USDT-M perp or coin, e.g. BTCUSDT or BTC (default BTCUSDT)

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly and openWorld annotations, the description discloses the response shape, provenance fields, plan-based depth restrictions, the 403 history_member_only error, and the daily-price exception. This is unusually rich behavioral context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is front-loaded with the core when-to-use guidance and remains information-dense throughout. It is long and somewhat repetitive about plan-based depth and the public 300-bar window, but most sentences carry necessary operational detail.

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

Completeness5/5

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

For a seven-parameter tool with no output schema, the description is highly complete: it covers return format, metric enumeration, defaults, pagination/window semantics, venue behavior, and plan-gated errors. An agent has enough information to invoke it correctly in normal and edge cases.

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

Parameters5/5

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

Although schema coverage is already 100%, the description adds substantial meaning: it lists all supported metric values, explains venue and period behavior, and clarifies how from, to, and limit interact with the default 300-bar window and plan caps.

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

Purpose5/5

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

The description states a specific action and resource: retrieving the history of one recorded metric for one perpetual as a time series. It enumerates the supported metrics and clarifies the time-series scope, which distinguishes it from snapshot-oriented sibling tools.

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

Usage Guidelines4/5

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

It clearly says when to call the tool, including charting, backtesting, and 'what did X do over the last N days' use cases. It also explains defaults and plan-based limits, but does not explicitly name alternative sibling tools or when not to use this one.

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

get_settlementsExpiry calendar and settlement prices across venuesA
Read-only
Inspect

Call this when the user asks what futures or options expire soon, when the next quarterly expiry is on an exchange, how many contracts settle this week, or at what price a dated future settled. Returns the next 60 days of dated future and option expiries grouped by date, venue and underlying from 54 venues' market lists, plus the settlement prices recorded as dated futures deliver. Without base, the first 30 expiry rows and the 30 newest settlement prices; pass base for one asset's full lists, or limit (up to 300).

NameRequiredDescriptionDefault
baseNoOptional. One underlying, e.g. BTC: every expiry row and settlement price of that asset.
limitNoOptional. Rows per list without base (default 30): expiries soonest first, settlements newest first.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real value on top by disclosing the 60-day horizon, the 54-venue source, the two separate result lists and their sort orders, and the default page size of 30. It omits failure behavior and any rate-limit or coverage caveats, which keeps it out of the 5 band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Two sentences, front-loaded with the invocation triggers before the return description, with no filler. It is dense and the defaults sentence is long, but each clause carries information an agent needs.

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

Completeness4/5

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

For a two-optional-parameter read tool with no output schema, the description supplies the return shape (two grouped lists), the horizon, the default and maximum sizing, and the scoping effect of base. Only the exact field-level payload remains unspecified, which is acceptable without an output schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, and the description genuinely adds semantics: base selects one asset's full lists and lifts the row cap, limit only applies without base and caps at 300. The per-list sort direction (expiries soonest first, settlements newest first) is not derivable from the schema alone.

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

Purpose5/5

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

States a specific verb and resource set: expiries of dated futures and options plus the settlement prices recorded at delivery, grouped by date, venue and underlying. An agent can distinguish this from near-siblings such as get_options_chain or get_venue_markets because the scope is explicitly 'expiring contracts and their final settlement prices', not live chains or venue metadata.

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

Usage Guidelines4/5

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

Opens with four concrete invocation triggers ('expire soon', 'next quarterly expiry on an exchange', 'how many contracts settle this week', 'at what price a dated future settled'), which is strong context. It does not name a when-not case or an explicit alternative tool to prefer, so it stops short of the top band.

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

get_slippageLive execution cost: what a market order really costsA
Read-only
Inspect

Call this when the user asks how much slippage a trade of a given size would face, how thick the books are, or which major perp market is thinnest right now. Returns live cost ladders in basis points for $10K to $5M market orders across 8 major perpetuals, both sides, from the full visible order book. Excludes fees; null = the book cannot absorb that size.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark it readOnly and openWorld, and the description adds meaningful behavior: it uses the full visible order book, excludes fees, and explains that null means the book cannot absorb that size. That gives an agent enough behavioral context to interpret edge cases correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two dense sentences with no wasted text. The usage trigger is front-loaded, followed by return scope and important exclusions, so an agent can act on the first sentence and refine interpretation with the second.

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

Completeness4/5

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

No output schema exists, but the description explains the return shape well enough: basis-point cost ladders, sizes from $10K to $5M, both sides, 8 perps, fees excluded, and null semantics. It is nearly complete for a read-only no-parameter tool, though it does not mention response formatting or ordering details.

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

Parameters4/5

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

There are zero input parameters, so parameter semantics are inherently minimal and the baseline is 4. The description does not need to explain parameter formatting, but it usefully clarifies the size range and market coverage that shape the result.

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

Purpose5/5

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

States a specific verb/resource (slippage/cost for market orders) and scopes it to live execution cost across 8 major perpetuals, both sides, $10K to $5M. This clearly distinguishes it from a generic orderbook-depth tool by framing the output as cost ladders in basis points.

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

Usage Guidelines5/5

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

Explicitly says when to call it: when the user asks how much slippage a trade would face, how thick the books are, or which major perp is thinnest. Those are concrete triggering conditions, not vague suggestions.

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

get_solana_perpsSolana Perps board: open interest, 24h volume and hourly rates across six Solana perpetual venues (Jupiter, Pacifica, Phoenix, GM Trade, Velocity, Bullet)A
Read-only
Inspect

Call this when the user asks about perpetuals on Solana as a whole, which Solana perp DEX has the most open interest or volume, a market on Pacifica, Phoenix, GM Trade (GMX on Solana), Velocity (the Drift relaunch) or Bullet (funding, open interest, 24h volume, mark), or how Jupiter compares with the order-book venues. Returns the board read every 10 minutes: per-venue totals (one-sided open interest, both sides on pool venues, 24h volume, market count, median hourly rate, as_of), every market of every venue largest first with instrument type (perpetual, equity, index, commodity, fx), and optional hourly history of one market on any venue but Jupiter (7 days on the Free plan, 30 on Builder and higher plans; Jupiter history is get_jupiter_perps). Without venue, the 30 largest markets; pass venue, or limit (up to 300) for more.

NameRequiredDescriptionDefault
limitNoOptional. Markets without venue, largest first (default 30).
venueNoVenue filter: jupiter, pacifica, phoenix, gmtrade, velocity or bullet
symbolNoMarket symbol on the chosen venue (Pacifica when venue is not given) for hourly history, as the board lists it, e.g. SOL, SOL-PERP, SOL-USD, kBONK
history_daysNoHourly history for the symbol, 1..30 days

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantive behavior beyond that: the board is refreshed every 10 minutes, open interest is one-sided except on pool venues where it is both sides, medians are hourly rates, and history depth is plan-gated (7 days Free, 30 on Builder+). Those are exactly the operational constraints an agent needs before promising data to a user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded correctly: trigger conditions first, return shape second, parameter behavior last. However, it is delivered as one dense run-on with stacked parentheticals (venue aliases, plan tiers) that takes effort to parse; a couple of breaks would preserve all content with less friction.

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

Completeness5/5

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

There is no output schema, so the description carries the full burden of return-value disclosure and does so thoroughly: per-venue totals with named fields, per-market rows ordered largest first with instrument type taxonomy, and the optional history series. Nothing an agent needs to call this correctly or describe results to a user is missing.

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

Parameters4/5

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

Schema coverage is 100%, so field-level meaning is already carried by the schema. The description still adds real semantics: without a venue you get the 30 largest markets, passing venue or raising limit (up to 300) widens it, and symbol defaults to Pacifica when venue is absent. It does not explain how symbol and history_days interact when symbol is supplied without history_days, which keeps it below a 5.

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

Purpose5/5

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

States a specific verb and resource (reads the Solana perps board) and enumerates the exact scope: six named venues, per-venue totals, per-market rows, optional hourly history. It explicitly separates itself from the sibling get_jupiter_perps for Jupiter history, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit trigger list ('when the user asks about perpetuals on Solana as a whole, which venue has the most open interest or volume, a market on Pacifica/Phoenix/...'), and names the alternative tool for the one case this one does not cover (Jupiter history). When-to-use and when-to-use-something-else are both present.

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

get_theme_indicesCrypto narrative indices (AI, RWA, DePIN, meme, L1, L2, DeFi, quantum)A
Read-only
Inspect

Call this when the user asks which crypto narrative or sector is leading, about rotation between AI, RWA, DePIN, memecoins, layer 1, layer 2, DeFi or quantum coins, or for a theme index. Returns eight equal-weight fixed-basket indices rebased to 100 on 2025-01-01 with 1d/7d/30d/90d/YTD returns, vs BTC, and the member lists; daily points are omitted unless include_points is true.

NameRequiredDescriptionDefault
include_pointsNoboolean, optional: include the daily index points (large)

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses the return structure: eight equal-weight baskets, rebasing to 100 on 2025-01-01, multiple return windows, BTC comparison, member lists, and conditional omission of daily points. This gives the agent substantial behavioral context needed to set expectations and invoke include_points correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is front-loaded with the invocation trigger and follows with the return composition and parameter behavior. Both sentences carry necessary information with no filler.

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

Completeness5/5

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

For a read-only tool with one optional boolean, no output schema, and full schema coverage, the description provides enough detail about when to call it, what the indices represent, what data is returned, and how include_points affects output. Nothing critical for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so include_points is already documented, but the description adds useful default semantics: daily points are omitted unless include_points is true. That goes beyond the schema's wording and clarifies actual call behavior.

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

Purpose5/5

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

The description states a specific resource: eight equal-weight fixed-basket crypto narrative indices, and enumerates the covered themes. It distinguishes this from generic market or single-theme tools by describing narrative/sector rotation and theme-index output, not raw exposure or broad market data.

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

Usage Guidelines4/5

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

It gives explicit user-intent triggers such as asking which crypto narrative is leading, rotation between named narratives, or requesting a theme index. It does not name when-not-to-use cases or explicitly route to alternatives like get_market_indices or get_quantum_exposure, so it falls short of full 5-level guidance.

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

get_tokenized_stocksTokenized stocks onchain: supply, premium to the real share, DEX pools and exchange pairsA
Read-only
Inspect

Call this when the user asks about tokenized stocks or stock tokens (xStocks, Ondo, Robinhood stock tokens, Coinbase tokenized stocks on Base, Binance bStocks, Backpack, Gate gStocks, Reality, Superstate, Figure, Dinari dShares, Securitize): how much of a stock exists onchain, which issuer or chain holds the most, whether a wrapper trades above or below the real share, which DEX pools or exchanges trade it. Returns the board ByKaranteli refreshes every 10 minutes: per underlying the reference share price and its session, each wrapper (issuer, chain, price, premium_pct against a fresh reference, DEX liquidity and 24h volume from admitted pools, supply in shares and dollars, holders, status), tokenized spot pairs on the exchanges the board lists, the perpetual futures cross, and totals (supply by issuer and chain, DEX volume, median premium). Each wrapper's price_source names the price that valued its supply dollars (reference: the share's reference price; issuer_oracle: the issuer's own price for the token; wrapper: its own pool or exchange price; null: no dollars), and totals.priced_by counts the counted wrappers per level, unpriced included. Wrappers come from issuer sources only, never from a name search. Without underlying, each stock lists its first 3 wrappers and 3 exchange pairs; pass underlying for all of them. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
topNoRows by supply (default 10, max 200).
chainNoOne chain, e.g. solana, base, bnb, robinhood, ethereum, ton, all (xStocks circulating) or cex (exchange pairs).
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
issuerNoOne issuer: xstocks, robinhood, coinbase, bstocks, ondo, backpack, gstocks, reality, superstate, figure, dinari or securitize; omit for every issuer.
underlyingNoStock ticker, e.g. TSLA; omit for the whole board.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnly/openWorld; the description adds substantial context beyond that: a 10-minute refresh cadence, the provenance rule for wrappers, the meaning of price_source values (reference / issuer_oracle / wrapper / null) and what totals.priced_by counts, and the 100,000-character ceiling behaviour with a suggested narrowing strategy. This is exactly the kind of behavioral detail annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The trigger is correctly front-loaded, but the body is a dense run-on: the first sentence alone packs an issuer list, four question types and a return summary. Several clauses (the issuer enum restated inline, the detail-mode recap) repeat what the schema already says, inflating length without adding selection value. Information-dense but not disciplined.

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

Completeness5/5

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

There is no output schema, yet the description specifies the return payload in usable detail: per-wrapper fields (issuer, chain, price, premium_pct, DEX liquidity, 24h volume, supply in shares and dollars, holders, status), exchange spot pairs, perpetual futures cross, and aggregate totals. An agent can answer 'what will I get back' without calling the tool first.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents top, chain, detail and issuer. The description still earns credit for clarifying the underlying parameter's cardinality effect (3 wrappers default vs. all when passed) and for restating detail modes in operational terms ('a shorter page', 'still under the 100,000 character ceiling'). Minor duplication of the schema's detail text keeps it off a 5.

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

Purpose5/5

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

The description opens with an explicit trigger and names the precise resource (tokenized stocks / stock tokens) plus the concrete issuers it covers, then enumerates what the tool answers: onchain supply, issuer/chain dominance, premium to the real share, DEX pools and exchange pairs. No sibling tool covers this domain, and an agent can tell instantly whether a query belongs here rather than to get_tradfi_board or get_venue_markets.

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

Usage Guidelines4/5

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

It gives a clear when-to-use condition (user asks about tokenized stocks, listing recognisable brand names an agent can pattern-match on) and a scoping rule: 'Without underlying, each stock lists its first 3 wrappers and 3 exchange pairs; pass underlying for all of them.' It also states a negative constraint ('Wrappers come from issuer sources only, never from a name search'), which pre-empts a wrong expectation. What it lacks is explicit routing away from any other tool, though no sibling is a real alternative.

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

get_top_moversTop movers: OI spikes, extreme funding, widest basis, highest stressA
Read-only
Inspect

Call this when the user asks what is moving in crypto derivatives right now, which coins have the biggest open interest changes, the most extreme funding, the widest basis, or the highest derivatives stress. Returns four top-10 lists in one call.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare this as a read-only, open-world operation, so the description's most valuable addition is the output shape: four top-10 lists returned in one call. That tells the agent this is a batch summary rather than a paginated or single-result query. It does not state freshness or refresh cadence, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, both earning their place. The use-case triggers come first, and the return shape is stated last in a single compact clause.

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

Completeness4/5

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

With no parameters and no output schema, the description must carry the return-shape burden, and it does at a high level by specifying four top-10 lists. It doesn't enumerate exactly what fields each list contains, but that is a minor gap for a screening tool whose title already names the four dimensions.

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

Parameters4/5

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

This tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a no-parameter tool applies, and the description correctly avoids inventing parameter-like guidance.

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

Purpose5/5

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

The description names a specific capability: a screener that surfaces four derivative market extremes (OI changes, funding, basis, stress) in one call. That is clearly distinguishable from single-metric siblings such as get_open_interest or get_funding_heatmap because it advertises an aggregated cross-metric view rather than one series.

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

Usage Guidelines4/5

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

It gives concrete trigger phrases ('what is moving in crypto derivatives right now', biggest OI changes, extreme funding, widest basis, highest stress), which maps directly onto user intents. It does not explicitly name which sibling to use instead for a single-metric deep dive, but the intended usage context is unusually clear.

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

get_tradfi_boardTradFi perpetuals: stock, index and commodity perps on BinanceA
Read-only
Inspect

Call this when the user asks about stock perpetuals (TSLA, NVDA, AAPL, gold, S&P 500...), tokenized-equity perps, TradFi perp funding rates, open interest, liquidations, which exchanges list a stock perp, or whether the equity session is open. Returns Binance's TradFi perpetual board: per contract mark, index, basis, funding, 24h change and volume, open interest, 24h recorded liquidations, other venues listing the same underlying, and the trading-session state per market. Filter by market (EQUITY, HK_EQUITY, KR_EQUITY, CN_EQUITY, COMMODITY, INDEX, PREMARKET) or one symbol. Without symbol, the first 30 contracts by open interest; pass symbol, or limit (up to 150) for more.

NameRequiredDescriptionDefault
limitNoOptional. Contracts without symbol, largest open interest first (default 30).
marketNoMarket filter: EQUITY | HK_EQUITY | KR_EQUITY | CN_EQUITY | COMMODITY | INDEX | PREMARKET
symbolNoOne Binance TradFi symbol, e.g. TSLAUSDT

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds real behavioral context: the full return payload, the default paging rule (first 30 by open interest), and that limit can go to 150. It doesn't mention rate limits or data freshness/latency, which would round it out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the trigger condition, then the return payload, then the parameter rules — a logical order. The parenthetical symbol examples are slightly dense but all serve disambiguation; only minor trimming is possible.

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

Completeness5/5

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

No output schema exists, but the description enumerates the returned fields, the market filter options, the default and maximum result counts, and the session-state information. An agent has everything needed to call it correctly and interpret the result shape.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by explaining the interaction between the params: 'Without symbol, the first 30 contracts by open interest; pass symbol, or limit (up to 150) for more,' which is behavioral meaning the schema alone doesn't convey.

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

Purpose5/5

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

States a specific verb and resource: 'Returns Binance's TradFi perpetual board' with an enumerated field list (mark, index, basis, funding, OI, liquidations, session state). This clearly distinguishes it from siblings like get_tokenized_stocks, get_open_interest, or get_market_indices.

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

Usage Guidelines4/5

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

Opens with an explicit trigger list ('Call this when the user asks about stock perpetuals, tokenized-equity perps, funding rates, OI, liquidations, which exchanges list a stock perp, or whether the equity session is open'). It doesn't explicitly exclude or route to the nearest siblings (get_tokenized_stocks, get_open_interest), which keeps it from a 5.

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

get_tradfi_gapsWeekend and overnight gaps: stock, index and commodity perpetuals against the cash close, checkpoint by checkpointA
Read-only
Inspect

Call this when the user asks what a stock, index or commodity perpetual did over the weekend or overnight while the cash market was closed, how far it sat from the last cash close at each checkpoint, how the venues disagreed, and what gap the next open then realised. From ByKaranteli's own ten-minute venue record; window weekend or night; one symbol or the whole board. Without symbol, the first 15 underlyings of the summary and of the latest window; pass symbol, or limit (up to 60) for more.

NameRequiredDescriptionDefault
limitNoOptional. Underlyings without symbol, in the board's order, for the summary and the latest window (default 15, up to 60).
symbolNoOne underlying, e.g. TSLA or XAU (default: the whole board)
windowNoweekend (Friday close to Monday open) or night (cash close to next open); default weekend

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuine context beyond that — the provenance (own ten-minute venue record), the checkpoint-level granularity, the cross-venue disagreement dimension, and the follow-through to the realised next-open gap. It does not cover pagination or response volume, which keeps it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the trigger condition, then the data provenance, then scope, then defaults — a sensible ordering. It is dense to the point of telegraphic fragments ('window weekend or night; one symbol or the whole board'), but nearly every clause carries information about what the tool returns.

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

Completeness5/5

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

With no output schema, the description still conveys what comes back — distance from last cash close at each checkpoint, venue dispersion, and the next-open realised gap — plus defaults and window semantics. That is sufficient for a read-only, open-world analytics tool with fully described parameters.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters (limit, symbol, window) are already documented, including the weekend/night enum meanings and the 15-of-60 default. The description restates the default and the 'pass symbol, or limit for more' tradeoff but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

Names a specific verb+resource: gap data for stock, index and commodity perpetuals versus the cash close, checkpoint by checkpoint, with a stated data source (ByKaranteli's ten-minute venue record). It distinguishes weekend vs night windows and one-symbol vs whole-board scope, but never differentiates itself from the adjacent siblings get_tradfi_board or get_tokenized_stocks, which an agent may confuse with 'the whole board'.

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

Usage Guidelines4/5

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

Opens with an explicit invocation trigger: 'Call this when the user asks what a stock, index or commodity perpetual did over the weekend or overnight while the cash market was closed.' It also states the default scope behaviour when no symbol is passed. It stops short of naming alternatives or exclusions, so a 4 rather than a 5.

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

get_turkey_premiumTurkey Premium Index: what lira buyers pay above the world price, with TRY reference prices from Turkish venuesA
Read-only
Inspect

Call this when the user asks about Bitcoin, Ether or USDT prices in Turkish lira, the Turkey premium, the USDT/TRY rate or dollar premium in Turkey, or which Turkish exchanges (BtcTurk, Bitlo, CoinTR, OKX TR, Binance TR, Bybit TR, Bitexen; KuCoin TR contributes the USDT pairs only) trade above or below the global price. Returns the live board: the Turkey Premium Index (what a lira buyer pays for bitcoin against the global dollar price at the official exchange rate, in bps) with its dollar leg and crypto leg, a 0-100 score (50 = world price) and regime, 24h and 7d averages and the same-sign streak; then five reference prices (median of eligible order books), per-venue book status, spread, depth and each venue's implied premium. Pass pair and history_days for 15-minute history of one pair. Without pair, the daily rows cover the last 7 days; pass pair, or daily_days (up to 30) for more. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
pairNoPair: BTC-TRY, ETH-TRY, USDT-TRY, BTC-USDT or ETH-USDT
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
daily_daysNoOptional. Days of daily rows, newest first (default 7 without pair, every recorded day with one).
history_daysNoInclude 15-minute index history for the pair, 1..30 days

TDQS

A4.2/5.0
Behavior4/5

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

Goes well beyond the readOnly/openWorld annotations by describing the returned board, the 0-100 score with 50 = world price, 24h/7d averages, streak, five reference prices, per-venue book status and implied premium. It also discloses pagination defaults (7 daily rows without pair) and the 100,000-character ceiling behavior for 'full'. Missing only freshness/caching or rate-limit notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Trigger conditions come first, then return shape, then parameter behavior — a sensible front-loading. It is a single dense paragraph with a long parenthetical venue list, but nearly every clause carries information an agent needs.

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

Completeness5/5

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

With no output schema, the description fully carries the burden of explaining return values: index, legs, score, regime, averages, streak, reference prices, venue status and premium. Pagination and truncation behavior are also covered, leaving nothing material for a caller to guess.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents pair enum, daily_days/history_days ranges, and the detail modes. The description adds the relationship that pair plus history_days yields 15-minute history for one pair and that daily_days allows up to 30 days, but repeats much of what the schema says. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific resource (Turkey Premium Index: lira price vs global dollar price in bps) and enumerates the exact user questions it answers, including named Turkish venues. An agent can tell this apart from siblings like get_coinbase_premium or get_venue_markets 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.

Usage Guidelines4/5

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

The opening 'Call this when the user asks about...' clause gives a concrete trigger list covering BTC/ETH/USDT lira prices, the premium, the USDT/TRY rate and venue divergence. It lacks explicit exclusions or a named alternative (e.g. get_coinbase_premium for the US premium), so routing is clear but not fully disambiguated.

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

get_venue_marketsExchange coverage: OI, volume, funding and pegs across every exchange we snapshotA
Read-only
Inspect

Call this when the user asks about total open interest across exchanges, which venues hold the most OI, DEX versus CEX share, funding dispersion between venues, or stablecoin pegs. Returns the latest 10-minute snapshot aggregates across every perpetual and spot feed we poll (the coverage field lists them); pass symbol for one coin's per-venue rows. Without symbol, rows holds the 30 venue markets with the largest open interest; pass symbol, or limit (up to 250) for more. Pass detail "compact" for a shorter page or "full" for the whole answer.

NameRequiredDescriptionDefault
limitNoOptional. Venue market rows without symbol, largest open interest first (default 30).
detailNoOptional. "compact": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). "full" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page.
symbolNostring, optional base asset, e.g. BTC
history_daysNoReturn the hourly multi-venue open interest history (total, DEX share, OI-weighted funding) for this many days instead of the snapshot

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful operational detail beyond annotations: the data is the latest 10-minute snapshot, coverage is listed in a coverage field, default rows are the 30 largest-OI venue markets, limit caps at 250, compact/full changes truncation behavior, and full responses stay under a 100,000 character ceiling. It omits the history_days mode in the description, though the schema covers it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is front-loaded with the when-to-call use cases, then moves directly into return behavior and page-size controls. Every sentence carries operational information, and there is no redundant restatement of the title or schema.

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

Completeness4/5

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

There is no output schema, so the description carries the burden of explaining returns. It does this well for the snapshot mode by describing coverage, rows, default 30-row behavior, compact/full trimming, and the character ceiling. It is slightly incomplete because it does not describe the history_days return mode, though the schema parameter description does.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds value by explaining that without symbol the rows are the 30 largest-OI venue markets, that symbol switches to one coin's per-venue rows, that limit can raise the row count up to 250, and how detail 'compact' versus 'full' changes the page. It does not mention history_days at all, leaving that important mode to the schema.

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

Purpose4/5

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

The description names concrete user questions (cross-exchange OI, top OI venues, DEX/CEX share, funding dispersion, stablecoin pegs) and states that it returns 10-minute snapshot aggregates across all polled perpetual and spot feeds. It is clearly scoped, but it does not explicitly distinguish itself from nearby siblings such as get_venue_share or get_open_interest, so a 4 rather than a 5.

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

Usage Guidelines4/5

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

It gives strong trigger conditions: use when the user asks about total OI across exchanges, which venues hold the most OI, DEX versus CEX share, funding dispersion, or stablecoin pegs. It also explains the symbol/no-symbol branching and limit/detail behavior. It stops short of naming alternative tools or when not to use this one.

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

get_venue_profileVenue profile: everything ByKaranteli records about one exchangeA
Read-only
Inspect

Call this when the user asks about a specific exchange (Bybit, OKX, Gate, KuCoin, HTX, Bitget, MEXC, BitMEX, Hyperliquid ...): how many contracts it lists, its perp open interest and average funding, its leverage ladders, deposit and withdrawal networks and how many are paused, its base fee schedule, its status uptime and the recent event log (listings, delistings, leverage cuts, withdrawal pauses, incidents). Without venue returns the list of recorded venues.

NameRequiredDescriptionDefault
venueNostring, optional venue id, e.g. bybit

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact — calling without 'venue' returns the list of recorded venues — and enumerates the payload because no output schema exists. But it says nothing about data freshness, historical depth, or whether values are point-in-time snapshots versus aggregates, which matters for a profile spanning uptime and event logs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The call trigger is front-loaded in the first clause, and every subsequent clause adds a distinct data category rather than filler. It is a single long sentence, though, and the parenthetical venue list plus trailing '...' hedge make it denser than necessary — a short bulleted list of returned sections would read faster.

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

Completeness4/5

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

With no output schema, the enumeration of returned sections is exactly what the agent needs to judge whether this tool answers the question, and the default no-arg behavior is disclosed. What remains uncovered is freshness/coverage ('ByKaranteli records' hints at a proprietary dataset but its completeness and update cadence are unstated) and the size of the payload, which could be large for a full venue profile.

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

Parameters3/5

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

Schema coverage is 100% for the single optional 'venue' parameter, so the baseline is 3. The description does add value by listing recognizable venue names (Bybit, OKX, Gate, KuCoin, HTX, Bitget, MEXC, BitMEX, Hyperliquid) that help the agent map a user's mention to an id, but it does not state the accepted id casing/format or whether fuzzy names are matched.

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

Purpose4/5

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

States a specific verb+resource ('venue profile' / everything recorded about one exchange) and enumerates the contents: contract counts, open interest, funding, leverage ladders, deposit/withdrawal networks, fee schedule, uptime and event log. That is far more concrete than the title alone. It does not, however, distinguish itself from overlapping siblings such as get_venue_markets, get_venue_share, get_withdrawal_status or get_fee_table, whose data appears to be folded into this profile.

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

Usage Guidelines4/5

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

The trigger is explicit: 'Call this when the user asks about a specific exchange', followed by the concrete categories of questions it answers. It also clarifies the no-argument behavior (returns the list of recorded venues). What is missing is when-not guidance — nothing tells the agent to prefer get_venue_markets or get_withdrawal_status for narrower questions, even though those siblings exist.

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

get_venue_shareVenue share: each counted exchange's share of the recorded liquidations and of perpetual open interestA
Read-only
Inspect

Call this when the user asks which exchange sees the most liquidations, how that share moved this week or this month, or how perpetual open interest splits between venues. Shares over one, seven or thirty days from ByKaranteli's own hourly liquidation record (counted venues only, each with the day its record started) and the hourly open interest record.

NameRequiredDescriptionDefault
daysNoWindow in days: 1, 7 or 30 (default 7)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds useful behavioral context beyond them: data comes from ByKaranteli's hourly liquidation and open interest records, covers counted venues only, and notes each venue's record start day.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is two sentences, front-loaded with the usage trigger and followed by the relevant data scope. It is dense but every part contributes to selecting or understanding the tool.

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

Completeness4/5

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

For a simple one-parameter read-only query tool, the description covers purpose, usage context, data source, and coverage caveats. It does not describe the exact return shape, but it does enough to call the tool appropriately without an output schema.

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

Parameters3/5

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

The single days parameter has full schema description coverage, so the schema already explains the 1, 7, or 30 day window and default. The description reinforces the allowed windows but adds little beyond the schema.

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

Purpose5/5

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

The description states a specific resource and scope: venue shares of recorded liquidations and perpetual open interest across exchanges. It clearly distinguishes this from raw liquidation or open-interest tools by focusing on share and venue comparison.

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

Usage Guidelines4/5

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

It gives explicit user-question contexts for when to call it, such as asking which exchange sees the most liquidations or how OI splits between venues. It does not name sibling alternatives or exclusions, so it falls short of a full when/when-not routing guide.

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

get_whale_tapeWhale tape: $1M+ aggressive prints with 24h buy shareA
Read-only
Inspect

Call this when the user asks about whale trades, large market orders, or whether big players are buying or selling right now. Returns recent $1M+ aggressive prints recorded live from our own sockets and 24h aggregates with the buy share.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description goes further by disclosing data provenance ('recorded live from our own sockets') and the exact inclusion threshold ($1M+ aggressive prints), which materially affects interpretation. It omits refresh cadence, lookback window for the tape itself, and any cap on number of prints returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, front-loaded with the trigger condition followed by the return payload, with zero filler. Every clause carries information an agent needs to select or interpret the tool.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns, and it names both components: the live print tape and the 24h buy-share aggregate. It leaves the per-print shape (side, venue, timestamp, notional) and result size unstated, so an agent cannot fully anticipate the response structure.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. It does implicitly communicate that there is no symbol or time filter to supply, which is useful for callers expecting one.

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

Purpose4/5

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

States a specific resource and threshold: recent $1M+ aggressive prints plus 24h aggregates with buy share. An agent knows exactly what data comes back. It does not, however, differentiate itself from the nearby sibling get_hl_whales (Hyperliquid whale positions), which an agent could plausibly confuse it with.

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

Usage Guidelines4/5

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

Opens with an explicit invocation trigger list: whale trades, large market orders, or whether big players are buying or selling right now. That is clear context for when to call. It offers no when-not guidance or named alternative for adjacent questions (e.g. per-address whale positions).

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

get_withdrawal_statusWithdrawal status and network fees: which exchanges paused withdrawals, per asset and networkA
Read-only
Inspect

Call this when the user asks whether an exchange has paused withdrawals or deposits, which networks are open for an asset, what the withdrawal fee or minimum is on each venue, or which venue is cheapest to withdraw from. Without arguments returns the overview (withdrawals paused right now, ranked, plus recent suspension and resumption events). Pass asset (e.g. USDT) for every venue and network of that asset, and venue (e.g. kucoin) to narrow. Recorded daily by ByKaranteli from 20+ venues' public currency lists. The overview lists the first 30 paused networks and the 30 newest events; pass asset, or limit (up to 400) for more.

NameRequiredDescriptionDefault
assetNostring, optional asset code, e.g. USDT
limitNoOptional. Rows of the overview lists (paused networks, events) without asset (default 30).
venueNostring, optional venue id, e.g. kucoin

TDQS

A4.6/5.0
Behavior5/5

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

Beyond readOnlyHint/openWorldHint, it discloses provenance and freshness ('recorded daily by ByKaranteli from 20+ venues' public currency lists') and, importantly, result truncation ('first 30 paused networks and the 30 newest events', limit up to 400). Those caps are the kind of behavior an agent must know to avoid misreporting completeness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the invocation triggers, then argument behavior, then provenance and pagination limits — a sensible order with no filler sentences. The opening sentence is long and trigger-dense, slightly taxing to parse, but nothing is redundant.

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

Completeness5/5

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

There is no output schema, and the description compensates by describing the shape of the return (paused withdrawals ranked now, plus recent suspension and resumption events) and the truncation rules. An agent has everything needed to call it and to interpret result coverage.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: asset expands to every venue and network of that asset, venue narrows the result, and limit applies only to the overview lists when no asset is given. That last scoping detail is a genuine complement to the schema text.

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

Purpose5/5

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

States a specific resource and set of questions it answers: withdrawal/deposit pauses per exchange, open networks per asset, fees and minimums per venue. This clearly separates it from lookalikes such as get_fee_table, get_network_health and get_venue_markets, so an agent can pick 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.

Usage Guidelines4/5

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

The lead sentence gives concrete user-question triggers ('whether an exchange has paused withdrawals', 'which venue is cheapest to withdraw from') and explains the argument-driven modes (no args = overview, asset = per-venue/network, venue = narrow). What's missing is an explicit exclusion or a named alternative for overlapping needs like generic fee tables.

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

list_alert_recipesYour alert recipes: every alert on your account with its conditions, scope, channels and when it last firedA
Read-only
Inspect

Call this when the user asks which alerts they have, whether an alert fired, or before deleting or changing one. Returns the account's alert recipes (id, name, scope, symbols, conditions, cooldown in hours, enabled, last fired, fire count, channels, reachable: whether a delivery channel is set up for it) and channels_available (the delivery channels the account has connected). Needs a signed-in account (OAuth sign-in or account key); reads nothing but this account.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=false; the description adds genuinely new context: it requires a signed-in account (OAuth or account key) and that it "reads nothing but this account", which matters for a query that could otherwise be assumed to span tenants. It also explains the non-obvious `reachable` flag. Rate limits and pagination behavior are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences, zero filler — the first front-loads the call conditions and the second defines the return payload and auth requirement. Every clause carries information an agent needs to decide and call correctly.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining return values and does so field-by-field, including channels_available and the meaning of `reachable`. Auth prerequisites and account scoping are also covered, leaving nothing material unstated for a no-parameter read.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to disambiguate; the description correctly refrains from inventing parameter guidance and instead spends its space on return contents. Baseline is 4 for a 0-parameter tool.

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

Purpose5/5

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

The description names a specific verb+resource ("Returns the account's alert recipes") and enumerates the exact payload fields (id, scope, conditions, cooldown, last fired, channels, reachable). This clearly separates it from the mutating siblings create_alert_recipe, delete_alert_recipe, and parse_alert_text without needing to open a schema.

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

Usage Guidelines4/5

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

It gives concrete call triggers: when the user asks which alerts exist, whether one fired, or before deleting/changing one — the last clause implicitly routes writes elsewhere. It stops short of naming the sibling tools (create/delete_alert_recipe) explicitly, so the routing is inferred rather than stated.

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

list_tracked_addressesList the Hyperliquid addresses you follow (reads your account)A
Read-only
Inspect

Call this when the user asks which Hyperliquid addresses they follow, or what those addresses hold right now. Returns every followed address with its label, the positions last seen on it and the plan's address limit; following addresses is part of Terminal and the plans above it.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, closed-world operation. The description adds useful behavior beyond that by explaining that the response includes every followed address, its label, last-seen positions, and the plan's address limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is two tight sentences, front-loaded with the call condition and followed by the return contents. No sentence is wasted, and the plan-limit context is brief but relevant.

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

Completeness5/5

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

For a zero-parameter read-only list tool with no output schema, the description is complete enough: it says when to call it and what the returned data contains. The plan address limit and account context are also surfaced, leaving little an agent would need to infer.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics burden. The baseline score of 4 is appropriate because the description does not need to compensate for any input-schema gaps.

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

Purpose5/5

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

The description states a specific verb/resource: listing the Hyperliquid addresses the user follows. It also clarifies that the result includes what those addresses hold, making the purpose distinct from related tools like get_hl_positions or list_watchlists.

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

Usage Guidelines4/5

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

It gives an explicit trigger: call this when the user asks which Hyperliquid addresses they follow or what those addresses hold. It does not explicitly name exclusions or alternative tools, so it is clear but not fully comparative.

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

list_watchlistsYour watchlists and the symbols on eachA
Read-only
Inspect

Call this when the user asks what is on their watchlist, which lists they have, or before adding or removing a symbol. Returns the account's watchlists (id, name, symbol count) and, unless include_symbols is false, the symbols on each list in order. Needs a signed-in account (OAuth sign-in or account key); reads nothing but this account.

NameRequiredDescriptionDefault
include_symbolsNoboolean, optional: include each list's symbols (default true)

TDQS

A4.7/5.0
Behavior5/5

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

Beyond readOnlyHint/openWorldHint, it discloses the return shape (id, name, symbol count, plus ordered symbols), the conditional default behavior of include_symbols, the authentication requirement (OAuth sign-in or account key), and the access scope ('reads nothing but this account'). These are exactly the facts an agent cannot get from 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.

Conciseness5/5

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

Three sentences ordered by importance — trigger, return contents, auth/scope — with no filler or repetition of the title.

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

Completeness5/5

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

With no output schema and only one optional parameter, the description supplies everything needed: when to call, what comes back, the flag's effect, and the auth prerequisite.

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

Parameters4/5

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

The single parameter is already 100% documented in the schema, so the baseline is 3; the description adds value by stating the symbols are returned 'unless include_symbols is false' and that they come back 'in order', details absent from the schema.

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

Purpose5/5

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

The description pairs a specific verb with a specific resource ('Returns the account's watchlists... and the symbols on each list') and states the triggering user intents, so it is distinguishable from the many market-data 'get_*' siblings at a glance.

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

Usage Guidelines4/5

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

It gives concrete use conditions: user asks what is on a watchlist, which lists exist, or as a prerequisite 'before adding or removing a symbol' — which implicitly routes to add_watchlist_symbol/remove_watchlist_symbol. The alternative tools are not named explicitly and there are no exclusion statements, so it falls short of a 5.

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

parse_alert_textAlert text to an alert recipe: turn a sentence like "BTC funding above 0.05%" into the recipe it describesA
Read-only
Inspect

Call this when the user describes an alert in words ("tell me when ETH drops 5% in a day", "BTC funding above 5 bps", "liquidations over $20M in an hour") and you want the exact recipe before creating it. Rule based, nothing is saved: returns recipe (name, scope, symbols, conditions of field, op, value, cooldownHours, channels) or null, confidence 0..1, a one-line summary to confirm with the user, and unresolved (what the text left open or what was assumed; timing words are not part of a recipe). A threshold the text does not state is never invented. English and tickers; at most 500 characters. Pass the returned conditions, scope, symbols and channels to create_alert_recipe once the user agrees.

NameRequiredDescriptionDefault
textYesstring, the alert in plain English, e.g. "SOL funding below -0.01% or OI up 10%"

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds substantial value on top: rule-based, nothing is saved, returns recipe or null, confidence 0..1, and an unresolved list of what was left open or assumed. The guarantee that 'a threshold the text does not state is never invented' is exactly the kind of behavioral contract an agent needs before trusting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the trigger condition before the return contract, and every clause carries information. It is a single dense paragraph with multiple parentheticals, which slightly taxes scanning, but nothing is filler.

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

Completeness5/5

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

No output schema exists, but the description enumerates the return fields (recipe with name/scope/symbols/conditions/cooldownHours/channels, null, confidence, summary, unresolved), so an agent knows exactly what comes back. For a one-parameter, read-only tool, nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100% and there is only one parameter, so the schema baseline already applies. The description still adds real constraints beyond the schema: input must be English with tickers and is capped at 500 characters. It does not restate the mechanics of the parsed field set beyond naming them, which is fine since the return shape is described.

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

Purpose5/5

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

States a specific verb+resource (parse alert text into an alert recipe) and immediately grounds it in concrete example sentences. It clearly distinguishes itself from create_alert_recipe and list_alert_recipes in the sibling set by positioning as the parse-only step before creation.

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

Usage Guidelines5/5

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

Explicit trigger ('Call this when the user describes an alert in words') with three illustrative phrasings, plus an explicit follow-on action: pass conditions/scope/symbols/channels to create_alert_recipe once the user agrees. The when and the what-next are both stated, leaving no inference needed.

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

remove_tracked_addressStop following a Hyperliquid address (writes to your account)A
DestructiveIdempotent
Inspect

Call this when the user asks to stop following or tracking a Hyperliquid address. Takes the id from list_tracked_addresses; the address's alerts stop, its recorded events stay.

NameRequiredDescriptionDefault
idYesstring, the id from list_tracked_addresses

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the description does not need to restate that it mutates state. It does add real value beyond them by scoping the destruction: alerts stop but recorded history is preserved, which tells the agent what is and isn't lost. It does not mention behavior for an unknown or stale id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two short sentences with the trigger front-loaded and the side-effect clause second. No filler, no restatement of the title.

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

Completeness4/5

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

For a one-parameter mutation with rich annotations and no output schema, the description covers when to call it, where the id comes from, and what happens to existing data. Only the failure mode for an invalid id is unaddressed, which is a minor gap.

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

Parameters3/5

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

There is one required parameter with 100% schema coverage, which already states it is the id from list_tracked_addresses. The description repeats that same fact rather than adding format, validation, or lookup guidance, so it sits at the baseline.

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

Purpose5/5

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

States a specific action and resource — stop following/tracking a Hyperliquid address — with a clear trigger phrase. It is immediately distinguishable from the opposite sibling add_tracked_address and from the read-only list_tracked_addresses.

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

Usage Guidelines4/5

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

"Call this when the user asks to stop following or tracking a Hyperliquid address" gives an explicit trigger, and it directs the agent to obtain the id from list_tracked_addresses. There are no explicit exclusions, but for a single-purpose toggle the invocation context is unambiguous.

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

remove_watchlist_symbolRemove a symbol from your watchlist (writes to your account)A
DestructiveIdempotent
Inspect

Call this when the user asks to stop watching a coin or remove it from their watchlist. Removes the symbol from the list named by watchlist_id, else from the default list (or the only list the account has); a symbol that is not on the list changes nothing. Returns the list's symbols after the change. Writes are rate limited per connection (sign-in or key) and each one is recorded on the account.

NameRequiredDescriptionDefault
symbolYesstring, the symbol to remove, e.g. SOLUSDT or SOL
watchlist_idNostring, optional list id from list_watchlists (default: the default list)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructive/not-readOnly/idempotent, and the description adds genuinely new context: a missing symbol is a silent no-op, the return value is the post-change symbol list, and writes are rate limited per connection and recorded on the account. That is exactly the operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Four sentences, each carrying distinct information: trigger, targeting logic, no-op behavior, and side effects/return. The trigger is front-loaded and nothing is redundant with the title.

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

Completeness5/5

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

For a two-parameter mutation with no output schema, the description covers targeting, idempotency behavior, return shape ('returns the list's symbols after the change'), and rate-limit/audit side effects. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description goes slightly beyond by explaining the watchlist_id fallback precedence (named list, else default list, else the only list the account has) and the symbol example semantics of a no-op. It does not add format/syntax detail, so not a 5.

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

Purpose5/5

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

States a specific verb and resource ('Removes the symbol from the list') plus the scope resolution (named watchlist_id, else default list). An agent can immediately distinguish this from add_watchlist_symbol and list_watchlists without opening any schema.

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

Usage Guidelines4/5

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

Opens with an explicit trigger: 'Call this when the user asks to stop watching a coin or remove it from their watchlist' — clear when-to-use guidance. It lacks an explicit alternative/exclusion clause, though the routing to watchlist_id and list_watchlists is implicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 68 tool updatesv1.1.0
    • Changedadd_tracked_address1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedadd_watchlist_symbol1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcreate_alert_recipe1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddelete_alert_recipe1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_altseason1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_borrow_rates1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_coinbase_premium1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_correlations2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_cot_positioning1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_coverage4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "compact",
        +      "full"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / detail / description
        Previous value: -"Optional. true: every snapshot feed, the zh, ru and ko notes and the venue by product matrix cells (default false)."New value: +"Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
      • removedInput schema / properties / detail / type
        Removed value: -"boolean"
    • Changedget_cycle_indicators1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_data_proof1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_desk_notes2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_etf_flows1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_factor_board2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_fee_table1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_flow_toxicity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_fomc_impact1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_funding_arbitrage2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_funding_heatmap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_hl_positions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_hl_whales2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_insurance_funds1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_iv_surface1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_jupiter_perps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_lead_lag1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_leverage_tiers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_liqmap4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "compact",
        +      "full"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / detail / description
        Previous value: -"Optional. true: every real level and every real print (default false: the 30 nearest levels, the 30 newest prints)."New value: +"Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
      • removedInput schema / properties / detail / type
        Removed value: -"boolean"
    • Changedget_liquidation_cascades1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_liquidation_leaderboard1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_liquidations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_macro_liquidity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_market_indices1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_market_profile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_metric_context1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_network_health1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_new_listings2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_open_interest1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_options_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_options_flow2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_options_snapshot1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_orderbook_depth1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_positioning2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_pressure_scores1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_psi_charge1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_quantum_exposure1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_rsi_heatmap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_series1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_settlements1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_slippage1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_solana_perps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_theme_indices1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_tokenized_stocks2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_top_movers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_tradfi_board1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_tradfi_gaps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_turkey_premium2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_venue_markets2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / detail
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "compact",
        +        "full"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Optional. \"compact\": a shorter page than the default (fewer rows, newest points kept, rounded figures, long text cut, grids left out; every cut named in trimmed). \"full\" or true: the whole route answer, still under the 100,000 character ceiling (the largest boards answer the ceiling note then: narrow them with symbol, limit or days instead). Omitted or false: the default first page."
        +}
    • Changedget_venue_profile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_venue_share1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_whale_tape1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_withdrawal_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_alert_recipes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_tracked_addresses1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_watchlists1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedparse_alert_text1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedremove_tracked_address1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedremove_watchlist_symbol1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 3 tool updatesv0.36.1
    • Changedget_desk_notes1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Notes to return, 1..100 (default 50)"New value: +"Notes to return, 1..100 (default 25 for the last 24 hours, 50 with day or since)"
    • Changedget_factor_board1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows to return, 1..400 (default 40)",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_series1 field changed
      • changedInput schema / properties / to / description
        Previous value: -"string, optional ISO end (default now)"New value: +"string, optional ISO end (default now); a to before the newest 300 bars of the period needs member depth, except daily and coarser price bars"
  3. 25 tool updatesv0.36.0
    • Changedget_borrow_rates2 fields changed
      • addedInput schema / properties / asset
        Added value: +{
        +  "description": "Optional. One asset, e.g. USDT: its rates, carry and full 30-day series.",
        +  "pattern": "^[A-Z0-9]{2,12}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / hours
        Added value: +{
        +  "description": "Optional. Hours of hourly series to return (default 24, or the full 720 with asset).",
        +  "maximum": 720,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_coinbase_premium1 field changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Optional. Days of kimchi and Turkey premium daily rows, newest first (default 7, up to 90).",
        +  "maximum": 90,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_coverage1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "Optional. true: every snapshot feed, the zh, ru and ko notes and the venue by product matrix cells (default false).",
        +  "type": "boolean"
        +}
    • Addedget_desk_notes
    • Changedget_etf_flows2 fields changed
      • changedInput schema / properties / asset / description
        Previous value: -"Filter to one asset (BTC, ETH or SOL, SOL since 2026-09-02). Omit for all."New value: +"Filter to one asset (BTC, ETH, SOL or XRP). Omit for all."
      • changedInput schema / properties / asset / enum
        Previous value: -[
        -  "BTC",
        -  "ETH",
        -  "SOL"
        -]New value: +[
        +  "BTC",
        +  "ETH",
        +  "SOL",
        +  "XRP"
        +]
    • Changedget_funding_arbitrage1 field changed
      • addedInput schema / properties / symbol
        Added value: +{
        +  "description": "Optional. One perp, e.g. BTCUSDT or BTC: its row with every venue leg.",
        +  "type": "string"
        +}
    • Changedget_hl_whales1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Coins and positions without coin, largest first (default 30).",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_lead_lag1 field changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Optional. Daily rows per pair, newest kept (default 7, up to 30).",
        +  "maximum": 30,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_leverage_tiers1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows per list without symbol (default 30).",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_liqmap2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "Optional. true: every real level and every real print (default false: the 30 nearest levels, the 30 newest prints).",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / timeframe / description
        Previous value: -"Model window. Default 24h, the only one served without a Builder or higher key."New value: +"Model window. Default 24h, the only one on the Free plan; Builder and higher plans get every window."
    • Changedget_liquidations1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows to return, newest day first and largest first within a day (default 30 without symbol, 400 with one).",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_macro_liquidity2 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Window in days, 30-4000 (default 365); the route clamps to that range."New value: +"Window in days, 30-4000; the route clamps to that range. Omit for the newest 7 points of each series."
      • addedInput schema / properties / series
        Added value: +{
        +  "description": "Optional. One series key from the answer's series field, e.g. fred_walcl_busd.",
        +  "pattern": "^[a-z0-9_]{2,60}$",
        +  "type": "string"
        +}
    • Changedget_network_health2 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Window in days, 30-4000 (default 365); the route clamps to that range."New value: +"Window in days, 30-4000; the route clamps to that range. Omit for the newest 7 points of each series."
      • addedInput schema / properties / series
        Added value: +{
        +  "description": "Optional. One series key from the answer's series field, e.g. btc_hashrate_ehs.",
        +  "pattern": "^[a-z0-9_]{2,60}$",
        +  "type": "string"
        +}
    • Changedget_options_chain1 field changed
      • changedInput schema / properties / strikes / description
        Previous value: -"top (largest strikes) or all (member depth)"New value: +"top (largest strikes) or all (Builder and higher plans)"
    • Changedget_positioning2 fields changed
      • addedInput schema / properties / cvd_points
        Added value: +{
        +  "description": "Optional. Newest points per CVD series (1h and 5m); default 24 without symbol, every point with one.",
        +  "maximum": 288,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Perps without symbol, most traded first (default 10, up to 30).",
        +  "maximum": 30,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_rsi_heatmap2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows without symbol (default 30).",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / order
        Added value: +{
        +  "description": "Optional. With sort: desc (default, most overbought first) or asc (most oversold first).",
        +  "enum": [
        +    "desc",
        +    "asc"
        +  ],
        +  "type": "string"
        +}
    • Changedget_series3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"number, optional newest bars, 10..5000; the key's depth caps it"New value: +"number, optional newest bars, 10..5000; the plan's depth caps it (default 300 without from)"
      • changedInput schema / properties / period / description
        Previous value: -"string, optional bar period: 5m | 15m | 1h | 4h | 1d (default 1h; each metric has a finest period)"New value: +"string, optional bar period: 1m | 3m | 5m | 10m | 15m | 30m | 1h | 2h | 4h | 6h | 8h | 12h | 1d | 3d | 1w | 1M (default 1h; each metric has a finest period)"
      • changedInput schema / properties / period / enum
        Previous value: -[
        -  "5m",
        -  "15m",
        -  "1h",
        -  "4h",
        -  "1d"
        -]New value: +[
        +  "1m",
        +  "3m",
        +  "5m",
        +  "10m",
        +  "15m",
        +  "30m",
        +  "1h",
        +  "2h",
        +  "4h",
        +  "6h",
        +  "8h",
        +  "12h",
        +  "1d",
        +  "3d",
        +  "1w",
        +  "1M"
        +]
    • Changedget_settlements2 fields changed
      • addedInput schema / properties / base
        Added value: +{
        +  "description": "Optional. One underlying, e.g. BTC: every expiry row and settlement price of that asset.",
        +  "pattern": "^[A-Z0-9]{1,16}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows per list without base (default 30): expiries soonest first, settlements newest first.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_solana_perps1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Markets without venue, largest first (default 30).",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_tokenized_stocks1 field changed
      • changedInput schema / properties / top / description
        Previous value: -"Rows by supply (default 20, max 200)."New value: +"Rows by supply (default 10, max 200)."
    • Changedget_tradfi_board1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Contracts without symbol, largest open interest first (default 30).",
        +  "maximum": 150,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_tradfi_gaps1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Underlyings without symbol, in the board's order, for the summary and the latest window (default 15, up to 60).",
        +  "maximum": 60,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_turkey_premium1 field changed
      • addedInput schema / properties / daily_days
        Added value: +{
        +  "description": "Optional. Days of daily rows, newest first (default 7 without pair, every recorded day with one).",
        +  "maximum": 30,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_venue_markets1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Venue market rows without symbol, largest open interest first (default 30).",
        +  "maximum": 250,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedget_withdrawal_status1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional. Rows of the overview lists (paused networks, events) without asset (default 30).",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  4. 20 tool updatesv0.31.0
    • Addedadd_tracked_address
    • Addedadd_watchlist_symbol
    • Addedcreate_alert_recipe
    • Addeddelete_alert_recipe
    • Addedget_hl_positions
    • Changedget_macro_liquidity3 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Window in days, 1-730 (default 365)."New value: +"Window in days, 30-4000 (default 365); the route clamps to that range."
      • changedInput schema / properties / days / maximum
        Previous value: -730New value: +4000
      • changedInput schema / properties / days / minimum
        Previous value: -1New value: +30
    • Addedget_market_profile
    • Changedget_network_health3 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Window in days, 1-730 (default 365)."New value: +"Window in days, 30-4000 (default 365); the route clamps to that range."
      • changedInput schema / properties / days / maximum
        Previous value: -730New value: +4000
      • changedInput schema / properties / days / minimum
        Previous value: -1New value: +30
    • Addedget_options_chain
    • Addedget_series
    • Changedget_solana_perps2 fields changed
      • changedInput schema / properties / symbol / description
        Previous value: -"Market symbol on the chosen venue (Pacifica when venue is not given) for hourly history, e.g. SOL, SOL-PERP, SOL-USD"New value: +"Market symbol on the chosen venue (Pacifica when venue is not given) for hourly history, as the board lists it, e.g. SOL, SOL-PERP, SOL-USD, kBONK"
      • changedInput schema / properties / symbol / pattern
        Previous value: -"^[A-Z0-9_.-]{1,24}$"New value: +"^[A-Za-z0-9_.-]{1,24}$"
    • Changedget_tokenized_stocks2 fields changed
      • changedInput schema / properties / issuer / description
        Previous value: -"One issuer; omit for every issuer."New value: +"One issuer: xstocks, robinhood, coinbase, bstocks, ondo, backpack, gstocks, reality, superstate, figure, dinari or securitize; omit for every issuer."
      • changedInput schema / properties / issuer / enum
        Previous value: -[
        -  "xstocks",
        -  "robinhood",
        -  "coinbase",
        -  "bstocks",
        -  "ondo",
        -  "backpack",
        -  "gstocks"
        -]New value: +[
        +  "xstocks",
        +  "robinhood",
        +  "coinbase",
        +  "bstocks",
        +  "ondo",
        +  "backpack",
        +  "gstocks",
        +  "reality",
        +  "superstate",
        +  "figure",
        +  "dinari",
        +  "securitize"
        +]
    • Addedget_tradfi_gaps
    • Addedget_venue_share
    • Addedlist_alert_recipes
    • Addedlist_tracked_addresses
    • Addedlist_watchlists
    • Addedparse_alert_text
    • Addedremove_tracked_address
    • Addedremove_watchlist_symbol
  5. 1 tool updatev0.30.4
    • Addedget_solana_perps
  6. 1 tool updatev0.30.0
    • Addedget_tokenized_stocks
  7. 3 tool updatesv0.29.0
    • Addedget_insurance_funds
    • Addedget_liquidation_leaderboard
    • Changedget_options_snapshot1 field changed
      • addedInput schema / properties / venue
        Added value: +{
        +  "description": "all (default) sums every options venue; or one venue id: deribit, bybit, binance, okx or delta (Delta Exchange India).",
        +  "enum": [
        +    "all",
        +    "deribit",
        +    "bybit",
        +    "binance",
        +    "okx",
        +    "delta"
        +  ],
        +  "type": "string"
        +}
  8. 1 tool updatev0.28.0
    • Addedget_data_proof
  9. 23 tool updatesv0.27.2
    • Addedget_borrow_rates
    • Addedget_coverage
    • Addedget_cycle_indicators
    • Changedget_etf_flows2 fields changed
      • changedInput schema / properties / asset / description
        Previous value: -"Filter to one asset. Omit for both."New value: +"Filter to one asset (BTC, ETH or SOL, SOL since 2026-09-02). Omit for all."
      • changedInput schema / properties / asset / enum
        Previous value: -[
        -  "BTC",
        -  "ETH"
        -]New value: +[
        +  "BTC",
        +  "ETH",
        +  "SOL"
        +]
    • Addedget_fee_table
    • Addedget_hl_whales
    • Changedget_iv_surface1 field changed
      • addedInput schema / properties / currency / enum
        Added value: +[
        +  "BTC",
        +  "ETH"
        +]
    • Addedget_jupiter_perps
    • Addedget_leverage_tiers
    • Changedget_liqmap1 field changed
      • addedInput schema / properties / timeframe
        Added value: +{
        +  "description": "Model window. Default 24h, the only one served without a Builder or higher key.",
        +  "enum": [
        +    "1h",
        +    "4h",
        +    "12h",
        +    "24h",
        +    "3d",
        +    "1w",
        +    "30d"
        +  ],
        +  "type": "string"
        +}
    • Changedget_new_listings1 field changed
      • changedInput schema / properties / days / description
        Previous value: -"Window in days, 1-30 (default 30). Longer listing history is the paid x402 dataset."New value: +"Window in days, 1-30 (default 30). Longer listing history is the listings dataset at bykaranteli.com/data."
    • Addedget_orderbook_depth
    • Addedget_positioning
    • Removedget_recent_signals
    • Addedget_rsi_heatmap
    • Addedget_settlements
    • Removedget_strategy_leaderboard
    • Removedget_symbol_performance
    • Addedget_tradfi_board
    • Addedget_turkey_premium
    • Changedget_venue_markets1 field changed
      • addedInput schema / properties / history_days
        Added value: +{
        +  "description": "Return the hourly multi-venue open interest history (total, DEX share, OI-weighted funding) for this many days instead of the snapshot",
        +  "maximum": 90,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Addedget_venue_profile
    • Addedget_withdrawal_status
  10. 18 tool updatesv0.9.0
    • Addedget_altseason
    • Addedget_correlations
    • Addedget_factor_board
    • Addedget_fomc_impact
    • Addedget_iv_surface
    • Addedget_lead_lag
    • Addedget_liqmap
    • Addedget_liquidation_cascades
    • Addedget_macro_liquidity
    • Addedget_metric_context
    • Addedget_network_health
    • Addedget_new_listings
    • Addedget_open_interest
    • Addedget_psi_charge
    • Addedget_quantum_exposure
    • Addedget_theme_indices
    • Addedget_venue_markets
    • Addedget_whale_tape
  11. 16 tool updatesv0.5.0
    • First observedget_coinbase_premium
    • First observedget_cot_positioning
    • First observedget_etf_flows
    • First observedget_flow_toxicity
    • First observedget_funding_arbitrage
    • First observedget_funding_heatmap
    • First observedget_liquidations
    • First observedget_market_indices
    • First observedget_options_flow
    • First observedget_options_snapshot
    • First observedget_pressure_scores
    • First observedget_recent_signals
    • First observedget_slippage
    • First observedget_strategy_leaderboard
    • First observedget_symbol_performance
    • First observedget_top_movers

TDQS

A3.9/5.0

Scored across 68 tools

Disambiguation3/5

Individual descriptions are excellent and frequently disambiguate with explicit pointers ("for a pre-ranked top-10 use get_top_movers instead"), but the set has several crowded families: liquidations appear as get_liquidations, get_liquidation_cascades, get_liquidation_leaderboard, get_liqmap and get_hl_positions; options as get_options_snapshot, get_options_chain, get_options_flow and get_iv_surface; venues as get_venue_markets, get_venue_profile and get_venue_share. get_series additionally overlaps with get_open_interest, get_funding_heatmap, get_rsi_heatmap and most history tools, so an agent must read carefully before selecting.

Naming Consistency5/5

Every tool uses a snake_case verb_noun pattern with a small, predictable verb set (get_, list_, add_, remove_, create_, delete_, parse_) and resource-oriented nouns that match the domain vocabulary. No camelCase or stylistic mixing anywhere.

Tool Count2/5

68 tools is far beyond what an agent can hold in working context, even though each maps to a real data product on a broad crypto analytics platform. Coverage of exotic niches (tokenized stocks, quantum exposure, Turkey premium, PsiCharge) means many tools are rarely relevant but still consume selection space; splitting into market/derivatives/venues/account subsets would help.

Completeness4/5

Read coverage across market data, derivatives, venues, macro and on-chain proof is exceptionally thorough with no obvious dead ends for analysis workflows. Gaps are in account management: watchlists can be listed, appended to and pruned but never created, renamed or deleted, and alert recipes can be created/listed/deleted but not updated or toggled enabled/disabled.

Maintenance

ActivityNo data
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Perp-first funding rate & RWA spread data for AI agents. 30+ CEX/DEX venues, 6 tools (4 x402-paywalled, 2 free), bring-your-own-wallet via Base mainnet.
    6
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides real-time cryptocurrency market signals including RSI, top gainers, price action, kimchi premium, market prices, and derivatives data from multiple exchanges.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Delivers 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.
    13 npm
    MIT