BitCLI — Crypto Futures & Order Flow
Server Details
Real-time crypto futures order flow, liquidation cascades, and quantitative TA metrics across 1,650+ perpetuals (Binance, Bybit, Hyperliquid). Delivers ultra-dense, token-efficient summaries and async SSE alerts directly into AI agent context without burning tokens on raw OHLCV candles.
- Status
- Healthy
- Uptime
- 99.8% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: market_data reads analytics, calc_engine performs math, alert_manager manages triggers, send_notification dispatches messages, system_docs returns documentation, and user_account queries account state. The descriptions explicitly disambiguate the closest pair (alert_manager vs. send_notification) and direct agents to the right tool for polling versus asynchronous monitoring.
All six tool names use snake_case and are readable, which is consistent. The only minor deviation is that most are noun phrases (alert_manager, calc_engine, market_data) while send_notification uses a verb_noun pattern, so the naming is mostly but not perfectly uniform.
Six tools is well within the appropriate range for a focused crypto futures analytics and alerting server. Each tool covers a distinct capability area and none appears redundant or purely ornamental.
The surface covers market analysis, risk calculation, alert lifecycle, notifications, documentation, and account inspection, which supports the core analytics/risk-monitoring workflow. Minor gaps remain around direct order execution or position management, but those may be outside the intended scope of this analytics-oriented server.
Available Tools
6 toolsalert_managerAInspect
BEHAVIOR: State-mutating operation. Injects or removes in-memory execution triggers in the C++ engine. When triggered, it dispatches asynchronous out-of-band notifications (Telegram/Discord) without requiring the agent to remain awake.
PRICING: Targeted coin alerts cost $0.001 USD. Global wildcard scans ('*') cost $0.002 USD. Wildcards require a positive USD balance on Free/Trader plans.
ACTIONS & PARAMETER INTERACTIONS:
'create': Deploys a new trigger. Requires 'command'. Returns the assigned alert_id and expiration time.
'list': Returns an array of currently active triggers, their IDs, and remaining TTLs. Ignores 'command' and 'alert_id'.
'cancel': Removes a specific trigger. Requires 'alert_id'. Ignores 'command'.
'clear_all': Purges all active triggers for the account. Ignores 'command' and 'alert_id'.
USAGE GUIDELINES: Use this tool to establish asynchronous monitoring instead of polling market_data. Requires an authenticated API key; anonymous guests will receive an authorization error. Enforces plan capacity limits.
ERRORS: Authentication failures, capacity limit breaches, or syntax errors return an explicit 'isError: true' payload detailing the rejection reason.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Trigger management action. | |
| command | No | Unified BitCLI command string (required for 'create', e.g. 'btc 95k', '* vol 15m x4 cd=30m'). | |
| alert_id | No | Numeric alert identifier (required for 'cancel'). | |
| ttl_minutes | No | Mandatory lifetime in minutes (range: 1 to 1440). Alerts automatically expire afterward. | |
| destinations | No | Array of destination routing strings obtained via `user_account` (e.g. ['tg_user:12345']). Defaults to the user's registered Telegram. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses state mutation, that alerts fire out-of-band (Telegram/Discord) without the agent staying awake, per-action pricing ($0.001 vs $0.002 wildcard), balance requirements, TTL auto-expiry, and the shape of error payloads. This is exactly the behavioral context annotations would otherwise supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (BEHAVIOR / PRICING / ACTIONS / USAGE / ERRORS) front-load the mutation and async semantics before the per-action breakdown. Every line conveys distinct information — no restatement of the name or filler prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating what `create` returns (alert_id plus expiration) and what `list` returns (active triggers, IDs, remaining TTLs). Combined with auth, pricing, capacity, and error behavior, an agent has everything needed to invoke this five-parameter mutation tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by mapping parameters to actions — 'create' requires `command`, 'cancel' requires `alert_id`, and 'list'/'clear_all' explicitly ignore them. That action-parameter interaction is not expressed anywhere in the schema and prevents misfires; only the `destinations` and `ttl_minutes` routing details are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb family (inject/remove triggers) and resource (in-memory execution triggers in the C++ engine), then enumerates the four concrete actions with what each does. An agent can immediately tell this apart from `market_data` polling and `calc_engine`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use this tool to establish asynchronous monitoring instead of polling `market_data`.' It also states the prerequisites (authenticated API key, guests get an auth error) and the constraint (plan capacity limits), so when-to-use and when-it-will-fail are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_engineAInspect
BEHAVIOR: Deterministic mathematical calculation. Evaluates crypto futures risk management models using live exchange parameters.
PRICING: $0.001 USD per execution. Deducted from daily tariff quota or USD balance.
SYNTAX EXAMPLES (Passed in 'command'):
'/pos btc 65k 63.7k 50' (Position Sizing)
'/liq sol 20x short' (True Liquidation with MMR)
'/dca btc 65k:100 64k:200' (DCA Break-Even with exit fees)
'/rr btc 65k 64k 67k 69k' (Multi-Target R:R)
'/fncost btc 10000 long' (Carry Cost)
'/atr btc 1h 2' (Volatility Stops)
RETURNS: Output is a structured JSON payload. Depending on the command, keys include: 'ideal_lot_coins', 'notional_usd', 'required_margin', 'liquidation_price', 'true_breakeven_price', 'effective_rr_ratio', or 'stop_distance'.
USAGE GUIDELINES: Use this tool exclusively for mathematical risk modeling and lot sizing. For live market scanning, use market_data. For setting execution triggers, use alert_manager. After calculating risk parameters, it is highly recommended to route the generated stop-loss or liquidation prices into alert_manager to automate monitoring.
ERRORS: Malformed syntax returns an 'error' JSON key with correction guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The CLI risk command (e.g. '/pos btc 65000 63700 50'). | |
| exchange | No | Default exchange context if not explicitly specified inside the command string. | bybit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it declares determinism, states the per-execution price and the billing source (daily quota or USD balance), and specifies the error contract ('Malformed syntax returns an error JSON key with correction guidance'). Those are exactly the non-obvious behaviors an agent needs before calling a metered tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (BEHAVIOR, PRICING, SYNTAX, RETURNS, USAGE, ERRORS) put the essential framing first and are scannable. The six example commands are individually informative but collectively borderline verbose; trimming to four plus a note on grammar would lose nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description steps in with the concrete return keys ('ideal_lot_coins', 'liquidation_price', 'effective_rr_ratio', etc.), plus error and pricing behavior. For a two-parameter, metered, DSL-driven tool, nothing an agent needs in order 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.
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 supplying six worked command strings covering position sizing, liquidation, DCA, R:R, carry cost and ATR stops, which convey the DSL grammar that the schema alone only gestures at with one example. It does not fully formalize argument order or units, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('deterministic mathematical calculation' of crypto futures risk management models) and immediately scopes out live data by naming which sibling handles it. The command examples make the resource concrete enough that an agent knows exactly what class of work belongs here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes work: 'use this tool exclusively for mathematical risk modeling and lot sizing', 'for live market scanning, use market_data', 'for setting execution triggers, use alert_manager'. It also gives a proactive follow-up ('route the generated stop-loss or liquidation prices into alert_manager'), which is rare and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_dataAInspect
BEHAVIOR: Read-only analytical gateway. Fetches real-time derivatives intelligence across Binance, Bybit, and Hyperliquid.
PRICING: $0.001 USD per execution. Deducted from daily tariff quota or USD balance.
ACTIONS & RETURNS:
'screener': Scans 1,650+ perpetuals to catch pumps, dumps, whale volume spikes, and short squeezes. Returns a JSON array of matched assets containing fields: symbol, price, rvol, fund, oi, oichg, rsi, bias, natr, cvd.
'consensus': Returns JSON with Quant TA consensus score, CVD slope, RSI, ATR, and EMA bias for a single coin.
'bct_matrix': Returns compact historical candlestick matrices with server-side computed indicators to minimize token usage.
USAGE GUIDELINES: Use this to analyze market state or find trade setups. Do NOT use this tool to continuously poll for price updates or wait for conditions to be met; instead, invoke alert_manager to establish asynchronous monitoring.
ERRORS: Malformed filters or unlisted tickers return an explicit JSON error object with syntax correction guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| tf | No | Candle timeframe interval (used only for 'bct_matrix'). | 5m |
| coin | No | Asset ticker (required for 'consensus' and 'bct_matrix', e.g. 'BTC'). | |
| limit | No | Result count limit: 1-25 for 'screener', 1-512 for 'bct_matrix'. | |
| action | Yes | Analytical action to perform. | |
| columns | No | Selective columns for 'bct_matrix' to minimize inference tokens. | |
| command | No | Filter command for 'screener' (e.g. 'vol>10m rvol>2 fund<0 sort:rvol_desc'). Omit for default radar. | |
| exchange | No | Exchange scope. 'agg' provides volume-summed cross-exchange data. | agg |
| indicators | No | Technical indicators for 'bct_matrix' (e.g. ['rsi:14', 'ema:200']). Computed server-side. | |
| inline_indicators | No | If True, appends indicator values to every row. If False, snapshots latest values in @META. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present the description carries the entire burden and does so unusually well: it declares read-only behavior, a per-execution price ($0.001) with the billing source (daily tariff quota or USD balance), and a precise error contract (JSON error object with syntax correction guidance). Those are the cost and failure-mode facts an agent cannot get from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and sectioned (BEHAVIOR / PRICING / ACTIONS & RETURNS / USAGE / ERRORS), so the read-only and cost facts appear before the detail. Every block carries information an agent needs given there is no output schema; nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, 3-mode tool with no output schema and no annotations, the description compensates fully: it explains each action's return fields, the cost model, the error format, and the polling anti-pattern. An agent can select an action and interpret the response without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by tying each action value to its output shape (screener's symbol/rvol/fund/oi field list, consensus's TA score set, bct_matrix's compact matrices) and by flagging that malformed filter expressions fail with corrective guidance. It does not add syntax detail for tf, limit, columns, exchange, or inline_indicators beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("fetches real-time derivatives intelligence across Binance, Bybit, and Hyperliquid") and then enumerates all three actions with what each returns, so an agent knows exactly which mode to request. It also separates itself from the sibling alert_manager by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive case ("analyze market state or find trade setups") and an explicit exclusion ("Do NOT use this tool to continuously poll for price updates or wait for conditions") plus the named alternative (alert_manager). That is the full when/when-not/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_notificationAInspect
BEHAVIOR: Outbound messaging operation. Routes proactive notifications to the human trader's verified Telegram chat, channel, or Discord webhook. Dispatches discretionary trade ideas, market condition updates, or risk reports to keep the user informed without waiting for prompts.
PRICING: $0.001 USD per dispatch. Deducted from daily tariff quota or USD balance.
PARAMETER INTERACTIONS:
'target': Destination identifier string obtained from
user_account.list_destinations. Prefixes determine transport: 'tg_user:' / 'tg_channel:' for Telegram, 'out_wh:' for Discord webhooks. Must belong to the authenticated account.'message': Main message body. For Telegram, supports HTML tags. For Discord, maps to the embed description.
'title': Optional subject line. For Discord, renders as the embed headline. For Telegram, prepends as a bold header if provided.
RETURNS: Structured JSON confirming transmission: 'status' ('dispatched'), 'target', 'message_length', 'timestamp_utc', and '_usage' (cost_usd and remaining quota/balance).
USAGE GUIDELINES: Call user_account with action='list_destinations' prior to sending to retrieve valid target strings. Use this tool exclusively for informative messaging and human-in-the-loop updates. Do NOT use this tool to monitor market prices or set execution triggers (use alert_manager instead).
ERRORS: Unauthenticated calls, unverified/foreign destinations, empty messages, or exhausted quotas return an explicit 'isError: true' payload.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional headline used as Discord embed title or Telegram bold subject line. | |
| target | Yes | Verified delivery route (e.g. 'tg_user:12345678', 'out_wh:discord_vip') retrieved via `user_account.list_destinations`. | |
| message | Yes | Notification content. HTML tags supported for Telegram: <b>, <i>, <code>, <pre>. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden, and it does: per-dispatch cost ($0.001) and quota/balance deduction, authentication and destination-ownership requirements, error conditions (unverified/foreign destinations, empty messages, exhausted quotas), and the JSON return payload. These are operational traits an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labelled sections (BEHAVIOR, PRICING, PARAMETER INTERACTIONS, RETURNS, USAGE GUIDELINES, ERRORS) front-load the purpose before details. Slightly verbose in places — the RETURNS block partly duplicates what a caller would get anyway — but nearly every line carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter side-effecting messaging tool with no annotations and no output schema, the description supplies everything needed: cost model, auth preconditions, destination format, transport-specific formatting, error surfaces, and return shape. Nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the target prefix grammar ('tg_user:'/'tg_channel:'/'out_wh:') and how 'title' and 'message' render differently per transport (Discord embed headline/description vs. Telegram bold header/HTML body). These behavioral mappings are only partially present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Outbound messaging operation ... routes proactive notifications to the human trader's verified Telegram chat, channel, or Discord webhook') and enumerates the message classes it carries. It is clearly distinguishable from alert_manager (triggers/monitoring) and user_account (destination discovery).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call `user_account` with action='list_destinations' before sending, restricts the tool to informative messaging and human-in-the-loop updates, and names the alternative ('Do NOT use this tool to monitor market prices or set execution triggers (use `alert_manager` instead)'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_docsAInspect
BEHAVIOR: Read-only RAG documentation tool. Reads and returns official BitCLI markdown specifications, indicator formulas, CLI command guides, and webhook setups. Returns a single string containing the requested Markdown document.
PRICING: Free ($0.000). Does not consume quotas.
USAGE GUIDELINES: Use this tool FIRST to understand BitCLI mechanics, verify command grammar, or check webhook templates before constructing queries. Do NOT use this tool to query live market prices or active triggers (use market_data or alert_manager instead).
TOPICS:
'syntax': Price targets, percentage corridors, velocity moves.
'calculators': Position sizing, true MMR liquidation, DCA break-even, multi-target R:R.
'market_intel': Screener filters, cross-exchange aggregation.
'indicators': CVD divergence, Z-Scores, 8h normalized funding.
'webhooks': PineScript relay setup, private chat routing.
'tariffs': Subscription tiers and limits.
'partners': Affiliate program rules.
'ai': AI Copilot features.
'mcp': Model Context Protocol architecture, API key setup, and Cursor IDE integration.
'index': System overview.
ERRORS: Requesting an invalid topic returns a structured JSON error indicating the file was not found.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Specific documentation chapter to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only behavior, zero cost/no quota consumption, the exact return shape (single Markdown string), and the error contract for an invalid topic. What's missing is any hint of document size or retrieval latency, so it stops just short of fully describing the experience.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sectioned as BEHAVIOR / PRICING / USAGE / TOPICS / ERRORS with the core purpose front-loaded, so an agent can skim. The TOPICS list and PRICING block add bulk, but each entry maps to a real decision the caller must make, so little is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup tool with no output schema, the description covers purpose, exclusions, valid values with meaning, cost, return type, and failure mode. An agent has everything needed to invoke it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100% with an enum, so the baseline would be 3; the description earns above that by glossing each topic value (e.g. 'calculators' = position sizing, true MMR liquidation, DCA break-even), which lets an agent pick a chapter without guessing from the label alone. The glosses are brief and the labels are largely self-descriptive, keeping it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads and returns official BitCLI markdown specifications for formulas, CLI guides, and webhook setups. The read-only RAG framing plus the return type (a single Markdown document string) makes it unambiguous and clearly distinct from siblings like market_data or alert_manager.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool FIRST to learn BitCLI mechanics or verify command grammar, and explicitly excludes live price/active-trigger queries by naming the alternatives (market_data, alert_manager). Both the when and the when-not are stated with the substitute tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_accountAInspect
BEHAVIOR: Read-only configuration query. Inspects user ledger states, subscription tiers, and verified notification endpoints.
PRICING: Free ($0.000). Does not consume daily quotas or balance.
ACTIONS:
'get_billing': Returns subscription tier, available daily USD API quota, remaining USD balance, active alert count, and per-key daily spending safety limits.
'list_destinations': Returns verified external dispatch targets (Telegram chat IDs, Discord Webhooks) that can be supplied to the
alert_manager.
USAGE GUIDELINES: Use this tool at the beginning of a workflow to understand available budget and determine valid delivery destinations. Do NOT use this tool to manage triggers (use alert_manager) or query market data (use market_data).
ERRORS: Unauthenticated requests lacking a valid API key return an HTTP 401 equivalent error with a registration portal link.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Account action to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: declares read-only behavior, zero cost and no quota/balance consumption, and the 401 failure mode for missing API keys. It stops short of rate limits, pagination, or whether list_destinations results can go stale — minor gaps for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (BEHAVIOR, PRICING, ACTIONS, USAGE GUIDELINES, ERRORS) make it scannable and the scoping information is front-loaded. Slightly verbose — the pricing line could be folded in — but nearly every line carries actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, yet the description compensates by listing the return fields per action, the cost model, the auth requirement, and the error behavior. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a two-value enum, so the baseline is 3; the description adds real value by documenting what each enum value returns (billing fields vs. dispatch targets) and how list_destinations feeds into alert_manager. It does not constrain format or selection criteria beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states precisely what the tool does — a read-only query of ledger states, subscription tiers, and verified notification endpoints — and enumerates the two concrete actions with their return contents. It also names what it is not (alert_manager, market_data), so an agent can distinguish it from siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes timing ("Use this tool at the beginning of a workflow to understand available budget and determine valid delivery destinations") and gives two explicit exclusions with the correct alternative named for each. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
send_notification3 fields changed- changed
Input schema / properties / message / descriptionPrevious value: -"Text message body to send. Supports Telegram HTML formatting tags: <b>bold</b>, <i>italic</i>, <code>code</code>, <pre>code block</pre>."New value: +"Notification content. HTML tags supported for Telegram: <b>, <i>, <code>, <pre>." - changed
Input schema / properties / target / descriptionPrevious value: -"Verified destination target obtained via `user_account.list_destinations` (e.g. 'tg_user:12345678' or 'out_wh:discord_vip')."New value: +"Verified delivery route (e.g. 'tg_user:12345678', 'out_wh:discord_vip') retrieved via `user_account.list_destinations`." - changed
Input schema / properties / title / descriptionPrevious value: -"Optional brief subject header (used for Discord embed titles)."New value: +"Optional headline used as Discord embed title or Telegram bold subject line."
1 tool update
- Added
send_notification
14 tool updates
- Added
alert_manager - Added
calc_engine - Removed
cancel_alert - Removed
create_alert - Removed
dynamic_screener - Removed
get_account_usage - Removed
get_bct_candles - Removed
get_market_snapshot - Removed
get_ta_consensus - Removed
list_alerts - Added
market_data - Added
system_docs - Added
user_account - Removed
verify_payment
1 tool update
- Changed
dynamic_screener14 fields changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange scope. Use 'agg' for institutional cross-exchange view."New value: +"Exchange scope. Use 'agg' for institutional cross-exchange consolidated data, or specify an individual exchange." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max assets to return (1 to 25)"New value: +"Maximum number of coins to return (allowed range: 1 to 25, default: 10)." - changed
Input schema / properties / max_funding_8h / descriptionPrevious value: -"Max 8h funding %"New value: +"Maximum 8-hour normalized funding rate % (e.g. -0.02 for negative funding)." - changed
Input schema / properties / max_rsi / descriptionPrevious value: -"Max 15m RSI (0-100)"New value: +"Maximum 15-minute RSI-14 (0 to 100). Use max_rsi=30 to find oversold assets." - changed
Input schema / properties / min_cvd_1h_usd / descriptionPrevious value: -"Min 1h CVD Delta in USD"New value: +"Minimum 1-hour net CVD delta in USD (e.g. 100000 for $100k net taker buying)." - changed
Input schema / properties / min_funding_8h / descriptionPrevious value: -"Min 8h funding %"New value: +"Minimum 8-hour normalized funding rate % (e.g. 0.05 for +0.05%)." - changed
Input schema / properties / min_natr_1h / descriptionPrevious value: -"Min 1h nATR volatility %"New value: +"Minimum 1-hour Normalized ATR volatility in % (e.g. 3.5 for 3.5% volatility)." - changed
Input schema / properties / min_oi_change_24h / descriptionPrevious value: -"Min 24h OI growth %"New value: +"Minimum 24-hour Open Interest growth in % (e.g. 10.0 for +10% growth)." - changed
Input schema / properties / min_oi_usd / descriptionPrevious value: -"Min Open Interest in USD"New value: +"Minimum Open Interest in USD (e.g. 2000000 for $2M)." - changed
Input schema / properties / min_rsi / descriptionPrevious value: -"Min 15m RSI (0-100)"New value: +"Minimum 15-minute RSI-14 (0 to 100)." - changed
Input schema / properties / min_rvol / descriptionPrevious value: -"Min RVOL (e.g. 2.0)"New value: +"Minimum Relative Volume multiplier compared to 20-period historical SMA (e.g. 2.0 = 200% of average volume)." - changed
Input schema / properties / min_vol_24h_usd / descriptionPrevious value: -"Min 24h volume in USD"New value: +"Minimum 24-hour rolling trading volume in USD (e.g. 5000000 for $5M)." - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort results by." - added
Input schema / properties / sort_order / descriptionAdded value: +"Sort direction: 'desc' for highest first, 'asc' for lowest first."
1 tool update
- Added
dynamic_screener
1 tool update
- Changed
get_bct_candles1 field changed- changed
Input schema / properties / columns / descriptionPrevious value: -"Specify required columns to minimize token usage. Keys: 'o'=Open, 'h'=High, 'l'=Low, 'c'=Close, 'v'=Volume (kUSD), 'dv'=CVD Delta (kUSD). E.g., ['c', 'v', 'dv']. If omitted, returns all."New value: +"Specify required columns to minimize token usage. Keys: 'o'=Open, 'h'=High, 'l'=Low, 'c'=Close, 'v'=Volume (kUSD), 'dv'=CVD Delta (kUSD). E.g., ['c', 'v', 'dv']. If omitted, returns all OHLCV+DV."
1 tool update
- Changed
get_bct_candles3 fields changed- changed
Input schema / properties / columns / descriptionPrevious value: -"Specify required columns to minimize token usage. E.g., ['c', 'v', 'dv']. If omitted, returns all OHLCV+DV."New value: +"Specify required columns to minimize token usage. Keys: 'o'=Open, 'h'=High, 'l'=Low, 'c'=Close, 'v'=Volume (kUSD), 'dv'=CVD Delta (kUSD). E.g., ['c', 'v', 'dv']. If omitted, returns all." - added
Input schema / properties / exchangeAdded value: +{ + "default": "bybit", + "description": "Target exchange for data retrieval.", + "enum": [ + "binance", + "bybit", + "hl" + ], + "type": "string" +} - changed
Input schema / properties / indicators / descriptionPrevious value: -"List of indicators with periods, e.g. ['rsi:14', 'ema:50', 'sma:200', 'bb:20:2']."New value: +"List of indicators with periods. Supported: 'rsi:14', 'ema:200', 'sma:50', 'bb:20:2', 'atr:14', 'macd'."
1 tool update
- Changed
get_bct_candles1 field changed- added
Input schema / properties / columnsAdded value: +{ + "description": "Specify required columns to minimize token usage. E.g., ['c', 'v', 'dv']. If omitted, returns all OHLCV+DV.", + "items": { + "enum": [ + "o", + "h", + "l", + "c", + "v", + "dv" + ], + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
get_bct_candles5 fields changed- changed
Input schema / properties / coin / descriptionPrevious value: -"e.g., 'BTC' or 'BTCUSDT'"New value: +"Asset ticker (e.g. 'BTC', 'ETH', 'SOL', 'BTCUSDT'). Case-insensitive, auto-normalized." - changed
Input schema / properties / indicators / descriptionPrevious value: -"List of indicators, e.g. ['rsi:14', 'ema:50', 'sma:200', 'bb:20:2']"New value: +"List of indicators with periods, e.g. ['rsi:14', 'ema:50', 'sma:200', 'bb:20:2']." - changed
Input schema / properties / inline_indicators / descriptionPrevious value: -"If True, indicators are appended as columns to every candle instead of just the Meta header."New value: +"If True, appends values as matrix columns to every row. If False, keeps matrix ultra-compact and puts snapshot in @META." - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of final candles to return (Max 512)."New value: +"Number of final candles to return (range: 1 to 512, default: 100)." - added
Input schema / properties / tf / descriptionAdded value: +"Candlestick timeframe interval."
1 tool update
- Added
get_bct_candles
3 tool updates
- Changed
create_alert1 field changed- changed
Input schema / properties / command / descriptionPrevious value: -"Unified BitCLI alert command string (e.g. 'btc 95k', '* vol 15m x4 cd=15m')."New value: +"Unified BitCLI alert command string (e.g. 'btc 95k', '* vol 15m x4')."
- Added
get_account_usage - Added
verify_payment
5 tool updates
- Changed
cancel_alert1 field changed- changed
Input schema / properties / alert_id / descriptionPrevious value: -"Unique alert ID returned by create_alert (e.g. 'alrt_101')."New value: +"Unique identifier of the alert returned by `create_alert`."
- Changed
create_alert3 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Persistent agent or wallet identifier to track and recover alerts across reconnects."New value: +"Persistent agent identifier used to recover alert states across network reconnects." - changed
Input schema / properties / command / descriptionPrevious value: -"BitCLI alert command string."New value: +"Unified BitCLI alert command string (e.g. 'btc 95k', '* vol 15m x4 cd=15m')." - changed
Input schema / properties / ttl_minutes / descriptionPrevious value: -"Time-To-Live in minutes (1 to 1440). Alert auto-expires after this duration."New value: +"Subscription lifetime in minutes (range: 1 to 1440, default: 60). Auto-expires upon expiration."
- Changed
get_market_snapshot2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of coins to return (1-20)."New value: +"Maximum number of coins to return (allowed range: 1 to 20, default: 10)." - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Anomaly sorting metric: 'rvol_5m' (Whale volume spikes), 'funding_rate' (Carry squeezes), 'oi_change_1h' (Leverage inflow), 'natr_1h' (Volatility)."New value: +"Anomaly screening criteria: 'rvol_5m' (Whale volume bursts vs SMA20), 'funding_rate' (Carry cost & squeeze traps), 'oi_change_1h' (Aggressive leverage buildup), 'natr_1h' (Normalized ATR volatility)."
- Changed
get_ta_consensus1 field changed- changed
Input schema / properties / coin / descriptionPrevious value: -"Target cryptocurrency ticker. Accepts clean tickers ('BTC', 'SOL') or pairs ('BTCUSDT', 'ETHUSDC')."New value: +"Target cryptocurrency ticker (e.g. 'BTC', 'SOL', 'ETH', 'BTCUSDT'). Case-insensitive, automatically normalized."
- Changed
list_alerts1 field changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Agent identifier used when creating alerts."New value: +"Agent identifier used during alert creation."
5 tool updates
- Added
cancel_alert - Changed
create_alert5 fields changed- added
Input schema / properties / agent_idAdded value: +{ + "default": "default_agent", + "description": "Persistent agent or wallet identifier to track and recover alerts across reconnects.", + "type": "string" +} - removed
Input schema / properties / coinRemoved value: -{ - "description": "Cryptocurrency symbol (e.g., BTC, SOL, ETHUSDT).", - "type": "string" -} - added
Input schema / properties / commandAdded value: +{ + "description": "BitCLI alert command string.", + "type": "string" +} - removed
Input schema / properties / conditionRemoved value: -{ - "description": "Pre-compiled HFT anomaly trigger.", - "enum": [ - "volume_spike_x3_5m", - "cvd_divergence_15m", - "liquidation_z3", - "funding_abs_above_001" - ], - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "coin", - "condition" -]New value: +[ + "command" +]
- Changed
get_market_snapshot2 fields changed- changed
Input schema / properties / sort_by / descriptionPrevious value: -"Market anomaly filter metric."New value: +"Anomaly sorting metric: 'rvol_5m' (Whale volume spikes), 'funding_rate' (Carry squeezes), 'oi_change_1h' (Leverage inflow), 'natr_1h' (Volatility)." - changed
Input schema / properties / sort_by / enumPrevious value: -[ - "funding_rate", - "rvol_5m", - "oi_change_1h", - "natr_1h" -]New value: +[ + "rvol_5m", + "funding_rate", + "oi_change_1h", + "natr_1h" +]
- Changed
get_ta_consensus1 field changed- changed
Input schema / properties / coin / descriptionPrevious value: -"Trading pair symbol (e.g., BTCUSDT)."New value: +"Target cryptocurrency ticker. Accepts clean tickers ('BTC', 'SOL') or pairs ('BTCUSDT', 'ETHUSDC')."
- Added
list_alerts
3 tool updates
- First observed
create_alert - First observed
get_market_snapshot - First observed
get_ta_consensus
Publisher details
- Operator
- BitCLI
- Operator website
- https://bitcli.io
- Vendor relationship
- First-party
- Documentation
- https://docs.bitcli.io
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.