Quant Desk TradingView MCP
This server is a market-analysis MCP toolkit covering crypto, stocks, indices, options, and futures — from screening and technical analysis to backtesting and active-chart monitoring.
Screen markets: top gainers/losers, Bollinger squeezes/ratings, consecutive candles, candlestick patterns, volume breakouts, smart volume, and US stock screeners.
Analyze single symbols: full technical analysis, volume confirmation, multi-timeframe alignment, combined TA + sentiment + news, and EGX-specific stock/index/sector scans and trade plans.
Read market context: global market snapshot, Bitcoin macro pulse, real-time Yahoo quotes, extended-hours US stock prices, EGX market overview, and futures overviews/movers/category snapshots/watchlists.
News & sentiment: financial news feeds and licensed Marketaux sentiment for stocks and crypto.
Options intelligence: full options chains, unusual options activity with volume/open-interest ratios.
Backtest strategies: run individual or all nine strategies, compare leaderboards, and walk-forward validation to detect overfitting.
Multi-agent debate: run a Technical/Sentiment/Risk agent debate for a symbol.
Follow your TradingView chart: detect the active chart in the browser and return a tailored trade recommendation.
Fetches cryptocurrency price history from Binance's public market data as one of the free data sources used to analyze the instrument shown on the TradingView chart.
Monitors the TradingView chart currently open in the user's browser to determine the symbol and interval for analysis, then runs the quantitative model library on that instrument and reports a verdict and position size.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Quant Desk TradingView MCPAnalyze the instrument on my chart and give me the verdict and position size."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quant Desk — TradingView MCP
A systematic multi-strategy analysis engine that follows your TradingView chart.
Reads whatever chart you have open, fetches that instrument's history from free public sources, evaluates 358 published quantitative models against it, and produces one auditable verdict with a confidence score and a concrete position size.
Runs entirely on your machine. No TradingView subscription, no market-data vendor, no paid API. Works on the free TradingView tier.
python start.pyWhat it does
358 models across 16 categories, every one with a paper citation | ~1s full scan |
233 independent families — the honest unit of diversification | family-weighted consensus |
Confidence engine — 8 components, hard vetoes, empirical calibration | 0–100 score |
Position sizing — capital 1,000 → 1,000,000, risk-first | refuses rather than guesses |
Vectorised backtest with walk-forward validation | 358 models in ~2.5s |
Pine Script v6 export for all 174 price-only models | numerically verified |
Any LLM provider via one saved key | 14 providers, zero dependencies |
Related MCP server: MCP Trading Quantitative Analysis Server
The design principle
A model that cannot run honestly reports unavailable rather than degrading to a price proxy and voting anyway.
142 of the 358 models need an options chain, fundamentals, a peer universe, order-book depth, on-chain or news data. Without that feed they stand down. Every screen shows "N voting of M available of 358 in library" — never "358 models agree".
22 models approximate their published method from substituted data. Each is labelled a proxy, states exactly what was substituted, and counts for 40% of a vote.
Why family weighting
Counting BUY votes treats 30 moving-average variants as 30 independent opinions. Under
that scheme whichever style is most numerous wins every vote, and adding models makes the
bias worse. Models sharing a family split one family's vote.
Quick start
git clone https://github.com/ankitjha67/TradingView-MCP.git
cd TradingView-MCP
python start.pystart.py checks Python, installs what's missing, verifies the engine loads, detects any
IDE (Antigravity, VS Code, Cursor, Windsurf, Claude Desktop, Zed) and offers to wire up MCP,
then launches the dashboard. No IDE found means the dashboard, which needs none.
Non-technical walkthrough: EASY_SETUP_GUIDE.md
Interfaces
The monitor follows your chart. Nothing else. It analyses the symbol and interval you have open and reports on that instrument — if the reading is neutral, "stand aside" is the answer, not a prompt to go looking elsewhere.
Scanning a wider universe is a separate, explicitly-invoked tool
(tools/scan_universe.py). It is never run as part of monitoring.
Interface | Command | Scope |
Live monitor |
| your open chart only |
Streamlit dashboard |
| one symbol at a time |
Universe scan |
| 51 instruments, opt-in |
Pine export |
| one symbol |
Verify Pine |
| all 174 translations |
MCP server | auto-configured into detected IDEs | on request |
Keeping the monitor alive
run_monitor.sh (macOS/Linux) and run_monitor.bat (Windows) set PYTHONPATH and run the
monitor detached from the shell that launched it. Both accept the same flags:
./run_monitor.sh --capital 50000 --currency INR --risk 1.0It rewrites tv_active_chart.md and tv_active_chart.json at every bar close, and follows
you automatically when you switch symbol or interval.
Monitoring cadence
Re-analysis is aligned to the close of the bar on your chart's interval — every minute on a 1m chart, every 15 minutes on 15m, daily on daily. Changing symbol or interval re-analyses immediately. Stale feeds (weekends, closed markets) are detected, labelled and backed off rather than re-reported as live.
Models read the last closed bar; re-running mid-bar re-reads a forming candle, so the signal flickers then settles. One stable reading per bar is what you act on.
When the feed goes stale — weekend, closed market, halted symbol — the monitor says so and switches to a fixed 10-minute re-check so it picks up the reopen promptly, rather than sitting on the interval's own cadence and going blind for a full day.
Data
Free public sources, tried in order: Binance (crypto) → Yahoo Finance → Stooq. Eleven intervals from 1-minute to monthly. Crypto, US and international equities, indices, forex, commodities.
TradingView is used only to observe which symbol and interval you are looking at — no TradingView data API is called, which is why the free plan suffices.
Confidence engine
Component | Weight | Question |
Family diversity | 20% | How many independent ideas agree |
Conviction | 18% | Signal strength |
Agreement | 18% | How one-sided the vote is |
Concordance | 14% | Do structurally opposed categories agree |
Regime alignment | 12% | Are agreeing models suited to conditions |
Signal stability | 8% | Persistent, or flipped on this bar |
Data quality | 6% | Coverage, depth, proxy share |
Reward geometry | 4% | Does the target clear transaction costs |
Hard vetoes override any score: neutral consensus, agreement below 55%, fewer than 4 independent families, target move below 2× round-trip cost, turnover too thin to fill, or an inverted historical calibration on that instrument.
Empirical calibration measures what the score has actually been worth: it buckets past bars by signal strength and reports realised forward returns. Sometimes the answer is "has NOT reliably tracked forward returns here" — and that becomes a veto.
Position sizing
quantity = (capital × risk% × confidence_multiplier) ÷ (entry − stop)Sizing from the stop distance holds risk constant across instruments. Then constrained by lot granularity (crypto fractional, whole shares, NIFTY 75 / BANKNIFTY 15, forex micro lots), exchange minimum order value, exposure cap, and available margin.
When a trade can't be taken it refuses with the exact remedy — "Tradeable at ₹638,545 capital or 6.39% risk per trade" — rather than silently falling back to a minimum position that would exceed your stated risk limit.
Pine Script export
All 174 price-only models export to Pine v6, plus a family-weighted consensus indicator. Every translation is checked against an independent re-implementation of Pine semantics — verified across equities, ETFs, gold and crypto on multiple intervals.
Models that cannot be faithfully translated (feed-dependent, or online training loops with no Pine equivalent) are not approximated; they're listed with the reason.
Documentation
File | Contents |
Non-technical install, start to finish | |
All 358 models, citations, data requirements | |
Requirements and honest status | |
Architecture — read before changing | |
What was rebuilt and why |
Agent desk (second opinion)
The engine's rule is that an LLM explains what the models found and never originates a signal. TauricResearch/TradingAgents is the opposite: a team of LLM agents — fundamentals, news, sentiment and technical analysts, then a bull/bear debate and a three-way risk review — argues its way to a BUY/SELL/HOLD.
Both hold at once, because the desk is wired as a second reader, not a voter:
Sets direction | never — |
Changes the confidence score | never |
Sizes a position | never — sizing stays with the calibrated engine |
Disagrees with the models | adds a caution, which halves position size |
Agrees | says so, changes nothing |
Measured on AAPL daily: consensus BUY +0.166, score 57.1, grade C in every case; size ×0.325 with no desk, with an absent desk, and with an agreeing desk — and ×0.163 with a disagreeing one. Direction and score never moved.
Why include it at all. Every run reports ~142 of 358 models standing down for "missing data feed" — options chains, fundamentals, on-chain, news, sentiment. Those are exactly the inputs TradingAgents has. It is not a better price model; it reads a different part of the problem, and the one thing it is trusted to do is make you take less when it sees something the price series cannot show.
It runs in its own virtualenv, deliberately
tradingagents resolves pandas 3.0.5; this engine is 21 modules and 358 models on
pandas 2.3.3, and pyproject.toml sets no upper bound — so a plain pip install
silently upgrades pandas underneath the library. The install also pulls chainlit, redis,
textual and ~40 opentelemetry instrumentation packages.
So the desk lives in .venv-agents/ and is reached over a subprocess with JSON on the
wire. Each side keeps the dependency tree it wants; the cost is one process spawn per
debate, which already takes minutes.
python tools/setup_agent_desk.py # create the venv and install
python tools/setup_agent_desk.py --check # status, changes nothingIt reuses whatever LLM provider is configured in Settings — including NVIDIA NIM, which
tradingagents does not name but reaches as an OpenAI-compatible endpoint.
Cadence and cost
A debate is many model calls over several minutes, and this engine re-analyses at every bar close. So a verdict is cached per (ticker, trading date) and never started automatically — the Live Signal tab has a button. News and fundamentals do not change between two 1-minute bars, which is the resolution the debate actually reads at. Once run, every refresh that day reuses it, including the monitor.
Statistical significance
Every backtest reports a t-statistic beside its Sharpe:
t = annualised Sharpe x sqrt(years observed)A Sharpe on its own says very little. 1,500 one-minute bars is six trading days, and over six days a Sharpe of 8 carries t ≈ 1.0 — indistinguishable from luck. The engine now says so instead of ranking it first.
The convention and the 1.96 threshold come from the replication catalogue in
paperswithbacktest/awesome-systematic-trading,
which publishes both figures for 1,687 replicated papers and notes plainly that half of
them fail the bar. The identity was verified against all 61 of its published rows before
being trusted here (largest deviation 0.12, pure rounding) — and is re-verified by
tools/sync_replication_catalogue.py, which stores the table locally as JSON and warns
if upstream ever changes convention.
python tools/sync_replication_catalogue.py # refresh the catalogue
python tools/sync_replication_catalogue.py --compare # scale against our libraryWhat it changes
compare_strategies reports significant and significantly_losing next to the
ranking, the Backtest Lab shows a t-stat column and warns when nothing clears the bar,
and the performance report adds a caveat when the headline Sharpe is undetermined.
Measured on real data at the time of writing:
window | ranked | clear t ≥ 1.96 | significantly losing | best t | |
SBIN 1m | 0.015 yr | 174 | 0 | 157 | −0.01 |
AAPL 1d | 5.95 yr | 183 | 0 | 18 | 1.42 |
Not one model in the library clears significance on either instrument, and on the 1-minute chart 157 of 174 are significantly negative. That is the point of measuring it: the top row of a Sharpe-sorted table reads like a discovery, and usually is not.
For scale, across the catalogue's 61 published replications the best Sharpe is 3.39 and the median 1.06 — each measured over 16+ years. A model here reporting Sharpe 8 over six days is not four times better than the best replicated paper in the set.
Research reading (not a data feed)
A panel in Live Signal and a CLI for reading public news and pages about the instrument you are looking at, routed via Panniantong/Agent-Reach.
python tools/research.py --doctor # what this machine can read
python tools/research.py # news for the open chart
python tools/research.py --url https://... # read one public pageIt deliberately does not feed the models, and cannot. Every voting model implements
score(f) -> pd.Series over the whole frame — that historical path is what the
backtester replays, what the confidence engine calibrates, and what earns a t-statistic.
A web read returns what a page says now; there is no way to ask it what was being said
on each of the previous 1,499 bars. A model fed this way could fill the last element of
the series and nothing else, so it could never be backtested or clear the significance
bar. Marking DataNeed.NEWS satisfied on that basis would flip ten sentiment models to
"voting" while leaving them unverifiable — the exact failure the DataNeed enum exists
to prevent.
A test asserts nothing under core/quant/ imports it, so the separation is enforced
rather than promised. core/research.py sits outside the engine for the same reason.
Zero-configuration sources only
Agent-Reach tags each channel with a tier. Tier 0 needs no configuration; tier 1 and
above work only through a personal logged-in session or exported cookies — its own notes
say Reddit's anonymous API is blocked and only the logged-in route remains. Driving those
from an unattended monitor would mean acting on your accounts against the platforms'
terms, so the ceiling is enforced in code (MAX_TIER = 0), not left to a docstring.
channels | here | |
tier 0 — no config | web (Jina Reader), rss, github, youtube, v2ex, exa_search | used |
tier 1+ — session or cookies | reddit, twitter, xueqiu, bilibili, xiaohongshu, instagram, facebook, linkedin | refused |
Note on installing it.
pip install agent-reachfetches a different project — PyPI's package of that name isjgalea/agent-reach, unrelated to this one. Install from source:pip install git+https://github.com/Panniantong/Agent-Reach.
If you want social data properly
The honest route is to record these readings forward into a dated archive and wait for history to accumulate — not to backfill from a live endpoint, whose results are ranked by today's engagement and silently omit whatever has since been deleted. That is survivorship bias baked into the input, and a backtest built on it would be worse than no backtest.
Credits
This project builds on atilaahmettaner/tradingview-mcp by Ahmet Taner Atila, which provides the MCP server, TradingView screener and scanner services, exchange symbol lists, and the news/sentiment integrations. Licensed MIT; the original copyright is preserved in LICENSE.
The core/quant/ engine — strategy library, consensus, confidence, sizing, backtester,
Pine export and their verification — is added on top.
Category coverage for macro, rates, commodity carry and options income follows the family layout of alphakit.
The agent desk wraps TauricResearch/TradingAgents by Tauric Research, run unmodified in its own environment and consulted as a second opinion.
The Sharpe significance standard, and the replication figures used to calibrate against it, come from paperswithbacktest/awesome-systematic-trading.
Research reading is routed through Panniantong/Agent-Reach by Panniantong, restricted to its zero-configuration channels.
Licence
MIT — see LICENSE. Original work © 2025 Ahmet Taner Atila.
Not investment advice. Model output is research output. The backtester routinely shows most models failing to beat buy-and-hold, and the calibration check sometimes reports that a high score has been worth nothing on a given instrument. Those results are displayed, not hidden. Never risk money you cannot afford to lose.
Available Tools
38 toolsadvanced_candle_patternBRead-only
Advanced candle pattern analysis using multi-timeframe data.
Args: exchange: Exchange name (BINANCE, KUCOIN, etc.) base_timeframe: Base timeframe for analysis (5m, 15m, 1h, 4h) pattern_length: Number of consecutive periods to analyse (2-4) min_size_increase: Minimum percentage increase in candle size limit: Maximum number of results to return
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| base_timeframe | No | 15m | |
| pattern_length | No | ||
| min_size_increase | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe scan. The description adds the 'multi-timeframe data' nuance and parameter hints (min_size_increase, pattern_length) that suggest analysis logic. However, it doesn't disclose specifics like data source freshness, performance considerations, or what happens when no patterns match. With annotations covering the safety profile, a 3 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact paragraph followed by an Args block that's mostly a restatement of the schema. The prose line front-loads the purpose, and the Args block is terse. It's efficient with no waste, though formatting could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param scan tool with no output schema and 0% schema description coverage, the description covers the basics but misses important context: what the output looks like, how results are ranked, whether it needs an exchange symbol or scans a watchlist, and what happens when no pattern is found. Sibling tools like top_gainers likely have more context. This leaves an agent guessing about the return format and search scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the 5 parameters. It lists each parameter with a brief meaning (e.g., 'Exchange name', 'Minimum percentage increase in candle size'), which adds meaning beyond the bare schema names. However, it doesn't specify valid values or formats (e.g., exchange name casing, pattern_length range beyond a hint in the name). This adds value but could be richer.
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 starts with a clear statement of what the tool does: 'Advanced candle pattern analysis using multi-timeframe data.' This distinguishes it from siblings like consecutive_candles_scan and volume_breakout_scanner, though it doesn't explicitly name any sibling. The verb 'analysis' is somewhat generic, but combined with the resource and multi-timeframe qualifier, the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description doesn't explicitly state when to use this tool vs. alternatives like consecutive_candles_scan or volume_confirmation_analysis. The phrase 'Advanced... using multi-timeframe data' implies a use case, but there's no direct guidance on when not to use it or which sibling to prefer. This is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backtest_strategyARead-only
Backtest a trading strategy on historical data with institutional-grade metrics.
Args: symbol: Yahoo Finance symbol (AAPL, BTC-USD, THYAO.IS, ^GSPC) strategy: rsi | bollinger | macd | ema_cross | supertrend | donchian | rsi_pullback | keltner_breakout | triple_ema (rsi_pullback and triple_ema need period >= '1y' for SMA200 warmup) period: '1mo', '3mo', '6mo', '1y', '2y' initial_capital: Starting capital in USD (default $10,000) commission_pct: Per-trade commission % (default 0.1%) slippage_pct: Per-trade slippage % (default 0.05%) interval: '1d' (daily) or '1h' (hourly) include_trade_log: Include full per-trade log (default False) include_equity_curve: Include equity curve data points (default False)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 1y | |
| symbol | Yes | ||
| interval | No | 1d | |
| strategy | Yes | ||
| slippage_pct | No | ||
| commission_pct | No | ||
| initial_capital | No | ||
| include_trade_log | No | ||
| include_equity_curve | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to cover safety. It adds useful behavioral context through constraints like the SMA200 warmup requirement and the optional include_trade_log/include_equity_curve flags. However, it does not disclose output format, failure modes, data range limitations, or performance characteristics beyond what the parameter list implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens with a clear one-sentence purpose, then uses a structured Args block that is efficient for nine parameters. It is appropriately sized and front-loaded. Minor vagueness like 'institutional-grade metrics' is the only non-essential element, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers all input parameters and usage constraints, which is essential given 9 parameters and no output schema. However, since there is no output schema, the description should also explain what the backtest returns, such as the performance metrics included in the report, but it only vaguely references 'institutional-grade metrics' and optional trade log/equity curve flags.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It does this well: it gives valid examples for symbol, enumerates strategy names, defines period options, states defaults, explains commission/slippage as per-trade percentages, and specifies interval choices. It also adds the critical warmup-period constraint for two strategies. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Backtest a trading strategy on historical data' with 'institutional-grade metrics.' It clearly identifies what the tool does, but it does not distinguish itself from sibling tools like compare_strategies or walk_forward_backtest_strategy, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by listing allowed strategies, periods, intervals, and constraints such as 'rsi_pullback and triple_ema need period >= 1y for SMA200 warmup.' However, it does not explicitly state when to use this tool versus alternatives like compare_strategies or walk_forward_backtest_strategy, and gives no explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitcoin_market_pulseARead-only
Single-call BTC macro context: price, dominance, total market cap + risk assessment.
Use this WHENEVER analyzing any cryptocurrency (altcoin or BTC itself) to get the broader market frame in one shot. A SOL/ETH/whatever setup looks very different when BTC is dumping with rising dominance vs. when alts are leading. Calling this once gives Claude the macro context to provide Bitcoin-aware commentary alongside the per-coin analysis - without chaining 2-3 separate yahoo_price + manual reasoning calls.
Returns:
bitcoin: price, 24h change %, volume, market cap
dominance: BTC and ETH market-cap share of total crypto
total_market: total crypto mcap + 24h change + active coin count
assessment: label (HIGH_RISK / ALT_RISK / ALT_FAVORABLE / OPPORTUNITY_WITH_CAUTION / NEUTRAL) + 1-paragraph reasoning
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it is a single-call aggregator, it returns a structured payload, and it includes a risk assessment label with specific possible values. It does not mention data freshness or rate limits, but those are not critical for this read-only 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?
The description is well-structured and front-loaded: the first sentence summarizes the tool, the usage guidance is explicit, and the return fields are bulleted for easy parsing. Every section earns its place; the length is justified by the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description fully compensates by enumerating the return sections: bitcoin, dominance, total_market, and assessment with possible labels. It also explains the tool's role relative to other analysis tools, making the definition complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden on the description. The schema is empty and fully covered; the description correctly focuses on outputs and usage rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific purpose: providing BTC macro context (price, dominance, total market cap, risk assessment) in a single call. It differentiates itself from sibling tools by explicitly contrasting with chaining yahoo_price calls, so an agent can tell when this tool is the right one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool WHENEVER analyzing any cryptocurrency to get the broader market frame, and explains why: a coin setup looks different depending on BTC behavior. It also names the alternative approach (chaining yahoo_price calls) and why this tool avoids that, giving clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bollinger_scanARead-only
Scan for assets with low Bollinger Band Width (squeeze detection). Works with crypto and stocks.
This scans a whole EXCHANGE for squeezes (canonical name is exactly
bollinger_scan; there is no "get_bollinger_band_analysis" tool). For
the Bollinger read of ONE symbol, call coin_analysis instead.
Example: bollinger_scan(exchange="BINANCE", timeframe="15m", bbw_threshold=0.008)
Args: exchange: Exchange — crypto: KUCOIN, BINANCE, BYBIT, MEXC; stocks: EGX, BIST, NASDAQ, NYSE, BURSA, HKEX, SSE, SZSE, TWSE, TPEX timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M. Typical squeeze thresholds: 15m→0.008, 1h→0.02, 4h→0.04, 1D→0.12 bbw_threshold: Maximum BBW value to filter (default 0.04) limit: Number of rows to return (max 100)
Returns list[dict] on success. On ANY failure returns a structured
error envelope {"error": {"code": ..., "retryable": ...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 4h | |
| bbw_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive. The description adds that it scans an entire exchange, returns a list of dicts on success, and returns a structured error envelope on any failure, which enriches the agent's expectations without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with a purpose statement, explicit disambiguation, a usage example, and a clear Args block. It is longer than necessary but every section adds value. Minor redundancy like re-stating the tool name could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 4 parameters and no schema descriptions, the description provides exhaustive coverage: exchange lists, timeframe constraints, thresholds, return type, error handling, and a usage example. Since an output schema exists, not detailing the dict fields is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by enumerating exchange options (specifying crypto vs stock exchanges), valid timeframes with typical threshold hints, the meaning of bbw_threshold, and the limit cap. This is far beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a whole-exchange Bollinger Band Width squeeze scanner, differentiating it from sibling scanners and explicitly noting it is not the single-symbol Bollinger read (which is coin_analysis). The purpose is unambiguous with a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use (whole exchange squeeze detection) and when-not-to-use (single symbol via coin_analysis), along with an example call and typical threshold values per timeframe. These are concrete selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coin_analysisARead-only
Get detailed analysis for a specific asset (coin or stock) on specified exchange and timeframe.
This is the canonical single-symbol technical readout (there is no
"get_technical_analysis" or "get_technical_summary" tool — use THIS one).
Use multi_timeframe_analysis instead when you need trend alignment
across several timeframes, and combined_analysis when you also want
news sentiment + headlines in the same call.
Example: coin_analysis(symbol="BTCUSDT", exchange="BINANCE", timeframe="1h")
Args:
symbol: Bare ticker, no exchange prefix — crypto: "BTCUSDT", "ETHUSDT"; stocks: "COMI" (EGX), "THYAO" (BIST), "600519" (SSE), "300251" (SZSE), "2330" (TWSE), "3105" (TPEX)
exchange: Exchange — crypto: KUCOIN, BINANCE, MEXC; stocks: EGX, BIST, NASDAQ, NYSE, BURSA, HKEX, SSE, SZSE, TWSE, TPEX. If the symbol isn't listed there, the error's listed_on field names exchanges that do list it.
timeframe: Time interval (5m, 15m, 1h, 4h, 1D, 1W, 1M)
Returns: Detailed analysis with all indicators and metrics
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable behavioral context: the requirement for a bare ticker without exchange prefix, the fallback behavior that errors expose a 'listed_on' field naming exchanges that do list the symbol, and a high-level statement of the return (detailed analysis with all indicators and metrics). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Purpose, Args, Returns) and front-loads the primary purpose immediately. It includes necessary examples and lists without unnecessary fluff. It is somewhat lengthy due to the exchange and symbol enumerations, but those are essential given the schema lacks details. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of symbols and exchanges across multiple markets, the description covers everything an agent needs to call the tool correctly: input formats, valid values, example calls, error-handling hints, and a definition of the return type. It also disambiguates from all sibling tools that could otherwise be confused. Nothing essential is missing, even without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description carries the full burden for parameter meaning. It delivers extensively: symbol format with explicit crypto and stock examples, a comprehensive list of exchanges for both asset classes, and a timeframe list. It even clarifies that the symbol must not have an exchange prefix. This fully compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement of what the tool does: 'Get detailed analysis for a specific asset (coin or stock) on specified exchange and timeframe.' It explicitly declares itself the canonical single-symbol technical readout and names the sibling tools it is not (multi_timeframe_analysis, combined_analysis), making its purpose unmistakable and clearly distinct from all 40+ siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool versus alternatives: it calls out that no 'get_technical_analysis' or 'get_technical_summary' exists, directs users to 'multi_timeframe_analysis' for trend alignment across timeframes, and to 'combined_analysis' for news sentiment + headlines. It also gives a concrete call example. This leaves no ambiguity about the right use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combined_analysisARead-only
POWER TOOL: TradingView technical analysis + news sentiment + financial news.
Use this when you want TA AND sentiment AND news for one symbol in a
single call. For indicators only, coin_analysis is faster; for
cross-timeframe trend alignment use multi_timeframe_analysis.
Example: combined_analysis(symbol="NVDA", exchange="NASDAQ", timeframe="1D")
Args: symbol: Bare ticker, no exchange prefix ("AAPL", "BTCUSDT", "THYAO", "GDX") exchange: Exchange (NASDAQ, NYSE, AMEX, NYSEARCA, PCX, BINANCE, KUCOIN, MEXC, BIST, EGX, TWSE, TPEX) timeframe: Analysis timeframe (5m, 15m, 1h, 4h, 1D, 1W)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| exchange | No | NASDAQ | |
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the 'POWER TOOL' label and the combined nature of the output, but doesn't detail what the response contains (e.g., structure of TA, sentiment score, news list). With annotations covering safety, a 3 is appropriate – it adds some context but not deep 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, usage guidance, example, and parameter list. It's front-loaded with the key differentiator. The 'POWER TOOL' label is slightly informal but not wasteful. The parameter list is compact and useful. Minor deduction for the informal label and slight redundancy in the parameter descriptions.
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 combined analysis tool with 3 parameters and no output schema, the description covers the essential usage: what it does, when to use it, and how to call it. It doesn't describe the output structure, but that's less critical given the tool's purpose is clear. The example call is helpful. A 4 is appropriate – it's complete for an agent to invoke correctly, though it could mention what the response includes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain the `symbol` parameter (bare ticker, no exchange prefix) and lists valid exchanges and timeframes. However, it doesn't add much beyond what the schema's defaults and types imply. The example call helps, but the description could be more explicit about parameter constraints (e.g., which exchanges are valid for which symbols). Baseline 3 is fair given the partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool combines TradingView technical analysis, news sentiment, and financial news for a single symbol. It uses a specific verb ('combined_analysis') and resource, and explicitly distinguishes it from siblings like `coin_analysis` and `multi_timeframe_analysis`. The example call further clarifies usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('when you want TA AND sentiment AND news for one symbol in a single call') and provides alternatives for other cases: `coin_analysis` for indicators only, `multi_timeframe_analysis` for cross-timeframe trend alignment. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_strategiesARead-only
Run all 9 strategies (RSI, Bollinger, MACD, EMA Cross, Supertrend, Donchian, RSI Pullback, Keltner Breakout, Triple EMA) and return a ranked leaderboard.
Args: symbol: Yahoo Finance symbol (AAPL, BTC-USD, SPY…) period: '1mo', '3mo', '6mo', '1y', '2y' (period >= '1y' recommended so rsi_pullback and triple_ema can complete SMA200 warmup; otherwise they contribute zero trades) initial_capital: Starting capital in USD (default $10,000) interval: '1d' (daily) or '1h' (hourly)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 1y | |
| symbol | Yes | ||
| interval | No | 1d | |
| initial_capital | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context not in annotations, notably that shorter periods cause rsi_pullback and triple_ema to contribute zero trades due to incomplete SMA200 warmup. It stops short of describing output structure or runtime characteristics, but the added caveat is genuinely valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in a single sentence, followed by a clean, well-structured Args block. Each parameter entry earns its place by adding examples, defaults, or caveats rather than repeating schema content verbatim. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains what the tool returns ('a ranked leaderboard'), documents all 4 parameters, and warns about the warmup limitation. The only gap is that the leaderboard's exact fields or ranking criteria are not specified, which would help an agent consume the result, but invocation is fully supported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter semantics. It compensates thoroughly: symbol is explained with examples, period lists all allowed values plus a trade-off, initial_capital states currency and default, and interval lists valid options. Every parameter is effectively documented beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Run all 9 strategies' and the specific result: 'return a ranked leaderboard.' It even enumerates the nine strategies, making the resource well-defined. It does not explicitly name sibling alternatives like backtest_strategy or walk_forward_backtest_strategy, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong usage context, including valid period and interval values, defaults, and a concrete recommendation that period >= '1y' is needed for RSI Pullback and Triple EMA to complete SMA200 warmup. It does not explicitly state when to choose this tool over siblings, but the parameter guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consecutive_candles_scanBRead-only
Scan for coins with consecutive growing/shrinking candles pattern.
Args: exchange: Exchange name (BINANCE, KUCOIN, etc.) timeframe: Time interval (5m, 15m, 1h, 4h) pattern_type: "bullish" (growing candles) or "bearish" (shrinking candles) candle_count: Number of consecutive candles to check (2-5) min_growth: Minimum growth percentage for each candle limit: Maximum number of results to return
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m | |
| min_growth | No | ||
| candle_count | No | ||
| pattern_type | No | bullish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful context about the scan logic and the result limit, but it does not disclose output structure, ordering, or other behavioral details that an agent might need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a single-sentence purpose followed by a clear argument list. There is no filler or redundant restating of schema defaults, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All six parameters are documented, which is helpful. However, there is no output schema and the description does not describe expected result fields or ordering; exchange valid values are vague ('BINANCE, KUCOIN, etc.'); and bearish min_growth semantics are ambiguous. This makes the description adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description compensates by explaining each parameter: exchange examples, timeframes, pattern types, candle_count range, min_growth, and limit. It does not fully clarify how min_growth should be interpreted for bearish/shrinking patterns, which is a notable ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Scan for coins') and a specific pattern ('consecutive growing/shrinking candles pattern'), so the tool's core purpose is unambiguous. It does not explicitly differentiate from sibling scanners like advanced_candle_pattern, but the pattern focus and 'coins' scope make it reasonably distinct.
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?
There is no guidance on when to use this tool versus sibling scanners such as advanced_candle_pattern, bollinger_scan, or volume_breakout_scanner. The description explains what it does but not when it is the preferred choice or when alternatives should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_fibonacci_retracementARead-only
Fibonacci retracement analysis for EGX stocks.
Args: symbol: EGX stock symbol (e.g., "COMI", "TMGH", "FWRY") lookback: Period for swing high/low — "1M", "3M", "6M", "52W", "ALL" (default 52W) timeframe: Analysis timeframe (5m, 15m, 1h, 4h, 1D, 1W, 1M — default 1D)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| lookback | No | 52W | |
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no safety contradiction exists. The description adds parameter options (lookback, timeframe) but does not disclose output format, calculation methodology, or other behavioral traits beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, consisting of a one-sentence summary followed by a clean, structured args list. No redundant information is present, and each line adds value.
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?
Parameter documentation is thorough, and the tool is straightforward. However, the description does not mention what the analysis returns (e.g., retracement levels or a chart), and there is no output schema to fill this gap, leaving a minor completeness issue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains all three parameters in detail, providing examples for symbol, valid values for lookback and timeframe, and defaults. Since the input schema has 0% description coverage, this fully compensates for the missing schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fibonacci retracement analysis for EGX stocks,' which is a specific verb+resource combination. This distinguishes it from sibling tools like egx_market_overview and egx_sector_scan, none of which mention Fibonacci.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Fibonacci analysis on EGX stocks but provides no explicit guidance on when to choose this tool over alternatives. It does not mention exclusions or alternative tools, leaving the context partially implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_index_analysisARead-only
Analyse an EGX index showing constituent performance with full indicators.
Args: index: EGX30, EGX70, EGX100, SHARIAH33, EGX35LV, TAMAYUZ timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M (default 1D) limit: Number of stocks to show in detail (max 100)
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | EGX30 | |
| limit | No | ||
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with a read-only analysis tool. It adds some context about output (constituent performance, full indicators) but does not disclose limitations like data freshness, rate limits, or whether results are real-time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise: a single leading sentence stating the purpose, followed by a compact, front-loaded list of parameters. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three optional parameters and no output schema, the description covers the essential information for invocation: valid parameter values, defaults, and what the tool does. It could be more complete by clarifying what 'full indicators' means or by mentioning the response format, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description fully compensates by explaining each parameter in the Args section: index lists all valid values, timeframe lists accepted strings and the default, and limit clarifies its meaning and maximum. This is essential because the schema only provides defaults without any descriptions or enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Analyse') and resource ('an EGX index') and mentions 'constituent performance with full indicators,' which gives a sense of the output. However, it does not explicitly distinguish this tool from siblings like egx_market_overview or egx_sector_scan, and the phrase 'full indicators' is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an agent needs to analyze an EGX index, but it does not provide explicit context or alternatives. There is no guidance on when to prefer this over related tools like egx_market_overview or egx_stock_screener, leaving the agent to infer suitability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_market_overviewBRead-only
Get a comprehensive overview of the Egyptian Exchange (EGX) market.
Args: timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M (default 1D for stocks) limit: Number of stocks per category (max 20)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a note about default timeframe for stocks, which is a minor behavioral detail. But it doesn't disclose what the overview includes (market cap, indices, sectors?) or any aggregation behavior, which is significant for a 'comprehensive overview' tool. With annotations, a 3 is appropriate as the description adds some value but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an Args block. It is efficient and front-loaded with the core purpose. The Args block repeats schema defaults but adds allowed values for timeframe, which is useful. No filler or waste.
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 market overview tool with a generic 'comprehensive' claim, it lacks details on what data is returned (indices, sectors, top movers?), how limit interacts with categories, and whether there are any exclusions. The sibling list shows other specialized tools, so this should clarify its scope. No output schema, so the description must do more to set expectations. It is not complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no semantic help for the two parameters. The description explains 'timeframe' with allowed values and 'limit' as 'stocks per category', which adds meaning. However, it doesn't define what 'per category' means (sectors? indices?) or explain the number of categories, leaving ambiguity about how limit impacts the output. This is a gap given zero schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a comprehensive overview of the Egyptian Exchange (EGX) market'), which is clear. It distinguishes from siblings like egx_sector_scan and egx_stock_screener by focusing on a market-level comprehensive overview. However, it doesn't explicitly differentiate from other EGX tools, only implies it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for use (comprehensive overview) but no explicit when-to-use or exclusions. It doesn't mention alternatives, despite many sibling EGX tools. The default timeframe hint for stocks ('1D for stocks') implies usage but is not explicit about when to choose this over egx_sector_scan or egx_index_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_sector_scanARead-only
Scan EGX stocks by sector. Shows available sectors if none specified.
Args: sector: Sector name (banks, healthcare_and_pharma, real_estate, etc.) Leave empty to list all sectors. timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M limit: Max results per sector (max 50)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sector | No | ||
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is known to be a safe read operation. The description adds useful behavioral details: it shows available sectors when the sector parameter is left empty, it lists allowed timeframe values, and it states a maximum result limit of 50 per sector. These go beyond the annotations and give the agent insight into how the tool behaves. However, it does not describe the response format or any potential rate limits, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured, and front-loaded with the purpose. It uses a clear Args list that is easy to parse. Every sentence provides meaningful information; there is no fluff or repetition. The format is ideal for an AI agent to quickly grasp the tool's purpose and parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description does not explain the return structure, but it does hint at behavior (e.g., listing sectors when empty). It covers the tool's core functionality and parameters adequately. The main gap is the lack of detail about what the scan results look like (e.g., stock symbols, prices, indicators), which might be inferred from the tool's name but is not explicitly stated. For a read-only scanner with annotations covering safety, this is a minor omission, so a 4 is justified.
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?
With schema description coverage at 0%, the description fully compensates by providing explicit parameter semantics: it explains what 'sector' is with examples (banks, healthcare_and_pharma, etc.), lists all valid timeframe options, specifies the default and max for limit, and notes the behavior when sector is left empty. This is a comprehensive explanation that adds significant value beyond the bare schema, which only gives types and defaults. The description essentially serves as the documentation for all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Scan EGX stocks by sector.' This is a specific verb and resource. It also mentions behavior for empty sector input, which adds clarity. However, it does not explicitly differentiate from the sibling tool 'egx_sector_scanner' that appears to have a very similar name and likely function, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'Shows available sectors if none specified' implies a workflow when you don't know the sector names. It also gives parameter guidance in the Args section. However, it does not explicitly state when to use this tool versus alternatives like egx_sector_scanner, egx_market_overview, or egx_stock_screener. There are no exclusions or conditions steering the agent away from other tools, only the general purpose of sector scanning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_sector_scannerARead-only
Sector rotation scanner for EGX — identifies hot/cold sectors and top picks.
Args: timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M (default 1D) top_n_sectors: Number of top sectors to show stock picks for (1-18, default 5) top_n_stocks: Number of top stocks per highlighted sector (1-10, default 3) min_stock_score: Minimum stock score for picks (0-100, default 60)
| Name | Required | Description | Default |
|---|---|---|---|
| timeframe | No | 1D | |
| top_n_stocks | No | ||
| top_n_sectors | No | ||
| min_stock_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds a conceptual summary ('identifies hot/cold sectors and top picks') but does not disclose internal scoring logic, output structure, or any caveats like data freshness. It adds minimal behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens with a concise one-sentence purpose, then cleanly lists each parameter with its meaning and defaults. It is well-structured, front-loaded, and free of unnecessary words—every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only scanner with all-optional parameters and complete parameter documentation, the description is largely self-sufficient. The main gap is the lack of output format details (e.g., what the returned data looks like) and no clarification of the scoring criteria for 'hot/cold', but these are minor for an agent making a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage (0%), so the description fully compensates. It lists each parameter with allowed values for timeframe (5m, 15m, etc.), numeric ranges for top_n_sectors (1-18) and top_n_stocks (1-10), min_stock_score range (0-100), and defaults. This is exactly the semantic detail an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a sector rotation scanner for EGX that identifies hot/cold sectors and top picks. The verb 'identifies' and the specific resource (EGX sectors) make it unambiguous, and it distinguishes itself from generic scanners like top_gainers or stock_screener.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of exclusions or specific conditions, and the sibling list includes a very similar tool (egx_sector_scan) without any differentiation. The agent would have to infer usage from the name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_stock_screenerARead-only
Production stock ranking engine for EGX — finds strong stocks with actionable setups.
Args: timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M (default 1D) min_score: Minimum stock score to include (0-100, default 55) index_filter: Filter by index — EGX30, EGX70, EGX100, SHARIAH33, EGX35LV, TAMAYUZ limit: Number of results (max 50)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| min_score | No | ||
| timeframe | No | 1D | |
| index_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a read-only, non-destructive, open-world tool, so the safety profile is covered. The description adds only a basic 'ranking engine' behavior and does not disclose sort order, scoring logic, or result structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A one-line summary followed by a compact parameter list with no filler. Every sentence adds value and the most important context is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The parameter contract is complete and callable, but the description doesn't explain output format or what 'strong' and 'actionable setups' concretely mean. For a screener with no output schema, that leaves some ambiguity about the return value.
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?
All four parameters are documented with allowed values, ranges, and coverage of the schema's gaps. The timeframe options, min_score range, index filter list, and limit max go well beyond the bare schema, which itself has 0% description coverage.
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?
Clearly identifies a stock ranking/screening engine scoped to EGX with a stated goal of finding strong stocks with actionable setups. This differentiates it from generic market tools, though 'actionable setups' is somewhat vague and doesn't sharply distinguish it from sibling EGX scanners.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool instead of alternatives like stock_screener, egx_sector_scan, or bollinger_scan. The EGX focus implies a use case, but the description never states when it should be preferred or when it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egx_trade_planARead-only
Generate a full trade plan for a specific EGX stock.
Args: symbol: EGX stock symbol (e.g., "COMI", "TMGH", "FWRY") timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M (default 1D)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| timeframe | No | 1D |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety and non-destructive behavior. The description adds minimal extra behavioral context beyond suggesting a generative analysis function, but it does not discuss outputs, complexity, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the purpose, and split cleanly into a purpose sentence and an Args block. Every line adds value and no filler or redundant phrases are present.
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 simple read-only generator of 2 parameters, the argument information is sufficient to invoke the tool. However, there is no output schema and the description's phrase 'full trade plan' is vague: the agent is not told what the returned plan contains, how it is generated, or what data it relies on. That omission leaves it incomplete.
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 0%, so the description must carry the full burden of explaining parameters. It does this well with a complete timeframe list, clear symbol semantics, example symbol values, and a default value. An agent can construct correct calls with no further lookup.
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 'Generate a full trade plan for a specific EGX stock' names a clear verb-action, a specific market, and a deliverable, so an agent can understand the tool's core purpose. It does not explicitly differentiate itself from sibling tools such as egx_stock_screener or multi_timeframe_analysis, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance and no reference to alternatives. It only states what the tool does and does not mention that it should be used instead of other EGX tools or when a plan is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_newsBRead-only
Real-time financial news via Marketaux (licensed).
Args: symbol: Optional symbol filter ("AAPL", "BTC"). None = all news. category: News category ("crypto", "stocks", "all") limit: Max number of news items
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| symbol | No | ||
| category | No | stocks |
TDQS
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 by naming the data source (Marketaux), noting it is licensed, and emphasizing real-time behavior. However, it does not disclose potential rate limits, output shape, or how frequently the news updates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear one-sentence overview followed by a concise, readable parameter breakdown. Every sentence adds value and there is no filler or redundant 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?
All three parameters are documented and the source is identified, making invocation straightforward. However, there is no output schema and the description does not describe the response format or what fields are returned for each news item. For a news-fetching tool, that gap is moderate but not fatal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Each parameter is explained: symbol with examples and the 'None = all news' behavior, category with allowed values, and limit with a clear meaning. This goes beyond the bare schema, though it could be more precise about exact accepted values or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool provides real-time financial news from Marketaux. It lacks an explicit verb like 'retrieve' or 'fetch,' but the function name and content make the purpose unambiguous. There are no direct news-focused siblings, so differentiation is not a concern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or conditions that would route an agent to a sibling tool. The parameter list implies usage but does not state it explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
futures_category_snapshotBRead-only
Quote all major front-month contracts in a specific futures category.
Args: category: equity_index | energy | metals | agriculture | rates | forex | crypto_futures
Returns: OHLCV quotes for the standard watchlist of contracts in that category. Example symbols: ES1! NQ1! (equity_index), CL1! NG1! (energy), GC1! SI1! (metals).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | energy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds behavioral context by specifying the return format ('OHLCV quotes for the standard watchlist of contracts') and giving example symbols per category, which goes beyond the annotations. However, it does not disclose any limitations (e.g., what 'major front-month' means, how the watchlist is determined, or potential delays). Since this is a read-only snapshot tool, the added detail is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the core purpose before diving into details. It uses a clear heading ('Args'), lists categories, and shows return behavior and examples—all in just 3 sentences. There is zero fluff; each sentence adds necessary information. This is a model of efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description does explain the return (OHLCV quotes) and provides example symbols. However, it leaves some ambiguity about what 'standard watchlist' includes and does not discuss error handling or behavior for invalid categories. For a simple one-parameter tool, this is adequate but not comprehensive. The lack of a defined output schema lowers the expected burden, so a 3 is reasonable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% and there are no enums, so the description carries the full burden of explaining the 'category' parameter. It explicitly enumerates the acceptable values (equity_index, energy, metals, agriculture, rates, forex, crypto_futures), which is essential for correct invocation. It also provides example symbols to illustrate typical inputs, compensating for the lack of schema-level documentation. This is strong for a single parameter, though it could mention that the default is 'energy'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Quote') and resource ('all major front-month contracts in a specific futures category'). It clearly explains the scope by listing the five categories, making it distinguishable from siblings like 'futures_watchlist' (which likely targets a default set rather than a category-based subset). However, it does not explicitly contrast with sibling tools, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool over alternatives. It does not mention 'use when you need quotes for a category' or point to siblings like 'futures_market_overview' as a fallback. The description implies use for category-specific quotes but never states exclusions or alternatives, making this dimension weak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
futures_market_overviewARead-only
Top futures contracts sorted by trading volume.
Args: category: all | equity_index | energy | metals | agriculture | rates | forex | crypto_futures exchanges: us (CME, COMEX, NYMEX, CBOT) | global (adds ICE, EUREX) limit: max contracts to return (default 30) volume_min: minimum volume filter (0 = no filter)
Returns: Dict with total_available count and list of contracts with OHLCV + % change.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| category | No | all | |
| exchanges | No | us | |
| volume_min | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the return format (Dict with total_available count and list of contracts with OHLCV + % change), which is useful. However, it doesn't disclose pagination behavior, rate limits, or what happens with invalid category values. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for args and returns. It's front-loaded with the core purpose. The parameter list is concise and each line earns its place. Minor deduction for not being even more compact, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only overview tool with no output schema, the description covers the essential information: what it returns, how to filter, and the parameter semantics. It doesn't explain edge cases (e.g., what happens with no matching contracts) or provide examples, but for a simple list tool this is adequate. The absence of an output schema means the return format description is valuable and present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it explains each parameter's meaning (category values, exchanges options, limit default, volume_min filter). This adds significant value beyond the bare schema, which only shows types and defaults. The description effectively documents all four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns top futures contracts sorted by trading volume, with a specific resource (futures contracts) and verb (list/sort). It distinguishes itself from siblings like futures_top_movers and futures_category_snapshot by focusing on volume-sorted overview, though it doesn't explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter guidance (category, exchanges, limit, volume_min) and implies usage for market overview, but doesn't explicitly state when to use this tool versus alternatives like futures_top_movers or futures_category_snapshot. The context is clear but exclusions are not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
futures_top_moversARead-only
Futures contracts with the biggest percentage moves today.
Args: direction: gainers | losers exchanges: us | global limit: max results volume_min: minimum volume filter (default 10, filters illiquid contracts)
Returns: List of futures ranked by % change with OHLCV data.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| direction | No | gainers | |
| exchanges | No | us | |
| volume_min | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is established. The description adds useful behavior beyond the annotations: the return payload (list ranked by % change with OHLCV data) and the semantic of volume_min (filters illiquid contracts), which clarifies default behavior an agent would otherwise have to infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The six-line summary sentence is front-loaded before the Args block, and the compact parameter listing is scannable and free of fluff. The only minor gap is 'max results' being slightly terse (max what? limit of results is implied but could be explicit).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, parameter-simple tool, the combination of annotations, parameter documentation, and return description is nearly complete—an agent can call this tool correctly with the given information. It would only be improved by noting how it differs from the many similar siblings (e.g., futures_market_overview, futures_category_snapshot) in its domain.
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?
With 0% schema description coverage, the description carries the full burden of documenting parameters, and it delivers. All four parameters are given meaningful semantics: direction maps to gainers/losers with value options, exchanges maps to us/global, limit is explained as max results, and volume_min gets default plus behavioral context. This is exactly how a description should compensate for a bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The summary line "Futures contracts with the biggest percentage moves today" uses an implicit but clear verb plus resource, and the Returns section confirms it lists futures ranked by % change. However, it doesn't differentiate itself from closely-related siblings like top_gainers, top_losers, futures_market_overview, or futures_category_snapshot that could easily be confused with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args/Returns sections explain what the tool does with each parameter, but there is zero guidance on when to choose this tool over its many overlapping siblings. Given siblings like top_gainers, top_losers, futures_watchlist, and futures_market_overview, the description leaves an agent guessing which sibling to invoke when a user asks for top movers versus market overview data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
futures_watchlistARead-only
Return the full categorized list of well-known front-month futures symbols.
Categories: equity_index, energy, metals, agriculture, rates, forex, crypto_futures. Use these symbols with futures_category_snapshot or coin_analysis for deeper analysis.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive, so the description's safety burden is low. It adds meaningful context by defining exactly what the list contains (front-month, categorized) and by naming the categories, which goes beyond the title. It doesn't reveal output formatting, but that is not critical for a read-only reference list.
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?
Three short sentences, each earning its place: the purpose, the exact category taxonomy, and the recommended follow-up tools. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool, this is complete: the agent knows what it will receive, how the list is organized, and what to do next. The output schema is absent, but the description's explicit category list plus the follow-up pointers are enough for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the schema coverage is complete, so the description does not need to explain parameters. It correctly avoids inventing parameter requirements, making the call semantics obvious.
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 ('Return') and a precise resource ('full categorized list of well-known front-month futures symbols'). The listed categories and the pointer to sibling tools distinguish it from futures_market_overview and futures_top_movers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames it as a symbol-reference source and tells the agent to feed these symbols into futures_category_snapshot or coin_analysis for deeper analysis. It does not spell out exclusions, but for a zero-parameter reference tool the intended use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_chart_recommendationARead-only
Detects the active TradingView chart open in the browser and returns a live trade recommendation.
This tool queries the Chrome/Edge remote debugging session on port 9222 to read the active chart symbol, exchange, and timeframe, then runs a strategy backtest and technical analysis to return a tailored trade setup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, and destructive=false, so safety is covered. The description adds valuable behavioral context beyond annotations: it queries Chrome/Edge remote debugging on port 9222 and reads the active symbol, exchange, and timeframe. It does not cover failure modes or permissions, but the operational prerequisite is useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: the first front-loads the purpose, and the second explains the mechanism. Every sentence adds useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and complex browser integration, the description is nearly complete. It names the dependency on port 9222 and describes what happens internally, though it could say more about the recommendation output format.
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?
There are zero parameters, so the baseline is 4 per the rubric. The description does not need to document parameter syntax, and it correctly avoids inventing or implying inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: detecting the active TradingView chart in a browser and returning a live trade recommendation. It clearly distinguishes itself from generic analysis siblings through the browser-chart context, but it does not explicitly name or contrast with any sibling tool.
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?
Usage is implied by the browser-chart context: use this when an active TradingView chart is open and a recommendation is wanted. However, there is no explicit when-to-use statement, no when-not guidance, and no named alternatives among the many analysis and backtest siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_sentimentARead-only
News sentiment for stocks and crypto (licensed Marketaux entity sentiment).
Args: symbol: Asset symbol ("AAPL", "BTC", "ETH", "TSLA") category: News group to search ("crypto", "stocks", "all") limit: Max articles to analyse
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| symbol | Yes | ||
| category | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, establishing it as a safe read-only operation. The description adds a small behavioral note about limit controlling the number of articles analyzed and mentions the licensed data source, but it does not describe the output format or any rate limits. This is moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single-line purpose plus a compact Args block. It contains no filler and is front-loaded with the essential behavior, every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain what the result looks like (score, label, articles). Since the tool's purpose is sentiment analysis, agents need to know whether to expect a numeric score, categorical rating, or article list. The licensed source mention adds some context, but the missing return format is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only types and defaults (0% description coverage), so the description fully compensates by documenting symbol with examples, category with enumerated values, and limit as max articles. This is exemplary parameter documentation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides news sentiment for stocks and crypto, and names the data source (Marketaux). This makes its core function evident and distinguishes it from sibling tools like financial_news or top_gainers, though it lacks an explicit verb and does not name a specific sibling.
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?
There is no guidance on when to use this tool versus alternatives. It does not mention that financial_news might be more appropriate for raw articles, nor does it indicate when sentiment analysis is the right choice. The agent must infer usage solely from the tool name and brief description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_snapshotBRead-only
Global market overview: major indices, top crypto, FX rates, and key ETFs. Powered by Yahoo Finance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to re-state that it's a read-only operation. It adds a valuable source attribution ('Powered by Yahoo Finance') and lists the asset classes, which is useful context. However, it doesn't clarify what 'top crypto' or 'key ETFs' means, nor whether output includes real-time, delayed, or end-of-day data, which could matter for an agent picking a 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?
The description is two sentences plus a source line: efficient, front-loaded with the core purpose, and no fluff. It misses a tiny opportunity to add 'use cases' without bloating, but as written it's tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only overview tool with annotations covering the safety profile, the description is mostly complete. But given the sheer number of sibling snapshot/overview tools, a phrase like 'broader than futures_market_overview but narrower than egx_market_overview' would have made it much more complete for an agent deciding between siblings. Also, no output schema and no mention of return format, though that might be overkill for a snapshot tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document. The description's mention of asset classes (major indices, top crypto, FX rates, key ETFs) is the only semantic load-bearing content. With no parameters and 100% schema coverage meaning 'no params', the description does its minimal job but does not do more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-noun phrase 'Global market overview' and lists covered asset classes (indices, crypto, FX, ETFs), which is specific enough to know roughly what the tool does. However, it does not distinguish itself from siblings like 'egx_market_overview' or 'futures_market_overview', so an agent might still pick the wrong macro tool. It's adequate but not great.
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?
There is no explicit guidance on when to use this tool versus alternatives. The description implies a broad use case, but with siblings like 'egx_market_overview' and 'futures_market_overview', the absence of any 'use this for X, not Y' direction is a gap. An agent has to infer from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_agent_analysisARead-only
Run a multi-agent debate (Technical, Sentiment, Risk) for a specific symbol.
Args: symbol: Symbol — crypto: "BTCUSDT"; stocks: "COMI" (EGX), "THYAO" (BIST), "600519" (SSE), "300251" (SZSE), "2330" (TWSE), "3105" (TPEX), "GDX" (AMEX) exchange: Exchange — crypto: KUCOIN, BINANCE, MEXC; stocks: EGX, BIST, NASDAQ, NYSE, AMEX, NYSEARCA, PCX, SSE, SZSE, TWSE, TPEX timeframe: Time interval (5m, 15m, 1h, 4h, 1D, 1W)
Returns: A structured debate between 3 AI agents culminating in a final trading decision.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the internal debate structure and the final trading decision, which goes beyond annotations, but it does not disclose behavior like latency, data dependencies, or return shape details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. The Args section is compact but information-dense, and the Returns section is a single clear sentence. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the inputs and the general nature of the output, but with no output schema and no statement about edge cases, failure modes, or required data prerequisites, an agent only gets a partial picture. It is adequate for a first invocation but leaves the shape and limitations of the result under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameters. It does this well: symbol and exchange are given extensive concrete examples across crypto and stock markets, and timeframe is listed with valid intervals. This meaningfully exceeds the bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Run a multi-agent debate') and a clear resource (a symbol), with the three agent angles (Technical, Sentiment, Risk) spelled out. It is unambiguous about what the tool does, though it does not explicitly differentiate itself from sibling analysis tools like multi_timeframe_analysis or combined_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose this tool over alternatives. It does not mention use cases, exclusions, or relationships to sibling tools such as multi_timeframe_analysis, market_sentiment, or coin_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
multi_timeframe_analysisARead-only
Multi-timeframe alignment analysis (Weekly → Daily → 4H → 1H → 15m).
Canonical name is exactly multi_timeframe_analysis (there is no
"get_multi_timeframe_analysis" tool). Use this for cross-timeframe trend
alignment on ONE symbol; for a single-timeframe deep dive use
coin_analysis; for TA + sentiment + news use combined_analysis.
Example: multi_timeframe_analysis(symbol="SOLUSDT", exchange="BINANCE")
Args: symbol: Bare ticker, no exchange prefix — crypto: "BTCUSDT"; stocks: "COMI" (EGX), "THYAO" (BIST), "600519" (SSE), "300251" (SZSE), "2330" (TWSE), "3105" (TPEX), "GDX" (AMEX) exchange: Exchange — crypto: KUCOIN, BINANCE, MEXC; stocks: EGX, BIST, NASDAQ, NYSE, AMEX, NYSEARCA, PCX, SSE, SZSE, TWSE, TPEX
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| exchange | No | KUCOIN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true, destructiveHint=false) already establish this is a read-only safe operation. The description adds the specific timeframe hierarchy (Weekly → Daily → 4H → 1H → 15m), which is genuine behavioral context, but doesn't discuss rate limits, auth, or return-value behavior. Adheres to the calibration baseline of 3 for annotations covering the safety profile with some but limited additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long, but nearly every sentence earns its place: a one-line summary, anti-hallucination note about the canonical name, sibling routing, a worked example, and parameter docs. The 'canonical name' clarification is slightly unusual and reads as a guardrail, but the overall structure is well-organized and front-loaded with the purpose.
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 low-complexity tool (2 params, no output schema, no nested objects), this is nearly complete: purpose, alternatives, full parameter semantics, and a runnable example. The only gap is no mention of the return shape or behavior, but with no output schema and a self-evident analysis output, this is a minor omission.
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?
With schema description coverage at 0% and no enums, the description carries the full burden — and it excels. It documents concrete symbol formats per market ('BTCUSDT', 'COMI' (EGX), '600519' (SSE)) and enumerates all valid exchange values across crypto and stock venues. This goes far beyond the bare schema and is genuinely load-bearing for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Multi-timeframe alignment analysis') and immediately differentiates from siblings: 'for a single-timeframe deep dive use coin_analysis; for TA + sentiment + news use combined_analysis.' An agent can instantly tell this apart from the siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is front and center: 'Use this for cross-timeframe trend alignment on ONE symbol' followed by named alternatives for other cases. Explicitly names two sibling tools with the conditions that select them (single-timeframe vs. combined analysis), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rating_filterARead-only
Filter coins by Bollinger Band rating.
Args: exchange: Exchange name like KUCOIN, BINANCE, BYBIT, MEXC, etc. timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M rating: BB rating (-3 to +3): -3=Strong Sell, -2=Sell, -1=Weak Sell, 1=Weak Buy, 2=Buy, 3=Strong Buy limit: Number of rows to return (max 50)
Returns list[dict] on success. On ANY failure returns a structured
error envelope {"error": {"code": ..., "retryable": ...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| rating | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 5m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint), the description discloses the return type ('list[dict]') and the structured error envelope on any failure ('{"error": {"code": ..., "retryable": ...}}'). It also clarifies the limit maximum. This adds valuable behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-line summary followed by a bulleted args list. It is concise and front-loads the purpose. The return/error info is appended efficiently. No extraneous 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?
For a filter tool with 4 optional parameters, the description covers all parameter values, return type, error envelope, and limit constraints. It is complete enough for an agent to invoke it correctly without additional information. The presence of an output schema is noted but not needed here.
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?
With schema description coverage at 0%, the description fully compensates by explaining each parameter: exchange with examples, timeframe with allowed values, rating with a mapping (-3 to +3), and limit with a max. This provides essential meaning that the schema lacks.
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 'Filter coins by Bollinger Band rating', which is a clear verb+resource+metric. It distinguishes the tool's core function but does not explicitly differentiate it from the sibling bollinger_scan, which likely also uses Bollinger Bands. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and the parameter semantics, but it does not state when to use this tool over alternatives like bollinger_scan or other scanners. The usage context is implied from the name and description, but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_volume_scannerARead-only
Smart volume + technical analysis combination scanner.
Args: exchange: Exchange name min_volume_ratio: Minimum volume multiplier (default 2.0) min_price_change: Minimum price change percentage (default 2.0) rsi_range: "oversold" (<30), "overbought" (>70), "neutral" (30-70), "any" limit: Number of results (max 30)
Returns list[dict] on success. On ANY failure returns a structured
error envelope {"error": {"code": ..., "retryable": ...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| rsi_range | No | any | |
| min_price_change | No | ||
| min_volume_ratio | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and non-destructive annotations, the description explicitly reveals the success return type (list[dict]) and the failure envelope with retryable flag. It also notes a max result limit of 30. This provides meaningful runtime behavior that annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into a one-sentence summary, a parameter list, and a return/error statement. Every line adds necessary information and nothing is repeated. It is an appropriate length for a 5-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only scanner with all-optional parameters, the description covers the return contract, error shape, and all parameter semantics. No critical information about how to invoke or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It does so for all 5 parameters, including valid rsi_range values, defaults for min_volume_ratio and min_price_change, and a max for limit. It is slightly terse for exchange but sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear combination scanner purpose: it combines volume and technical analysis. It doesn't use a verb like 'scan' or 'screen,' but the noun phrase is specific and suggests what the tool does. It distinguishes itself from pure volume and pure technical scanners, though not 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?
The description gives no explicit when-to-use guidance or exclusions, and it never references siblings such as volume_breakout_scanner or bollinger_scan. The presence of filters implies its use case, but the agent is left to infer when to select it over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_extended_hoursARead-only
Real-time pre-market and after-hours prices for a US stock symbol.
Use this when the user asks about a stock outside the regular 9:30am-4pm ET session — earnings reactions, overnight news, "what is X doing in after-hours?", "how did Y open in pre-market?". Returns the most recent valid print from each session window (pre-market, regular, post-market) along with computed % changes vs. the previous close and the regular close, respectively.
During the regular session, post_market will be null (no data yet). On weekends/holidays, returns whatever's most recent in each window.
Args: symbol: US stock symbol — AAPL, NVDA, TSLA, SPY, ^GSPC, etc.
Returns: - pre_market: {price, as_of_utc, change_vs_previous_close_pct} or null - regular: {price, as_of_utc, change_pct} (consolidated tape close) - post_market: {price, as_of_utc, change_vs_regular_close_pct} or null - previous_close, currency, exchange, market_state for context
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive, and the description adds valuable behavioral details beyond that: null post_market during regular hours, weekend/holiday behavior, 'most recent valid print' per window, and the computed percentage changes relative to appropriate baselines. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and usage trigger, followed by concise structured Args and Returns sections. Every sentence adds value, and the format is easy for an agent to scan and apply.
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 single-parameter, read-only tool with no output schema, the description is complete: it explains inputs, outputs, null semantics, session timing, and market-condition behavior. An agent has everything needed to select and invoke the tool correctly and interpret its results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the parameter name and type with no description, so the description carries the full burden. It explains symbol as a US stock symbol and supplies concrete examples including tickers, index symbols, and the ^GSPC format. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving real-time pre-market and after-hours prices for a US stock symbol. It uses a specific verb-resource combination ('returns real-time pre-market and after-hours prices') and distinguishes itself from regular-session price tools like stock_prices and yahoo_price by explicitly limiting scope to extended-hours sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this when the user asks about a stock outside the regular 9:30am-4pm ET session' and provides concrete example queries. It also explains edge-case behavior during regular sessions and weekends/holidays, which helps the agent decide correctly without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_options_chainARead-only
Full options chain (calls + puts) for a US stock symbol and one expiry.
Use this when the user asks "what's the options chain for X?", "show me AAPL puts expiring next Friday", or wants to inspect bid/ask/IV/volume on a specific strike. If no expiry is provided, returns the nearest expiry so Claude can quote it back and ask "want a different one?".
Args:
symbol: US stock symbol — AAPL, NVDA, TSLA, SPY, etc.
expiry: Optional ISO date (YYYY-MM-DD). Must match one of the
available_expiries Yahoo returns; otherwise returns an error
with the list of valid dates.
Returns: - underlying_price, underlying_change_pct - requested_expiry, available_expiries (list of YYYY-MM-DD) - call_count, put_count - calls: list of {strike, last_price, bid, ask, volume, open_interest, implied_volatility, in_the_money, expiration} - puts: same shape as calls
| Name | Required | Description | Default |
|---|---|---|---|
| expiry | No | ||
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral detail beyond the schema: it returns the nearest expiry when none is provided, errors with a list of valid expiries if the given one doesn't match, and fully documents the return structure including underlying prices, counts, and per-strike fields. This gives an agent a clear picture of side effects, error behavior, and output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: a one-sentence summary, explicit usage triggers, and then precisely formatted Args and Returns sections. Every sentence earns its place, and the length is justified by the need to document both parameters and the full return shape without an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly documents the return payload, including nested call/put objects with all key fields. It covers required behavior (nearest expiry, error on invalid expiry), parameter semantics, and the distinction between calls and puts. An agent has everything it needs to invoke this tool correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full parameter-documentation weight. It defines `symbol` with concrete examples ('AAPL, NVDA, TSLA, SPY') and `expiry` with format constraints, validity rules, and error behavior. This exceeds what a bare schema would provide and leaves no ambiguity about how to populate each argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's role: 'Full options chain (calls + puts) for a US stock symbol and one expiry.' It uses a specific verb ('returns,' 'Use this when') and identifies the exact resource, distinguishing it from generic quote tools like yahoo_price or stock_prices. The examples ('show me AAPL puts expiring next Friday') make the intent unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit trigger phrases: 'Use this when the user asks...' and gives concrete examples. It also explains the no-expiry fallback behavior and invalid-expiry error handling. However, it does not explicitly name sibling alternatives or state when NOT to use this tool versus stock_options_unusual_activity or other option-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_options_unusual_activityARead-only
Top strikes by volume / open-interest ratio — institutional positioning signal.
Use this when the user asks "any unusual options activity on X?", "where is the smart money positioned on NVDA before earnings?", or wants a V/OI screener for a ticker. A V/OI ratio > 1 means today's volume already exceeds standing open interest, which classically flags fresh institutional positioning on a specific strike in a specific direction (call vs put).
Scans the soonest few expirations, filters out illiquid strikes (under
min_volume), and returns the top-N sorted by V/OI descending. Also
returns aggregate call vs put volume so Claude can comment on the
overall directional bias.
Args: symbol: US stock symbol — AAPL, NVDA, TSLA, SPY, META, etc. top_n: How many strikes to return. Default 10. min_volume: Filter floor for today's volume — prevents noise from illiquid strikes with high V/OI ratios. Default 100. expiries: Number of soonest expirations to scan. Default 4 (typically covers ~1 month of weeklies + monthlies).
Returns: - underlying_price - expiries_scanned (list of YYYY-MM-DD) - total_call_volume, total_put_volume, put_call_volume_ratio - unusual: list of top-N contracts sorted by V/OI desc, each with {strike, side (call|put), expiration, volume, open_interest, v_oi_ratio, last_price, implied_volatility, in_the_money, strike_vs_spot_pct (moneyness)}
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | ||
| symbol | Yes | ||
| expiries | No | ||
| min_volume | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses the internal algorithm: scans the soonest expirations, filters out illiquid strikes below min_volume, sorts by V/VOI descendant, and helps to explain the OI > 1 interpretation. It also notes it returns aggregate call vs assets volume for directional-bias commentary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer, but every sentence adds meaningful behavior or usage guidance. It is logically organized: a one-line summary, example use cases, parameter details, and return format. There is no fluff or repeated schema text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, it fully documents the return fields: underlying_price, expiries_scanned, total_call_volume, total_put_volume, put_call_volume_ratio, and each unusual contract's fields. For an additional complexity tool with four parameters, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptive coverage (0%), meaning the tool description carries full burden. It defines each parameter's purpose and default, such as 'top_n: How many strikes to return. Default 10' and 'min_volume: Filter floor... prevents noise from illiquid strikes'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Top strikes by volume / open-interest ratio — institutional positioning signal,' which names the resource and specific metric. It then gives concrete verbs: 'Scans…filters…returns,' making it clearly distinguishable from a generic stock_options_chain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists canonical trigger phrases: 'any unusual options activity on X?', 'where is the smart money positioned...', and 'wants an OI screener for a ticker.' It does not name an alternative sibling tool or say 'do not use this for X', but the use cases are specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_pricesARead-only
Current price + daily % change for specific stock symbols.
Args: tickers: comma-separated EXCHANGE:SYMBOL list (max 2000 — one upstream request even at full size), e.g. "NASDAQ:NVDA, NASDAQ:TSLA, KRX:005930". The exchange prefix is required — the scanner's direct-ticker lookup is exchange-scoped.
Returns: Envelope dict: rows of {ticker, symbol, description, exchange, price, open, high, low, currency, change_percent} plus a not_found list naming any requested ticker the scanner didn't recognize.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint/destructiveHint. The description adds substantial behavioral disclosure: the max of 2000 tickers, the fact that even at that size it is 'one upstream request', the exchange-scoped lookup behavior, and the not_found list in the response for unrecognized tickers. These are exactly the kind of behaviors an agent needs to know that the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about 60 words of prose split into an intro sentence, an Args section, and a Returns section. Every sentence adds critical information—no redundancy, no fluff. The most important constraint (format) appears first, with the example and edge cases (not_found) following naturally. It is dense but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description covers all necessary usage context: the exact string format, length limits, the behavior when a ticker is not recognized, and the full set of returned fields (ticker, symbol, description, exchange, price, open, high, low, currency, change_percent). There is no external output schema to fall back on, yet 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only provides 'tickers' with type string and no description or enum, i.e., 0% schema description coverage. The description fully compensates by specifying the exact format ('EXCHANGE:SYMBOL'), giving an example ('NASDAQ:NVDA, NASDAQ:TSLA, KRX:005930'), the comma separator, the 2000 max, the requirement for an exchange prefix, and the return envelope structure. This transforms a previously meaningless parameter into a completely specified one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Current price + daily % change for specific stock symbols.' It specifies the resource (stock symbols), the action (retrieve current price and change), and the scope (specific symbols, not indices or sectors). This distinguishes it from the many scanner and analysis tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through detailed formatting instructions ('comma-separated EXCHANGE:SYMBOL list') and notes the exchange prefix is required. However, it never explicitly states when to use this tool versus a sibling like 'yahoo_price' or 'stock_screener', nor does it exclude alternatives. The context is clear, but there are no explicit when/when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_screenerARead-only
Screen stocks by share type — the API twin of TradingView's "Common stock" / "Preferred stock" symbol-search filter.
Args: country: TradingView market name — e.g. america, korea, germany, brazil, japan, uk, india, turkey, canada, australia, france, hongkong stock_type: common | preferred limit: rows to return (max 2000, single upstream request), ranked by market cap descending exclude_otc: default True — drop OTC listings (foreign companies traded over-the-counter); "america" otherwise means "US venue", not "US company" compact: default False — True returns only ticker/symbol/price/currency/ change_percent per row (light payload for bulk price feeds) sort_by: market_cap (default) | dividend_yield | change | price — server-side descending sort over the WHOLE market, so e.g. sort_by=dividend_yield with limit=20 is the market's true top-20 dividend payers, not just the biggest companies re-sorted
Returns: Envelope dict: total_matches (market-wide count), returned, and rows of {ticker, symbol, description, exchange, price, open, high, low, currency, change_percent, dividend_yield, market_cap} — price is the current/last close; open/high/low are the current session's daily bar. Prices are in the market's local currency (e.g. KRW for korea).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| compact | No | ||
| country | No | america | |
| sort_by | No | market_cap | |
| stock_type | No | common | |
| exclude_otc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond annotations: 'single upstream request', 'server-side descending sort over the WHOLE market', the 'price is current/last close' semantic, local-currency behavior (with KRW example), and the return-envelope structure. An agent calling this knows exactly what side effects and data semantics to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The docstring-style Args/Returns layout is scannable and front-loaded with intent. Every clause earns its place, from the parenthetical 'single upstream request' caveat on limit to the 'KRW for korea' clarification. The sort_by example is the longest sentence but conveys critical semantics that could not be abbreviated. No redundancy with the schema since the schema has no descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description correctly carries the return-format burden — and does so thoroughly: the envelope keys (total_matches, returned, rows), row-level fields, and the meaning of open/high/low relative to price are all stated. The only minor omissions are error behavior for invalid country values and an explicit statement about rate limiting, but for a read-only screener this is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full documentation burden — and it delivers. Every parameter gets meaning beyond its name: country gets a TradingView market-name note and examples; limit gets max-2000 plus ranking semantics; sort_by gets the full semantics of each value; exclude_otc and compact each explain the trade-off and intended use. Parameter names in the schema would be insufficient; the description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific verb (screen), resource (stocks), and the qualifying scope ('by share type'). It also anchors itself as the API twin of TradingView's 'Common stock' / 'Preferred stock' filter, which immediately signals its purpose relative to the many scanner siblings. Together with the title, an agent can distinguish this from the scanner tools without inspecting 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?
The description gives rich intra-tool usage context: sort_by is explained with a concrete example showing server-side whole-market behavior, compact is positioned 'for bulk price feeds', and exclude_otc explains the 'US venue' vs 'US company' distinction. However, it never explicitly says when NOT to use this tool or names a sibling alternative (e.g., egx_stock_screener or the scanners), so selection guidance across tools is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_gainersARead-only
Return top gainers for an exchange and timeframe using Bollinger Band analysis.
Args: exchange: Exchange name — crypto: KUCOIN, BINANCE, BYBIT, MEXC; stocks: EGX, BIST, NASDAQ, NYSE, BURSA, HKEX, SSE, SZSE, TWSE, TPEX timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M limit: Number of rows to return (max 50)
Returns:
list[dict] on success. On ANY failure returns a structured error
envelope {"error": {"code": ..., "retryable": ...}} — never a
raw exception string.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context: it specifies the return format (list[dict] on success) and the structured error envelope with retryable flag, which is not covered by annotations. Since readOnlyHint is true and destructiveHint is false, the safety profile is already clear, but the error handling detail goes beyond annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a docstring format: purpose first, then Args, then Returns. It is concise yet covers all essential details without unnecessary fluff. The structure is easy to scan, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only screener, the description covers all necessary aspects: parameters, valid values, return type, and error behavior. The existence of an output schema is indicated, but the description still explains the return shape, which is helpful. No critical information is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It excels by listing valid exchange names (KUCOIN, BINANCE, etc.), valid timeframes (5m, 15m, 1h, etc.), and the limit parameter with a max of 50. This provides all necessary semantics that the schema lacks (which only has defaults and types).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns top gainers for an exchange and timeframe using Bollinger Band analysis. This distinguishes it from siblings like top_losers (opposite direction) and bollinger_scan (likely a broader scan), even though it doesn't name them explicitly. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like bollinger_scan or top_losers. Usage is implied by the name and purpose, but no explicit conditions or comparisons are given. An agent could infer that it's for quick gainers screening, but the lack of explicit guidance leaves some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_losersARead-only
Return top losers for an exchange and timeframe. Supports crypto (KUCOIN, BINANCE, MEXC) and stocks (EGX, BIST, NASDAQ).
Returns list[dict] on success. On ANY failure returns a structured
error envelope {"error": {"code": ..., "retryable": ...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds a clear success return type and a structured error envelope on any failure, which is useful and goes beyond the annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences are front-loaded with the core purpose, followed by supported markets and the return/error contract. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given all parameters are optional with defaults and an output schema exists, the description covers the main selection logic and failure behavior. The remaining gap is the lack of enumerated timeframe values, which could cause an agent to pass an unsupported string, but overall the tool is callable from the description.
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?
With 0% schema description coverage, the description must carry parameter meaning. It adds concrete exchange choices and distinguishes crypto vs stock markets, but it still omits valid timeframe values and the meaning/range of limit. This is meaningful but incomplete compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair, 'Return top losers for an exchange and timeframe,' which immediately distinguishes the tool from screening, price, and news tools. It also enumerates supported markets, so the agent knows its exact scope. This exceeds baseline clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The supported exchange list gives implicit guidance about where the tool applies, but there is no explicit 'use this instead of X' statement or exclusions. An agent must infer when to choose top_losers over top_gainers, futures_top_movers, or stock_screener. That is adequate but not strongly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_breakout_scannerARead-only
Detect coins with volume breakout + price breakout.
Args: exchange: Exchange name like KUCOIN, BINANCE, BYBIT, MEXC, etc. timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M volume_multiplier: How many times the volume should be above normal level (default 2.0) price_change_min: Minimum price change percentage (default 3.0) limit: Number of rows to return (max 50)
Returns list[dict] on success, or an error envelope on total upstream
failure ({"error": {"code": "ALL_BATCHES_FAILED", ...}}). The empty
list now strictly means "no matches today"; rate-limit cliffs surface
explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m | |
| price_change_min | No | ||
| volume_multiplier | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds some behavioral detail by explaining the return contract: returns list[dict] on success, an error envelope on total upstream failure, and that an empty list means no matches today. However, it does not discuss rate limits, performance characteristics, or any side effects beyond the obvious read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief purpose statement followed by a parameter list and return information. It is reasonably concise, though it somewhat duplicates the schema by listing parameters that are already present. The structure is logical and easy to scan, but could be tightened by referencing the schema instead of repeating 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?
Given that the tool has 5 parameters, no required fields, and an output schema, the description covers all parameters, return types, and error behavior. It also clarifies the meaning of an empty list. However, it omits any mention of preconditions, such as the need for an active market or data availability, and does not discuss edge cases (e.g., invalid timeframe values). The presence of an output schema compensates for missing low-level return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides semantic explanations for each parameter (e.g., 'volume_multiplier: How many times the volume should be above normal level' and 'timeframe: One of 5m, 15m, 1h, 4h, 1D, 1W, 1M'), which the input schema lacks. This gives the agent a clear understanding of what each parameter controls, though it could be augmented with examples or more explicit units (e.g., percentage as a number) to reach a perfect score.
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 begins with a clear verb 'Detect' and specifies the resource 'coins' with the criteria 'volume breakout + price breakout'. This is distinct from the sibling tools (e.g., smart_volume_scanner, top_gainers) and immediately clarifies the tool's primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to choose this tool over the many alternative scanners, such as when a user specifically wants a combined volume and price breakout vs. volume-only or pattern-based scans. There is no mention of appropriate use cases or comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_confirmation_analysisBRead-only
Detailed volume confirmation analysis for a specific coin.
Args: symbol: Coin symbol (e.g., BTCUSDT) exchange: Exchange name timeframe: Time frame for analysis
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| exchange | No | KUCOIN | |
| timeframe | No | 15m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true and destructiveHint=false, and the description adds no additional behavioral context such as rate limits, data source, or what 'analysis' entails. While the description is consistent with the annotations, it provides no extra transparency about side effects or system behavior beyond what annotations already capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the main purpose, followed by a parameter list. It could be better structured with consistent formatting or a more explicit separation between the summary and details, but it is not bloated and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with only three parameters and no output schema, the description is adequate. It explains the parameters and the tool's purpose. However, it does not mention what happens after analysis (e.g., output format, examples), which could be important for an agent to know. But given the simplicity and the presence of annotations, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions for any parameter (0% schema coverage), but the description's Args section provides brief definitions: 'Coin symbol', 'Exchange name', 'Time frame for analysis'. This adds meaning and compensates for the schema gap, though the definitions are minimal and could be more detailed (e.g., accepted formats, examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs 'volume confirmation analysis' for a specific coin, which is a specific verb+resource. It includes the parameters symbol, exchange, and timeframe, making its purpose clear. However, it does not explicitly differentiate itself from sibling tools like volume_breakout_scanner, so it loses a point for not distinguishing from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus other volume-related tools in the sibling list. The description only lists parameter names without any context about typical use cases, prerequisites, or alternatives. This is essentially no usage guidance beyond the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walk_forward_backtest_strategyARead-only
Walk-forward backtest to detect overfitting — validates strategy on unseen data.
Args: symbol: Yahoo Finance symbol (AAPL, BTC-USD, SPY…) strategy: rsi | bollinger | macd | ema_cross | supertrend | donchian | keltner_breakout (rsi_pullback and triple_ema not supported here — SMA200 warmup exceeds typical fold size; use run_backtest with period='2y') period: '1mo', '3mo', '6mo', '1y', '2y' (recommend '2y') initial_capital: Starting capital per fold in USD (default $10,000) commission_pct: Per-trade commission % (default 0.1%) slippage_pct: Per-trade slippage % (default 0.05%) n_splits: Number of walk-forward folds (default 3, max 10) train_ratio: Fraction of each fold used for training (default 0.7) interval: '1d' (daily) or '1h' (hourly)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 2y | |
| symbol | Yes | ||
| interval | No | 1d | |
| n_splits | No | ||
| strategy | Yes | ||
| train_ratio | No | ||
| slippage_pct | No | ||
| commission_pct | No | ||
| initial_capital | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is clear. The description adds meaningful behavioral context by explaining why some strategies are unsupported ('SMA200 warmup exceeds typical fold size'), the fold-based evaluation approach from training to unseen test data, and the per-fold capital structure—useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is a crisp thesis, and the Args block is well-organized for parsing. However, the Args section restates defaults already present in the schema (e.g., 0.05, 10000) and is fairly long. It's efficient enough to be skimmable but slightly redundant with schema values that the agent could fetch on its own.
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 tool, the description thoroughly covers what, why, and when, including a critical sibling alternative. The main gap is that it doesn't describe expected return values or output shape, and there's no output schema to fill the void. It also doesn't mention error cases, but for a backtest with no side effects, the provided context is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden—and it delivers. Every parameter is documented with units, defaults, accepted values, and slot semantics (e.g., 'per fold', 'fraction of each fold used for training'). The description even clarifies constraints like n_splits max=10 that the schema leaves implicit. This is a model example of compensating for absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and resource combination—'Walk-forward backtest to detect overfitting'—and explains the mechanism ('validates strategy on unseen data'). It clearly differentiates this walk-forward variant from standard backtests by naming the core purpose and the range of strategies it supports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes unsupported strategies (rsi_pullback, triple_ema) to run_backtest with a specific period, giving the agent an unambiguous alternative. It also advises a preferred period ('recommend 2y') and constrains n_splits to a max of 10, providing decisions rather than just definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yahoo_priceARead-only
Real-time price quote from Yahoo Finance for any stock, crypto, ETF or index.
Args: symbol: Yahoo Finance symbol — e.g. AAPL, BTC-USD, SPY, ^GSPC, EURUSD=X, THYAO.IS
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description does not contradict those. It adds the Yahoo Finance data source and real-time character, but provides no further behavioral context such as rate limits, latency concerns, or what the quote response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one purpose sentence plus a short Args section with examples. Every line adds necessary signal, and the main purpose appears first.
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, read-only quote tool, the description is mostly complete and gives an agent enough to invoke it correctly. The remaining gaps are the absence of any output-shape note and the lack of guidance that would disambiguate from similar-sounding sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description carries the full burden for the symbol parameter. It compensates well with concrete examples covering equities, crypto, ETFs, indices, forex, and foreign markets, making the expected symbol format genuinely actionable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and scope: 'Real-time price quote from Yahoo Finance for any stock, crypto, ETF or index.' It is exactly clear what data this tool returns. It does not name how it differs from closely related sibling tools such as stock_prices, so it is not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use or when-not-to-use guidance and names no alternatives. Given the sibling list contains overlapping-sounding tools like stock_prices, the agent receives no help separating them by context or intent.
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.
38 tool updates
v0.8.0- First observed
advanced_candle_pattern - First observed
backtest_strategy - First observed
bitcoin_market_pulse - First observed
bollinger_scan - First observed
coin_analysis - First observed
combined_analysis - First observed
compare_strategies - First observed
consecutive_candles_scan - First observed
egx_fibonacci_retracement - First observed
egx_index_analysis - First observed
egx_market_overview - First observed
egx_sector_scan - First observed
egx_sector_scanner - First observed
egx_stock_screener - First observed
egx_trade_plan - First observed
financial_news - First observed
futures_category_snapshot - First observed
futures_market_overview - First observed
futures_top_movers - First observed
futures_watchlist - First observed
get_active_chart_recommendation - First observed
market_sentiment - First observed
market_snapshot - First observed
multi_agent_analysis - First observed
multi_timeframe_analysis - First observed
rating_filter - First observed
smart_volume_scanner - First observed
stock_extended_hours - First observed
stock_options_chain - First observed
stock_options_unusual_activity - First observed
stock_prices - First observed
stock_screener - First observed
top_gainers - First observed
top_losers - First observed
volume_breakout_scanner - First observed
volume_confirmation_analysis - First observed
walk_forward_backtest_strategy - First observed
yahoo_price
TDQS
Scored across 38 tools
Several tools overlap in purpose (e.g., egx_sector_scan vs egx_sector_scanner, bollinger_scan vs rating_filter, multiple volume/candle scanners, and several analysis variants like coin_analysis, multi_timeframe_analysis, combined_analysis, multi_agent_analysis). Descriptions offer explicit cross-references and clarify the intended use for many pairs, but boundaries remain fuzzy for a large set. An agent could still misselect without careful reading.
All names use snake_case, but the pattern is not fully predictable: some are prefixed by domain (egx_, futures_, stock_), others are generic, and suffixes vary (scan, scanner, screener, analysis). A single get_ prefix appears, and near-duplicate names like egx_sector_scan and egx_sector_scanner break consistency. Still readable overall.
38 tools is excessive for a single server, exceeding the 25+ threshold and risking tool overload. While the broad trading domain (crypto, stocks, EGX, futures, options, news, backtesting) explains some breadth, many tools are overlapping scanners or analysis variants that could be consolidated. The count makes selection unnecessarily difficult.
Coverage spans technical indicators, screeners, news sentiment, backtesting, options, futures, and market overviews, forming a broad trading analysis toolkit. Some gaps exist (e.g., dedicated historical OHLCV retrieval, portfolio/watchlist management), but core workflows appear well supported. Minor missing operations are workaroundable.
Maintenance
Related MCP Connectors
Evidence-gated quant research for TradingView Pine Script strategies, run from your AI client.
Validated trading edges across futures, equities, crypto. Live signals, full audit trail.
Real-time market data, screeners, technical analysis & backtesting for stocks, crypto and forex.
AI crypto signals, whale positions, 19 technical indicators, derivatives, screener and backtests
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides advanced cryptocurrency and stock market analysis using TradingView data with real-time screening, technical indicators, and pattern recognition. Supports multiple exchanges and markets for comprehensive trading intelligence through natural language queries.103MIT
- FlicenseNot gradedqualityDmaintenanceEnables quantitative trading analysis with 12 tools for real-time market data, 28+ technical indicators, FinBERT-powered news sentiment analysis, and automated trading signal generation for stocks and forex.1-
- FlicenseNot gradedqualityBmaintenanceEnables AI co-pilots to interact with TradingView charts, manage alerts via REST API, automate morning briefs with custom trading rules, and perform real-time market analysis.-
- FlicenseNot gradedqualityDmaintenancePersonal AI assistant for your TradingView Desktop charts. Connects AI to your locally running TradingView app via Chrome DevTools Protocol for AI-assisted chart analysis, Pine Script development, and workflow automation.120 npm-