TradingView MCP
Provides tools for Pine Script v5/v6 development inside TradingView's Monaco editor, enabling agents to read, edit, hot-reload, check errors, and compile Pine scripts programmatically.
Allows programmatic control of TradingView Desktop charts and market intelligence, including chart navigation, OHLCV and indicator data retrieval, technical analysis, alerts, watchlists, multi-pane orchestration, and bar replay.
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., "@TradingView MCPget the last 50 candles for AAPL on the 5-minute chart"
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.
TradingView MCP — Enterprise AI Market Intelligence & Chart Automation
An enterprise-grade, concurrency-safe, observable Model Context Protocol (MCP) server providing autonomous AI agents (Claude, Cursor, Antigravity, Cline) with direct real-time programmatic control, deterministic technical analysis, and multi-timeframe market intelligence on top of TradingView Desktop.
📑 Table of Contents
Related MCP server: TradingView MCP Jackson
⚡ Executive Overview
Traditional browser automation for financial charts suffers from race conditions, DOM polling stalls, context window exhaustion, and hallucinations caused by unconfirmed/live candle values.
TradingView MCP transforms TradingView Desktop into a deterministic execution engine for Large Language Models by connecting via the Chrome DevTools Protocol (CDP) directly into TradingView's internal Charting API and Monaco code editor.
Key Capabilities
Direct Chart Object Binding: Extracts exact mathematical OHLCV bars, indicator values, and custom Pine graphics directly from TradingView's in-memory data sources (
window.TradingViewApi), bypassing DOM scraping.Autonomous Pine Script IDE Integration: Programmatically reads, edits, hot-reloads, checks errors, and compiles Pine Script v5/v6 inside TradingView's Monaco editor.
Native Market Structure Analysis: Zero-dependency pure-math engine computes Swing Highs/Lows, Break of Structure (BOS), Change of Character (CHoCH), Order Blocks / Fair Value Zones, and Market Regimes natively in Node.js.
Token-Optimized Context: Returns compact statistical summaries (
summary: true), deduplicated Pine price levels, and low-token incremental delta polling (market_get_recent_changes), minimizing payload sizes and preserving context window budget.
🏛 System Architecture
The server establishes a non-blocking stdio JSON-RPC transport with the AI agent and mediates all communication with the Chromium runtime of TradingView Desktop via a dedicated FIFO mutex queue.
flowchart TB
subgraph AI_CLIENT["AI Client / LLM Agent"]
Agent["Autonomous Agent\n(Claude / Cursor / Antigravity)"]
end
subgraph MCP_SERVER["TradingView MCP Server (Node.js)"]
Transport["StdioServerTransport\n(Strict JSON-RPC 2.0)"]
Router["MCP Tool Router\n(Zod Input Validation)"]
subgraph CORE_ENGINE["Core Reliability Subsystem"]
Queue["AsyncQueue (FIFO Mutex)\n- Concurrency Lock\n- Backpressure Rejection\n- 15s Per-Task Timeout"]
StateManager["ChartStateManager\n- Generation Counter\n- Symbol/TF Hash Tracking\n- Operation Contexts"]
GenCache["Generational Cache\n- Invalidation on State Change\n- Configurable TTL"]
end
subgraph ANALYSIS_ENGINE["Market Intelligence Engine"]
Indicators["Technical Indicators\n(RSI, MACD, EMA, BB, ATR, ADX, VWAP)"]
Structure["Market Structure\n(Swings, BOS, CHoCH, Equilibrium)"]
Regimes["Regime Classifier\n(Trending, Ranging, Breakout)"]
Zones["Zone Clustering & Touch Counters"]
MTF["Multi-Timeframe Aggregator"]
end
end
subgraph TV_DESKTOP["TradingView Desktop Application"]
CDP["Chromium DevTools Protocol (Port 9222)\nPage / Runtime / Input Domains"]
V8["V8 JavaScript Context"]
TV_API["TradingViewApi & ChartWidget\n- DataSources Collection\n- MainSeriesBars (Float64Array)\n- Graphics Primitives"]
Monaco["Monaco Editor (Pine Script IDE)"]
end
Agent <==>|JSON-RPC via stdio| Transport
Transport --> Router
Router --> CORE_ENGINE
CORE_ENGINE --> ANALYSIS_ENGINE
CORE_ENGINE <==>|CDP WebSocket| CDP
CDP <==>|Runtime.evaluate| V8
V8 <==> TV_API
V8 <==> Monaco🛡 Core Engineering Pillars
1. Deterministic Market Intelligence Engine
The server includes a zero-dependency quantitative analysis module (src/analysis/) that executes mathematical models directly against confirmed historical price series:
Wilder's RSI: Exact parity with J. Welles Wilder's smoothing algorithm, handling zero-loss / zero-gain boundaries strictly without floating point drift (
avgLoss === 0 ? 100 : ...).Trend & Volatility: Exponential Moving Averages (EMA 9/20/50/200), SMA, Bollinger Bands (mean, stdDev, bandwidth, %B), and Average True Range (ATR) with True Range smoothing.
Directional Movement (ADX): Directional Movement (+DI/-DI) and smoothed Average Directional Index (ADX) to distinguish trending markets from consolidating ranges.
Market Structure (SMC / Price Action): Deterministic fractal swing detection across configurable window sizes, identifying Break of Structure (BOS), Change of Character (CHoCH), and Equilibrium / Discount / Premium zones.
Volume Anomalies & Divergences: Relative volume (RVOL) standard deviation scoring and oscillator divergences (Regular Bullish/Bearish, Hidden Bullish/Bearish).
2. Concurrency Safety & AsyncQueue Mutex
TradingView's internal charting framework cannot process concurrent asynchronous evaluations from different threads without risking state corruption or target session disconnection.
Strict FIFO Serialization: All calls to
evaluate()andevaluateAsync()are queued through anAsyncQueuemutex lock.Backpressure Protection: The queue enforces a maximum backlog depth (
maxDepth: 100). If an agent attempts to flood the server, tasks are rejected immediately with a structured[Queue_BACKPRESSURE]error rather than exhausting memory.Per-Task Timeouts: Every CDP operation has an individual 15-second timeout with an
AbortControllersignal to prevent queue starvation.
3. Zero Hardcoded Sleeps (Reactive CDP Automation)
All legacy artificial timeouts (setTimeout(500), setTimeout(2500)) have been eliminated.
Operations utilize reactive predicate polling (
waitForCondition) with 50ms intervals.The server yields control back to the agent the exact millisecond the chart acknowledges a symbol change, indicator attachment, or Monaco editor initialization.
Eliminates fixed artificial sleeps by waiting deterministically on DOM state predicates and generation updates with early exit upon resolution.
4. State Generation Tracking & Cache Invalidation
To prevent race conditions where an agent reads bar data while a timeframe change is still resolving:
Generation IDs: Every change to symbol, timeframe, or chart layout increments an atomic
generationcounter on theChartStateManager.Generational Cache: Cached indicator and OHLCV data are tagged with the active generation ID. When a state change occurs, all stale generational cache entries are instantly purged.
Cross-Contamination Guards: Tools like
data_get_ohlcvandmarket_get_contextacceptexpectedSymbolandexpectedTf. If the chart has not yet finished transitioning, the call throws a classified retryableSTALE_CHART_STATEerror.
5. Data Provenance & Anti-Hallucination Contracts
LLMs frequently hallucinate because live (unclosed) candles fluctuate after tool execution.
barClosedSeparation: Every bar returned bydata_get_ohlcvcontains a booleanbarClosedflag.closedOnlyOption: Agents can requestclosedOnly: trueto strip out the forming candle entirely, guaranteeing that backtests, pattern recognition, and indicators operate exclusively on immutable data.Token Efficiency: In addition to full arrays,
data_get_ohlcvprovidessummary: truemode returning high, low, open, close, volume, and range statistics in < 1KB of JSON.
6. Security & Protocol Purity
JS Injection Defense (CWE-94 / CWE-116): All user inputs (symbols, timeframes, script names, Pine code) are strictly serialized with
JSON.stringify()before interpolation into CDP evaluate scripts.Stdout Protocol Purity: In MCP, stdout is exclusively reserved for JSON-RPC framing. Any diagnostic message, warning, or debug log is routed strictly to
process.stderr.
7. Smart Institutional Activity Proxy Engine (Volume & Microstructure Analysis)
The server integrates an advanced quantitative volume and market-microstructure engine (src/analysis/smart-volume.js and market_get_smart_volume):
Robust Relative Volume (RVOL) & Median / MAD Anomaly Scoring: Replaces naive SMA volume filters with rolling median and Median Absolute Deviation (MAD), computing finite robust z-scores: $$\text{robustZ} = \frac{\text{Volume} - \text{Median}}{1.4826 \times \text{MAD}}$$ Gracefully handles zero MAD, flat consolidation, and outlier skew without NaN or Infinity drift.
Volume Percentile Distribution: Ranks activity across configurable lookbacks (
P50,P75,P90,P95,P99) into normalized tiers (NORMAL,ELEVATED,HIGH,EXTREME).Candle Microstructure Geometry: Computes True Range, Body Ratio, Upper/Lower Wick Ratios, and Close Location $(C - L) / (H - L)$ to measure directional conviction and rejection intensity.
Wyckoffian Effort vs Result: Models normalized relative volume (Effort) against ATR-normalized price displacement (Result) to detect
HIGH_EFFORT_LOW_RESULT(potential absorption/exhaustion) vsHIGH_EFFORT_HIGH_RESULT(initiative moves) vsLOW_EFFORT_HIGH_RESULT(low-liquidity slippage).Behavioral Pattern Proxies:
ABSORPTION_LIKE: High effort volume with limited displacement, pronounced rejection wicks, and structural support/resistance boundary interaction.INITIATIVE_BULLISH/INITIATIVE_BEARISH: Significant volume anomaly with range expansion, strong directional body, and closes near bar extremes.EXHAUSTION_BULLISH/EXHAUSTION_BEARISH: Climax volume spikes with failure to accept outside range boundaries and rejection closes.BULLISH_LIQUIDITY_SWEEP/BEARISH_LIQUIDITY_SWEEP: Probing past confirmed swing highs/lows with instantaneous recapture and volume anomalies.BREAKOUT_CONFIRMATIONvsFAILED_BREAKOUT: Multi-bar structural acceptance beyond key zones versus rejection traps.ACCUMULATION_LIKE/DISTRIBUTION_LIKE: Rolling multi-bar cluster heuristic tracking repeated absorption, close distribution bias, and boundary defense.
Transparent Smart Activity Score (0-100): Never a black box; composite score exposes explicit component weights (
volumeAnomaly,effortResult,rangeExpansion,rejection,structureInteraction,pattern).Session Awareness: Automatically classifies Gold and FX liquidity regimes (
ASIA,LONDON,NEW_YORK,LONDON_NY_OVERLAP).Feed Volume Type Transparency: Explicitly tags CFD/Forex feeds (including
OANDA:XAUUSD) asTICK_VOLUME(price update frequency) rather than centralized transaction volume, ensuring AI models never mischaracterize inferred behavior as literal institutional order-book data.Non-Repainting Guarantee: All historical metrics and closed-bar events are mathematically immutable. Live forming bars are explicitly marked with
barClosed: false.
🧰 Complete MCP Tool Catalog
The server exposes 90 purpose-built MCP tools categorized across 10 functional domains.
High-Level Market Intelligence Tools
Designed specifically for AI agents to comprehend market structure and context in a single call.
Tool Name | Key Parameters | Description |
|
| One-stop analytical call: returns market trend, regime (TRENDING/RANGING/BREAKOUT), key indicators (RSI, MACD, BB, ATR, ADX, VWAP), volume anomalies, structure (swings, BOS, CHoCH), and support/resistance zones. |
|
| Analyzes institutional-style volume activity (RVOL, robust z-score, Wyckoff effort vs result, absorption, initiative moves, exhaustion, sweeps, accumulation/distribution). |
|
| Detects swing highs/lows, higher highs/lows (HH/HL/LH/LL), Break of Structure (BOS), Change of Character (CHoCH), and range equilibrium. |
|
| Clusters price levels into horizontal support and resistance zones with touch counts, strength scores, and boundaries. |
|
| Evaluates multi-timeframe alignment across resolutions (e.g., 1D, 4H, 1H, 15m), scoring bullish/bearish consensus. |
|
| Low-token incremental delta polling: returns only new swings, structure breakouts, and volume anomalies since previous turn. |
| none | Authoritative diagnostic snapshot of connection liveness, queue depth, active generation ID, and chart readiness. |
Chart Control & Navigation Tools
Tool Name | Key Parameters | Description |
| none | Returns current chart state: symbol, timeframe, chart style, and list of all attached study entities with IDs. |
|
| Changes the active chart symbol and waits for data feed confirmation. |
|
| Changes chart resolution and waits reactively for candle resolution. |
|
| Sets chart rendering style. |
|
| Adds or removes indicators on the chart. Requires full official name (e.g., |
| none | Returns Unix timestamps and bar index boundaries for currently visible canvas. |
|
| Zooms and pans chart viewport to specific time range. |
|
| Jumps chart viewport to center on a target date. |
| none | Fetches full instrument metadata (exchange, tick size, currency, market hours). |
|
| Searches TradingView symbol database for matching tickers and exchanges. |
| none | Returns atomic state snapshot: active symbol, resolution, bar count, last bar time, generation ID. |
|
| Performs atomic scan fetching OHLCV bars across multiple resolutions sequentially without race conditions. |
Market & Study Data Retrieval Tools
Tool Name | Key Parameters | Description |
|
| Fetches historical price bars with provenance metadata, |
|
| Reads internal parameters, input values, and configurations of a specific study entity. |
| none | Scrapes Strategy Tester metrics: net profit, Sharpe ratio, max drawdown, win rate, profit factor. |
|
| Retrieves trade list from Strategy Tester (entry/exit times, prices, P&L, contracts). |
| none | Extracts equity curve points from Strategy Tester. |
|
| Fetches instantaneous quote (last price, day open/high/low/close, change %, volume). |
| none | Extracts Depth of Market (DOM) / order book bids and asks (requires DOM panel open). |
|
| Reads horizontal price levels drawn programmatically by Pine Script indicators ( |
|
| Reads text labels drawn by Pine Script indicators ( |
|
| Extracts cell contents and tabular matrices drawn by Pine Script indicators ( |
|
| Reads bounding boxes and price zones drawn by Pine Script indicators ( |
| none | Reads real-time numeric output values for all visible indicators from the chart Data Window. |
Pine Script Development & Compilation Tools
Tool Name | Key Parameters | Description |
| none | Reads source code currently open in TradingView's Pine Editor Monaco instance. |
|
| Injects Pine Script code directly into Monaco editor model. |
| none | Dispatches compilation ("Add to Chart" / "Save"). |
|
| Atomic developer loop: injects code, triggers compilation, and polls Monaco markers for syntax errors. |
| none | Retrieves compiler error messages and line-number markers from Monaco editor. |
| none | Reads log output from Pine Script console / runtime log window. |
| none | Triggers Ctrl+S shortcut inside Pine Editor. |
|
| Creates a clean new Pine Script draft from template. |
|
| Opens a saved Pine script by name from user library. |
| none | Lists all user scripts stored in TradingView account library. |
|
| Offline static analysis: detects array out-of-bounds, lookahead bias, uninitialized variables, and version deprecations. |
|
| Server-side headless compilation check via TradingView cloud compiler API without touching the UI. |
Drawing & Visual Annotation Tools
Tool Name | Key Parameters | Description |
|
| Creates drawing primitives on chart: |
| none | Lists all user drawings currently active on chart with IDs and coordinates. |
|
| Reads styling, color, line width, and coordinates of an existing drawing. |
|
| Deletes a specific drawing by ID. |
| none | Clears all user drawings from chart. |
UI Automation & Event Simulation Tools
Tool Name | Key Parameters | Description |
|
| Clicks a TradingView UI element matching selector strategy (aria-label, data-name, text, class-contains). |
|
| Opens, closes, or toggles bottom dock panels (pine-editor, strategy-tester, watchlist, alerts, trading). |
| none | Toggles chart full-screen view. |
| none | Lists saved chart layouts in user profile with layout names and IDs. |
|
| Switches active workspace to another saved layout by name or ID. |
|
| Dispatches native keyboard event (e.g., shortcuts like Enter, Escape, Ctrl+Z). |
|
| Types text characters directly via CDP Input domain into currently focused element. |
|
| Dispatches mouse move event to hover over element and trigger tooltips. |
|
| Dispatches mouse wheel scroll events across chart canvas or page. |
|
| Clicks exact pixel coordinates on window viewport. |
|
| Locates UI element and returns bounding box coordinates. |
|
| Evaluates arbitrary JavaScript expression in page context for low-level automation. |
Multi-Pane & Tab Orchestration Tools
Tool Name | Key Parameters | Description |
| none | Lists split-view chart panes in multi-chart layouts with symbols and active state. |
|
| Configures multi-pane grid layout. |
|
| Switches active focus to a specific chart pane by index (0-based). |
|
| Sets symbol on a specific pane without changing focus. |
| none | Lists all open TradingView Desktop window tabs. |
| none | Opens a new desktop tab. |
| none | Closes the currently active desktop tab. |
|
| Switches active window focus to target tab by index. |
Alerts & Watchlist Management Tools
Tool Name | Key Parameters | Description |
|
| Opens TradingView alert dialog and creates price alert. |
| none | Scrapes active alert triggers and configurations from Alert panel. |
|
| Deletes alerts via context menu. |
| none | Scrapes all symbols and quote changes from active watchlist. |
|
| Adds a symbol to current watchlist. |
Bar Replay & Simulation Engine Tools
Tool Name | Key Parameters | Description |
|
| Enters Bar Replay mode at a historical start timestamp. |
| none | Advances replay forward by exactly one bar. |
|
| Toggles automatic bar playback with speed configuration. |
|
| Executes simulated market order in replay session. |
| none | Returns current bar timestamp and position in replay. |
| none | Exits replay mode and restores real-time feed. |
Diagnostics, Health & Session Persistence Tools
Tool Name | Key Parameters | Description |
| none | Verifies CDP connection liveness, page responsiveness, and port binding. |
| none | Scans local machine for open Chrome DevTools debugging targets. |
| none | Detects visible dialogs, active bottom panels, and error modals. |
|
| Automatically locates and starts TradingView Desktop with |
|
| Executes an analytical action sequentially across multiple symbols/resolutions. |
|
| Captures lossless screenshot to disk and returns local file path (not base64, preserving tokens). |
|
| Programmatically overrides settings (length, smoothing) of an indicator. |
|
| Toggles visibility of an indicator on canvas. |
|
| Generates a multi-asset market opening briefing. |
|
| Serializes current chart view, indicators, and symbols to local session file. |
|
| Restores a saved workspace state. |
🚀 Installation & Quickstart
1. Prerequisites
Node.js: v18.0.0 or higher
TradingView Desktop: Installed on Windows, macOS, or Linux
2. Install Dependencies
git clone https://github.com/MohamedAmineBenGhouizia/trading-view-mcp.git
cd trading-view-mcp
npm install3. Build Executable Shim
npm run buildThis generates build/index.js with proper executable permissions (0o755).
4. Launch TradingView Desktop with Remote Debugging
TradingView Desktop must run with the Chrome DevTools Protocol port enabled (9222).
Windows
# Default installation path
& "$env:LOCALAPPDATA\Programs\TradingView\TradingView.exe" --remote-debugging-port=9222
# Or if installed in custom directory:
& "C:\Users\<YourUser>\Downloads\TradingView\TradingView.exe" --remote-debugging-port=9222macOS
/Applications/TradingView.app/Contents/MacOS/TradingView --remote-debugging-port=9222Linux
tradingview --remote-debugging-port=9222Automated Startup: Alternatively, call the
tv_launchtool or runnode bin/tv.js launch, which searches standard process tables and file paths to start TradingView automatically.
🚀 Antigravity Integration
TradingView MCP integrates seamlessly into Google Antigravity and Gemini Code Assist as a native Model Context Protocol provider.
1. Configuration Path
Antigravity discovers MCP servers from either the user global configuration or project workspace configuration:
Global Config:
~/.gemini/config/mcp_config.json(or%USERPROFILE%\.gemini\config\mcp_config.jsonon Windows)Symbolic Link:
~/.gemini/antigravity/mcp_config.jsonIDE Config:
~/.gemini/antigravity-ide/mcp_config.json
2. Canonical Server Definition
Ensure your mcp_config.json registers tradingview-mcp-jackson pointing to the canonical src/server.js entrypoint:
{
"mcpServers": {
"tradingview-mcp-jackson": {
"command": "node",
"args": [
"/absolute/path/to/trading-view-mcp/src/server.js"
],
"env": {
"DEBUG_TV_MCP": "false"
}
}
}
}(On Windows, use forward slashes or escaped backslashes, e.g. C:/Users/<Username>/Downloads/development/tradingview-mcp-jackson/src/server.js).
3. Prerequisites & CDP Requirements
Runtime: Node.js
>= 18.0.0available on system PATH.Port Exposure: TradingView Desktop must be launched with
--remote-debugging-port=9222.Chart Tab: Ensure at least one chart tab is open on
tradingview.com/chart/within the desktop app.
4. How to Verify Connection in Antigravity
When Antigravity starts or refreshes its tool environment:
It reads
mcp_config.jsonand startsnode src/server.js.The server outputs its initial warning banners to
stderr, keepingstdoutcompletely clean for standard JSON-RPC 2.0 messages.Antigravity performs the protocol handshake and automatically lists and registers lazy tool schemas in
~/.gemini/antigravity/mcp/tradingview-mcp-jackson/*.json.
To smoke-test the live integration directly within Antigravity or a terminal:
node scripts/smoke_test.jsExpected output:
✓ Initialize succeeded. Server: tradingview v2.1.0
✓ tools/list succeeded. Discovered 89 registered MCP tools.
✓ Verified presence of all mandatory tools in tool catalog.
✓ pine_analyze executed cleanly: success=true, issues=0
✓ SMOKE TEST COMPLETE: All MCP handshake, tool discovery, and tool call verifications passed.5. Troubleshooting Antigravity Connections
Issue | Underlying Cause | Resolution |
| Tool schema missing in | Run |
| TradingView Desktop not started with remote debugging | Launch with |
| Chart was navigating while an agent tool executed | Safe retryable condition; retry the tool call after 100ms. |
| Node.js syntax error or bad file path in config | Run |
🔌 MCP Client Configurations
Canonical Runtime Entrypoint
The canonical runtime entrypoint for all clients is src/server.js.
(Note: build/index.js is also maintained as an executable forwarder for backwards compatibility).
Claude Desktop
Add to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tradingview": {
"command": "node",
"args": [
"/path/to/trading-view-mcp/src/server.js"
]
}
}
}Cursor IDE
Add to Cursor Settings ➔ Features ➔ MCP Servers ➔ Add New MCP Server:
Name:
tradingviewType:
commandCommand:
node /path/to/trading-view-mcp/src/server.js
VS Code / Cline / Roo Code
In .vscode/cline_mcp_settings.json:
{
"mcpServers": {
"tradingview": {
"command": "node",
"args": ["/path/to/trading-view-mcp/src/server.js"]
}
}
}💻 CLI Reference
The repository provides a standalone CLI binary (bin/tv.js) for scripting, CI pipelines, and manual testing.
# Print general help and available commands
node bin/tv.js --help
# Perform offline static analysis of a Pine Script file
node bin/tv.js pine analyze --file ./strategies/momentum.pine
# Headless compilation check via TradingView cloud compiler
node bin/tv.js pine check --file ./strategies/momentum.pine
# Fetch real-time OHLCV data summary
node bin/tv.js ohlcv --count 50 --summary
# Fetch real-time quote for a symbol
node bin/tv.js quote BTCUSD
# Launch TradingView Desktop with CDP enabled
node bin/tv.js launch --port 9222🧪 Verification & Test Architecture
The repository enforces a non-skipping, deterministic test pyramid with 100% automated verification.
┌────────────────────────┐
│ E2E Tests (79) │ Full Live TradingView Desktop Test
│ (tests/e2e.test.js) │ CDP Automation, UI, Monaco, Replay
└───────────┬────────────┘
│
┌───────────┴────────────┐
│ Integration Tests (3) │ Market Context Orchestration,
│(tests/integration.js) │ MTF Synthesis, Error Contracts
└───────────┬────────────┘
│
┌────────────────────┴────────────────────┐
│ Unit Test Suites (79) │
├─────────────────────────────────────────┤
│ • Technical Indicators & Math (11 tests)│
│ • Concurrency & Mutex Queue (6 tests) │
│ • Chaos & Cross-Contamination (5 tests) │
│ • Pine Static Analysis (13 tests) │
│ • Headless Cloud Compiler (3 tests) │
│ • Market Structure & Regimes (7 tests) │
│ • State Manager & Generational Cache (7)│
│ • Security JS Serialization (2 tests) │
│ • Error Contract Standards (5 tests) │
│ • Zones, Profiles & Divergences (3) │
│ • CLI Help & Flag Routing (13 tests) │
└─────────────────────────────────────────┘Available Test Scripts
Script | Command | Purpose |
|
| Syntactic validation of all 87 source and test files using |
|
| Deterministically generates |
|
| Runs all 12 isolated unit test suites (no external dependencies). |
|
| Validates multi-step market intelligence pipelines and error envelopes. |
|
| Verifies command routing and static analyzer CLI flags. |
|
| Executes all 82 unit, integration, and chaos test suites in sequence. |
|
| Runs all 79 live E2E tests against TradingView Desktop on port 9222. |
|
| One-shot CI/CD gatekeeper: runs |
🧠 Agent Workflow Best Practices
When integrating this MCP server into autonomous LLM agents, adhere to the following workflow patterns:
Pattern 1: Initial Chart Orientation
1. Call `market_get_context(expectedSymbol="BTCUSD", expectedTf="60")`
└── Receives trend, regime, RSI, MACD, structure (BOS/CHoCH), and S/R zones.
2. If state is STALE_CHART_STATE:
└── Retry after 100ms (chart transition was in progress).
3. Formulate analysis or trading plan based on confirmed closed bars.Pattern 2: Multi-Timeframe Consensus
1. Call `market_compare_timeframes(timeframes=["D", "240", "60", "15"])`
└── Evaluates higher-timeframe trend vs lower-timeframe entry trigger.
2. Inspect `alignment`: check whether momentum and structure agree.Pattern 3: Pine Script Iterative Development Loop
1. Call `pine_get_source` to read existing script.
2. Formulate improvements or fixes.
3. Call `pine_smart_compile(source=code)`
└── Injects code into Monaco editor and checks for compiler errors.
4. If errors returned:
└── Inspect line numbers and error strings, repair code, and re-compile.
5. If success:
└── Call `data_get_strategy_results` to evaluate backtest P&L and Sharpe ratio.Pattern 4: Low-Token Monitoring
1. Call `market_get_recent_changes(sinceTimestamp=lastPollTime)`
└── Emits only new swing points, confirmed BOS events, or volume anomalies.
└── Consumes minimal context window tokens.❓ Troubleshooting & FAQ
Q: Error: "Could not connect to TradingView via CDP (port 9222)"
Cause: TradingView Desktop is either not running or was launched without the
--remote-debugging-port=9222flag.Fix: Run
tv_launchvia MCP, or terminate TradingView and start it from terminal with--remote-debugging-port=9222. Ensure no conflicting browser is using port 9222.
Q: Error: "[Queue_BACKPRESSURE] Task queue backlog exceeded max depth"
Cause: The AI agent issued more than 100 concurrent asynchronous tool calls without awaiting responses.
Fix: Ensure your agent uses sequential or bounded parallel tool calling. The AsyncQueue prevents memory leaks by shedding excess tasks.
Q: Error: "OHLCV data symbol mismatch: expected AAPL, got BTCUSD"
Cause:
data_get_ohlcvwas invoked withexpectedSymbol="AAPL", but the chart was still rendering"BTCUSD".Fix: The tool's anti-cross-contamination guard worked as intended. The agent should call
chart_set_symbol("AAPL")and await completion before requesting bars.
Q: How do I read lines and levels drawn by my custom indicator?
Fix: Use
data_get_pine_lineswithstudy_filter="<IndicatorName>". The tool inspects TradingView's internal_graphicsprimitives and returns clean, deduplicated price levels.
📝 License
This project is licensed under the MIT License. See LICENSE for details. Based on architectural foundations by [@tradesdontlie] and [LewisWJackson], re-engineered for high-performance agentic autonomy.
Available Tools
90 toolsalert_createA
Open the TradingView alert configuration dialog and create a server-side price alert. WHEN TO USE: Call when setting conditional triggers on price levels (crossing, greater_than, less_than). SIDE EFFECTS: STATE_MUTATING (Creates an active alert in user account). LIMITATIONS: Requires market symbol to be active.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Price level for the alert | |
| message | No | Alert message | |
| condition | Yes | Alert condition (e.g., "crossing", "greater_than", "less_than") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the mutation profile ('STATE_MUTATING (Creates an active alert in user account)') plus a constraint ('Requires market symbol to be active'). It omits permission/auth requirements and whether an existing alert is replaced or duplicated, but the essential side-effect is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then separates WHEN TO USE, SIDE EFFECTS, and LIMITATIONS into labeled clauses – easy to scan. Slightly redundant between 'open the dialog' and 'create a server-side alert', keeping it from a 5.
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 mutation tool with no annotations and no output schema, the description supplies purpose, trigger conditions, side effects, and a precondition. It could say more about permissions or the returned alert handle, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents price, message, and condition. The description's parenthetical condition list mirrors the schema's own enum examples, adding little new meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('create a server-side price alert') and even the mechanism (TradingView alert configuration dialog). An agent can distinguish it from siblings alert_list and alert_delete 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?
The 'WHEN TO USE' clause explicitly scopes the tool to conditional price triggers and names the relevant conditions (crossing, greater_than, less_than). It does not name alternatives (e.g., alert_list/alert_delete) or state when-not-to-use, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_deleteA
Delete active alerts from TradingView alerts list. WHEN TO USE: Call when removing triggered, obsolete, or batch alerts. SIDE EFFECTS: STATE_MUTATING (Deletes alerts from user account). LIMITATIONS: Pass delete_all: true to clear all alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| delete_all | No | Delete all alerts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose that this is STATE_MUTATING and deletes from the user account. It also documents the delete_all limitation. It stops short of stating permanence, required scopes, or failure behavior, so it is good 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?
Three short labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) front-load the essential information with no wasted wording. The structure makes it easy for an agent to scan the key constraints.
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 delete tool with no output schema and no annotations, the description covers purpose, usage, side effects, and the delete_all option. It omits return/error behavior, but the core decision and invocation inputs are well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented in the schema. The description's 'Pass delete_all: true to clear all alerts' largely repeats that, adding only minor usage framing, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (active alerts from TradingView alerts list), and the action is clearly distinct from sibling tools alert_create and alert_list. An agent can tell this removes alerts rather than displaying or creating them.
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 WHEN TO USE section gives clear triggering conditions: removing triggered, obsolete, or batch alerts. It does not explicitly name alternatives or when not to use it, but the context is sufficiently clear for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_listA
List all active and triggered alerts from the TradingView alerts panel. WHEN TO USE: Call to inspect currently active alert triggers or verify created alerts. SIDE EFFECTS: None (Read-only). LIMITATIONS: Reads alerts visible in alerts dock.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden and does a solid job by declaring 'SIDE EFFECTS: None (Read-only)' and a scope limitation ('Reads alerts visible in alerts dock'). It could say more about the shape of returned alerts, but the safety profile is disclosed.
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 labeled sections with zero filler; the core purpose is front-loaded ahead of the WHEN TO USE, SIDE EFFECTS and LIMITATIONS labels. 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 zero-parameter read-only list tool with no output schema, the description covers purpose, usage, side effects and visibility limits adequately. It lacks detail on the returned alert fields, which is a minor gap given no output schema exists.
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 takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond what the empty schema already implies.
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 (List) and resource (alerts), and adds scope ('active and triggered alerts from the TradingView alerts panel'). It is clearly distinguishable from alert_create and alert_delete by its read/list nature, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' clause gives clear context: inspect active triggers or verify created alerts. It stops short of naming alternatives or when-not conditions (e.g., use alert_create to add one), so it is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_runA
Execute a sequential analytical action across an array of symbols and timeframes (actions: "screenshot", "get_ohlcv", "get_strategy_results"). WHEN TO USE: Call when running automated screening, batch chart captures, or cross-asset data collection. SIDE EFFECTS: STATE_MUTATING (Sequentially navigates chart symbols/timeframes; action may write screenshot files). LIMITATIONS: Runs sequentially with configurable inter-iteration delay.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to run: screenshot, get_ohlcv, get_strategy_results | |
| symbols | Yes | Array of symbols to iterate (e.g., ["BTCUSD", "ETHUSD", "AAPL"]) | |
| delay_ms | No | Delay between iterations in ms (default 2000) | |
| timeframes | No | Array of timeframes (e.g., ["D", "60", "15"]) | |
| ohlcv_count | No | Bar count for get_ohlcv action (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it flags STATE_MUTATING, discloses that it navigates chart symbols/timeframes and may write screenshot files, and notes sequential execution with a configurable delay. It omits permission/auth requirements and failure behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) and zero filler. The action enumerated up front immediately orients the agent.
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, state-mutating batch tool with no output schema, it covers side effects and sequencing constraints, which is the critical missing piece. It does not describe what the batch returns (e.g., per-symbol results or errors), but the essential invocation context is 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 100%, so the schema already documents all five parameters with examples and defaults. The description only restates the action list and does not add syntax or format meaning beyond the schema, giving the baseline 3.
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 (Execute) and resource (sequential analytical action across arrays of symbols/timeframes) and enumerates the three concrete actions. It clearly distinguishes itself from single-target siblings like data_get_ohlcv or capture_screenshot by its cross-asset, multi-timeframe batching scope.
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 explicit 'WHEN TO USE' clause names three concrete scenarios (automated screening, batch chart captures, cross-asset data collection). It does not, however, name when to prefer single-target siblings instead, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_screenshotA
Capture lossless PNG screenshot of TradingView window and save locally to disk (regions: "full", "chart", "strategy_tester"). Returns local filesystem path to prevent token exhaustion from raw base64. WHEN TO USE: Call when visual verification of chart patterns, drawings, or UI layout is requested by the user. SIDE EFFECTS: EXTERNAL_SIDE_EFFECT (Writes PNG image file to local screenshots directory). LIMITATIONS: Requires TradingView window to be rendered on screen.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Capture method: cdp (Page.captureScreenshot) or api (chartWidgetCollection.takeScreenshot) (default cdp) | |
| region | No | Region to capture: full, chart, strategy_tester (default full) | |
| filename | No | Custom filename (without extension) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well. It discloses the external side effect of writing a PNG file to disk, the limitation that the TradingView window must be rendered on screen, and the rationale for returning a filesystem path instead of base64. This gives an agent the safety and operational context it needs.
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 definition is front-loaded with the core action and then uses clear labeled sections for WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence contributes useful information without padding.
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 three-parameter tool with no output schema and no annotations, the description covers purpose, usage context, side effects, limitations, and the return value sufficiently. An agent has enough information to call it correctly and understand the main operational risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents region, method, and filename. The description repeats the region enum values and otherwise adds no syntax, format, or default information beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: capture a lossless PNG screenshot of the TradingView window and save it locally. It also lists valid regions and the return type. However, it does not distinguish itself from the sibling chart_get_snapshot, which may also produce chart imagery, so sibling differentiation is missing.
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 WHEN TO USE section gives clear context: call when the user requests visual verification of chart patterns, drawings, or UI layout. There is no explicit when-not-to-use guidance or named alternative such as chart_get_snapshot, so it falls just short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_get_multi_timeframeA
Perform atomic sequential multi-timeframe scan across multiple resolutions (e.g., D, 240, 60, 15, 5) without race conditions. WHEN TO USE: Call when needing raw OHLCV bars across several timeframes in a single coordinated operation. SIDE EFFECTS: None (Read-only - safely preserves original chart state). LIMITATIONS: Changes resolution sequentially, restoring original state upon completion.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of bars per timeframe (default 100) | |
| symbol | No | Symbol to scan (defaults to current chart symbol) | |
| timeframes | No | Array of timeframes to scan (default: ["D", "240", "60", "15", "5"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only behavior ('safely preserves original chart state'), atomicity ('without race conditions'), and the state-restoration limitation. It omits permission requirements and any latency/rate considerations, but the safety profile is genuinely better disclosed than most.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then segmented into WHEN TO USE / SIDE EFFECTS / LIMITATIONS labels that make scanning fast. Every sentence earns its place; only slight redundancy between the opening sentence and the LIMITATIONS line.
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, zero-required-param tool with no output schema, the description covers purpose, trigger, safety, and the state-mutation caveat. An agent has enough to call it correctly; only the return shape and behavior on invalid timeframes are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (count, symbol, timeframes) are already documented with defaults in the schema. The description only echoes the timeframe list and implied bar counts, adding no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('atomic sequential multi-timeframe scan across multiple resolutions') plus concrete resolution examples. It reads clearly as the multi-timeframe OHLCV fetcher, which differentiates it from single-timeframe siblings like data_get_ohlcv, though it never names that alternative explicitly.
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?
An explicit 'WHEN TO USE' clause gives a clear triggering condition: needing raw OHLCV bars across several timeframes in one coordinated operation. It lacks a when-not clause or a named alternative, so the agent must infer when a single-timeframe fetch is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_get_snapshotA
Get authoritative atomic snapshot of chart state (symbol, resolution, lastBarTime, barCount, generation ID). WHEN TO USE: Call to verify state freshness or obtain atomic synchronization metadata without pulling full bar series. SIDE EFFECTS: None (Read-only). LIMITATIONS: Lightweight snapshot only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full behavioral burden and does so well: 'SIDE EFFECTS: None (Read-only)' declares the safety profile and 'LIMITATIONS: Lightweight snapshot only' scopes what it will not do. It omits any note on response timing, staleness guarantees, or error behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly three front-loaded clauses with labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence carries distinct information and the core action plus returned fields lead the 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?
There is no output schema and no annotations, and the description compensates by listing exactly which fields the snapshot contains plus its read-only, lightweight nature. For a zero-parameter read tool, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline of 4 applies; there are no argument semantics for the description to clarify or compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get authoritative atomic snapshot of chart state') and enumerates the returned fields (symbol, resolution, lastBarTime, barCount, generation ID), making the tool's scope concrete. However, it never names sibling chart_get_state or chart_get_state_diagnostics, so an agent cannot be fully certain which state-reading tool to pick without opening schemas.
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 explicit 'WHEN TO USE' clause gives clear context: verify state freshness or obtain atomic synchronization metadata without pulling full bar series. The 'Lightweight snapshot only' limitation implies when not to use it, but no alternative sibling is named as an explicit substitute, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_get_stateA
Get current chart state including active symbol, timeframe resolution, chart rendering type, and list of attached indicator study entities with their IDs. WHEN TO USE: Call to inspect the current chart configuration or retrieve indicator entity IDs prior to calling chart_manage_indicator or indicator_set_inputs. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires an active chart window.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the safety burden and does so well: it declares SIDE EFFECTS: None (Read-only) and a LIMITATIONS constraint (requires an active chart window), which is valuable behavioral context. It stops short of describing return shape or failure behavior, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence payload summary followed by clearly labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS blocks. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description fully covers purpose, invocation timing, safety profile, and the precondition (active chart window). An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema cannot be a source of confusion and the baseline is 4. The description appropriately spends no space on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('current chart state') and enumerates the returned payload: active symbol, timeframe resolution, chart rendering type, and attached indicator study entities with IDs. This distinguishes it clearly from siblings like chart_get_visible_range or data_get_ohlcv.
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 WHEN TO USE block gives explicit context (inspecting chart configuration) and names the exact follow-up tools it feeds (chart_manage_indicator, indicator_set_inputs), which is precisely the prerequisite routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_get_state_diagnosticsA
Get authoritative diagnostic state of chart, generation ID, CDP connection status, and task queue depths. WHEN TO USE: Call whenever diagnosing connection liveness, queue backpressure, or verifying generation freshness. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose read-only behavior via 'NO SIDE EFFECTS' and describes what is inspected ('authoritative' liveness/queue/freshness data). It does not cover permissions, response shape, or any caveats about the diagnostic values.
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 tight sentences: capability, then a front-loaded WHEN TO USE trigger list, then a side-effects disclaimer. 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?
For a zero-parameter, read-only diagnostic tool with no output schema, the description is nearly self-sufficient: it names the returned fields and the safety profile. Only the exact return format and any error semantics are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema contributes nothing and there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.
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 ('Get') and resource ('diagnostic state of chart') and enumerates the contents: generation ID, CDP connection status, task queue depths. Clear enough to distinguish from the sibling chart_get_state, though it never explicitly contrasts the two.
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?
An explicit 'WHEN TO USE' block names three concrete triggers (diagnosing connection liveness, queue backpressure, verifying generation freshness). No 'when not' clause or named alternative, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_get_visible_rangeA
Get visible date range (unix timestamps in seconds) and bar index boundaries currently displayed on the viewport. WHEN TO USE: Call before capturing screenshots or inspecting what portion of the historical timeline is in user view. SIDE EFFECTS: None (Read-only). LIMITATIONS: Depends on active screen width and zoom level.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it declares 'SIDE EFFECTS: None (Read-only)' so the agent knows it is a safe read, and 'LIMITATIONS: Depends on active screen width and zoom level' warns that results vary with viewport state. It does not discuss failure behavior when no chart is loaded, but the safety and limitation disclosure is solid.
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 labeled sentences, front-loaded with the payload description, then routing guidance, then caveats. Nothing is wasted and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey what comes back, and it does: a date range in unix seconds plus bar index boundaries. Combined with the read-only and viewport-dependency notes, an agent has everything needed to call and interpret this 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 takes zero parameters, which is the baseline-4 case. The description correctly implies no input is needed and instead documents the output semantics (unix seconds, bar index boundaries).
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 precise verb and resource ('Get visible date range ... and bar index boundaries currently displayed on the viewport') and even specifies the units of the returned timestamps. An agent can distinguish it from the sibling chart_set_visible_range, which mutates the range rather than reading 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 WHEN TO USE clause gives concrete triggers ('before capturing screenshots or inspecting what portion of the historical timeline is in user view'). It stops short of naming the complementary setter tool or stating when not to call it, so it is clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_manage_indicatorA
Add or remove a built-in or public indicator/study on the active chart. WHEN TO USE: Call to attach technical studies (e.g., "Relative Strength Index", "Bollinger Bands") or remove studies using their entity_id from chart_get_state. SIDE EFFECTS: STATE_MUTATING (Modifies chart study collection). LIMITATIONS: Must use full official TradingView indicator names (e.g., "Relative Strength Index", not "RSI").
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: add or remove | |
| inputs | No | JSON string of input overrides for the indicator (e.g., '{"length": 20}') | |
| entity_id | No | Entity ID to remove (from chart_get_state). Required for remove. | |
| indicator | Yes | Full indicator name: "Relative Strength Index", "MACD", "Volume", "Moving Average", "Bollinger Bands", "Moving Average Exponential". Short names like RSI/EMA do NOT work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key traits: 'STATE_MUTATING (Modifies chart study collection)' and the hard limitation that full official TradingView names are required ('Relative Strength Index', not 'RSI'). It does not discuss reversibility, persistence, or failure modes when a name is wrong, so it is 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?
Front-loaded with the action, then cleanly partitioned into WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description supplies the side-effect warning, the naming constraint, and the entity_id source. Only minor gaps remain, such as what happens on an invalid name or whether removal needs confirmation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema by stating that entity_id must come from chart_get_state and by reinforcing the exact-name requirement for 'indicator'. The 'inputs' override parameter is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (add/remove) plus the resource (built-in or public indicator/study) and the scope (active chart). Reads clearly as a mutation tool for the study collection, distinguishing it from siblings like indicator_set_inputs or indicator_toggle_visibility.
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?
An explicit 'WHEN TO USE' section names the trigger (attach technical studies, remove via entity_id) and points to chart_get_state as the source of entity_id. It does not explicitly contrast against sibling tools such as indicator_set_inputs, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_scroll_to_dateA
Jump the chart viewport to center on a specific historical calendar date or timestamp. WHEN TO USE: Call to navigate directly to a past macroeconomic release, news event, or breakout bar. SIDE EFFECTS: STATE_MUTATING (Scrolls chart canvas). LIMITATIONS: Historical data for the specified date must be available.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ISO date string (e.g., "2024-01-15") or unix timestamp as a string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the key trait: SIDE EFFECTS: STATE_MUTATING (scrolls chart canvas), plus a LIMITATIONS note that historical data must exist. It stops short of permissions/auth context, but the mutation and precondition disclosure is meaningful for a no-annotation 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?
Front-loads the core action, then uses compact labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS). No sentence is redundant and the structure scans quickly.
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 navigation tool with no output schema, the description covers purpose, trigger scenarios, the state-mutating side effect, and a data-availability precondition. That is nearly everything an agent needs, with only the sibling-alternative boundary left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the sole 'date' parameter is already fully documented in the schema, including format (ISO string or unix timestamp as string). The description adds no format or syntax detail beyond it, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Jump the chart viewport to center on a specific historical calendar date or timestamp.' The centering-on-a-historical-date behavior distinguishes it from sibling tools like chart_set_visible_range and chart_get_visible_range.
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 WHEN TO USE section gives concrete triggering scenarios (navigating to a past release, news event, or breakout bar), which is strong positive guidance. However, it does not name alternative tools (e.g., chart_set_visible_range) for viewport navigation, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_set_symbolA
Change the active chart symbol and wait for market data feed confirmation. WHEN TO USE: Call to navigate the chart to a new financial instrument before performing analysis or running strategies. SIDE EFFECTS: STATE_MUTATING (Alters active chart ticker, increments state generation, invalidates generational cache). LIMITATIONS: Requires valid TradingView ticker format (e.g., "BTCUSD", "AAPL", "ES1!", "NYMEX:CL1!").
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol to set (e.g., BTCUSD, AAPL, ES1!, NYMEX:CL1!) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well. It explicitly discloses STATE_MUTATING behavior, ticker alteration, state generation increment, generational cache invalidation, and that the tool waits for market data feed confirmation.
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 action, then uses clear labeled sections for WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence earns its place and the structure is easy for an agent to parse.
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, no-annotation mutation tool with no output schema, the description is complete. It tells the agent what the tool does, when to call it, what side effects occur, and what format the symbol must satisfy.
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 already 100%, so the baseline is 3. The description adds value by stating the TradingView ticker format requirement and giving examples beyond the schema's own example list, though it largely mirrors the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Change the active chart symbol and wait for market data feed confirmation.' It clearly scopes the action to the active chart symbol, which distinguishes it from sibling tools like chart_set_timeframe, chart_set_type, and pane_set_symbol.
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 WHEN TO USE section gives clear context: 'Call to navigate the chart to a new financial instrument before performing analysis or running strategies.' However, it does not name alternatives such as symbol_search or pane_set_symbol, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_set_timeframeA
Change the chart timeframe/resolution and reactively wait for candle feed resolution. WHEN TO USE: Call when switching resolutions for multi-timeframe analysis (e.g., switching from 1D to 15m). SIDE EFFECTS: STATE_MUTATING (Alters chart resolution, increments state generation, invalidates generational cache). LIMITATIONS: Supported formats include standard minutes ("1", "5", "15", "60", "240") and calendar periods ("D", "W", "M").
| Name | Required | Description | Default |
|---|---|---|---|
| timeframe | Yes | Timeframe (e.g., 1, 5, 15, 60, D, W, M) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it flags STATE_MUTATING, cache invalidation, state-generation increment, and that the call blocks until candle feed resolution. It omits failure modes (unsupported timeframe, no active chart) and any permission/precondition requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled sections for usage, side effects, and limits. Slightly dense in the parenthetical side-effect block, but no sentence is 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?
One required parameter, no output schema, and the description covers usage, mutation semantics, blocking behavior, and accepted formats. Remaining gaps (what happens on an invalid timeframe, whether a chart must already exist) are modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), and the LIMITATIONS line adds value the schema lacks — the schema declares no enums, so the explicit list of standard minutes ("1","5","15","60","240") and calendar periods ("D","W","M") is genuinely additive.
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 first sentence gives a specific verb (change) plus resource (chart timeframe/resolution) and adds the blocking behavior, which distinguishes it from sibling chart_get_multi_timeframe (read-only multi-series) and chart_set_symbol/chart_set_type.
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 WHEN TO USE line gives a concrete trigger (switching resolutions for multi-timeframe analysis) with an example (1D to 15m). It does not, however, name an alternative or exclusion — e.g. it never says to use chart_get_multi_timeframe instead when you only want to read several resolutions without mutating state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_set_typeA
Change chart candle rendering type (Bars, Candles, Line, Area, Renko, HeikinAshi, etc.). WHEN TO USE: Call when specific analysis requires alternate bar representations (e.g., Heikin Ashi for trend smoothing). SIDE EFFECTS: STATE_MUTATING (Modifies chart canvas display mode). LIMITATIONS: Accepts chart type name or numeric index.
| Name | Required | Description | Default |
|---|---|---|---|
| chart_type | Yes | Chart type: Bars(0), Candles(1), Line(2), Area(3), Renko(4), Kagi(5), PointAndFigure(6), LineBreak(7), HeikinAshi(8), HollowCandles(9) — pass name or number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses a key behavioral trait: 'SIDE EFFECTS: STATE_MUTATING (Modifies chart canvas display mode).' It also states a limitation that it accepts chart type name or numeric index, though it does not discuss persistence or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and structurally segmented with clear labels for use, side effects, and limitations. Every sentence earns its place 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 single-parameter mutation tool with no output schema, the description covers purpose, usage context, side effect, and accepted input form. It is complete enough to call correctly, though it does not specify the active chart context or failure conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already maps every chart type to its numeric index. The description adds only that a name or numeric index is accepted, which is already implied by the schema, so it meets the baseline of 3.
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: 'Change chart candle rendering type.' It gives examples (Bars, Candles, Line, Area, Renko, HeikinAshi) and distinguishes this from sibling chart-setting tools like chart_set_symbol and chart_set_timeframe.
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 provides a WHEN TO USE section: 'Call when specific analysis requires alternate bar representations (e.g., Heikin Ashi for trend smoothing).' This gives clear context, though it does not name alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chart_set_visible_rangeA
Zoom and pan the chart canvas to display a specific date range between two unix timestamps. WHEN TO USE: Call when focusing chart context on a specific historical event or earnings release. SIDE EFFECTS: STATE_MUTATING (Alters chart viewport zoom/pan). LIMITATIONS: Timestamps must be unix seconds within historical data range.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End of range (unix timestamp in seconds) | |
| from | Yes | Start of range (unix timestamp in seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses STATE_MUTATING (viewport zoom/pan changes) and the constraint that timestamps must be unix seconds within the historical data range. It omits whether the change is reversible/undoable and how out-of-range input is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections that are each a single sentence with no filler. The label scaffolding is mildly formulaic but costs little and aids scanning.
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 two-param mutation tool with no annotations and no output schema, the description covers the essential gaps: effect, trigger, and input constraints. Remaining omissions (failure behavior for out-of-range timestamps, whether the view can be restored) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both params are documented there, so baseline is 3. The description adds genuine meaning beyond the schema by specifying the unit (unix seconds) and the validity constraint (within historical data range), which the schema text does not mention.
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 concrete verb+resource: 'Zoom and pan the chart canvas to display a specific date range.' The mutating counterpart to chart_get_visible_range and chart_scroll_to_date is clear from 'set' + 'zoom and pan', but the description never names those siblings to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Call when focusing chart context on a specific historical event or earnings release'), which is real when-to-use guidance. It does not name alternatives (chart_scroll_to_date, chart_get_visible_range) or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_equityA
Extract equity curve data points from Strategy Tester. WHEN TO USE: Call when analyzing equity drawdowns, run-ups, or plotting performance trajectory over backtest span. SIDE EFFECTS: None (Read-only). LIMITATIONS: Strategy Tester must be active on chart.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose that the operation is read-only with no side effects, plus a real precondition ('Strategy Tester must be active on chart'). It stops short of describing data volume, pagination, time granularity, or failure behavior when the tester is inactive.
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 labeled, front-loaded sentences covering action, trigger, side effects, and limitation with zero filler. An agent can parse the key facts in a single pass.
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, parameterless extractor with no output schema, the description covers purpose, trigger, safety, and preconditions adequately. It leaves the return shape (what a 'data point' contains, sampling cadence, size limits) unstated, which is the main residual 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 tool takes zero parameters, so there is nothing for the description to disambiguate; the documented precondition (active Strategy Tester) is the only input-like constraint and it is stated. Baseline 4 applies for a parameterless tool.
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 ('Extract') and a specific resource ('equity curve data points') plus the source system ('Strategy Tester'). This cleanly separates it from siblings like data_get_trades, data_get_strategy_results, and data_get_ohlcv, which return different artifacts.
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?
An explicit 'WHEN TO USE' block names concrete scenarios: analyzing drawdowns, run-ups, or plotting performance trajectory. It gives positive selection criteria but never states when not to use it or which sibling (e.g. data_get_strategy_results) to prefer instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_indicatorA
Get internal study parameters, input values, and configuration of a specific indicator entity by ID. WHEN TO USE: Call to inspect active parameters (e.g., RSI length or MA source) for an indicator found in chart_get_state. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires valid entity ID.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Study entity ID (from chart_get_state) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so reasonably: it declares 'SIDE EFFECTS: None (Read-only)' and a precondition ('Requires valid entity ID'). It omits what happens on an invalid or stale ID and does not characterize the returned payload, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short labeled segments, front-loaded with the core purpose before WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every clause carries information and nothing is redundant.
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 tool with no output schema, the description supplies purpose, trigger, side-effect profile, and precondition. It only lightly sketches the return content ('parameters, input values, configuration') and says nothing about the response shape or nesting, a minor gap given there is no output schema to fall back on.
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 a single parameter at 100% schema description coverage, the schema already documents entity_id as the study entity ID from chart_get_state. The description's 'by ID' adds no syntax, format, or sourcing detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('internal study parameters, input values, and configuration of a specific indicator entity by ID'), which is far beyond a tautology of the name. It implicitly separates configuration inspection from sibling tools like data_get_study_values (computed values) and indicator_set_inputs (mutation), though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' block gives a concrete trigger: inspecting active parameters such as RSI length or MA source for an indicator obtained from chart_get_state. It lacks explicit when-not-to-use guidance and does not route the agent to alternatives (e.g., indicator_set_inputs for changing values), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_ohlcvA
Get historical OHLCV bar data from active chart. Supports compact statistical summary mode (summary: true) for context efficiency, and closed-only filtering (closedOnly: true) to avoid unconfirmed candle hallucinations. WHEN TO USE: Call when computing quantitative models or inspecting raw price action. Use summary: true when only high/low/close bounds are needed to conserve token context. SIDE EFFECTS: None (Read-only). LIMITATIONS: Maximum 500 bars per request.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of bars to retrieve (max 500, default 100) | |
| summary | No | Return summary stats (high, low, open, close, avg volume, range) instead of all bars — much smaller output | |
| closedOnly | No | Exclude the active, currently-forming candle so only confirmed historical bars are returned | |
| expectedTf | No | Assert that the returned data matches this timeframe, throwing an error if chart has not switched | |
| expectedSymbol | No | Assert that the returned data matches this symbol, throwing an error if chart has not switched |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it declares SIDE EFFECTS: None (read-only) and LIMITATIONS: Maximum 500 bars per request, and explains the closedOnly option's intent (avoiding unconfirmed candle hallucinations). It omits auth/permission requirements and any error or latency behavior, keeping it just below full 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?
Front-loaded with the core purpose, then cleanly partitioned into WHEN TO USE, SIDE EFFECTS, and LIMITATIONS blocks. Every sentence earns its place and scanning for a specific fact is trivial.
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-parameter, no-annotation, no-output-schema tool, the description covers the essential behavior: read-only nature, the 500-bar cap, and the two behavioral flags. The assertion parameters (expectedTf/expectedSymbol) and the default count live only in the schema, which is acceptable since they are well-documented there, leaving only minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents count, summary, closedOnly, expectedTf, and expectedSymbol. The description restates the summary and closedOnly semantics (and adds a rationale for each) but supplies no syntax or format detail beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get historical OHLCV bar data from active chart") plus the scope (active chart), which comfortably distinguishes it from image-based siblings like chart_get_snapshot. However, it does not explicitly name or route against close neighbors such as chart_get_multi_timeframe or data_get_trades, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit WHEN TO USE clause (computing quantitative models or inspecting raw price action) and a conditional (use summary:true when only high/low/close bounds are needed to conserve context). It gives clear context but never states when NOT to use it or names an alternative tool, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_pine_boxesA
Read bounding boxes and zones drawn by Pine Script indicators (box.new) as deduplicated {high, low} price ranges. WHEN TO USE: Call when an indicator plots order blocks, fair value gaps, or consolidation boxes via box.new. SIDE EFFECTS: None (Read-only). LIMITATIONS: Only reads box primitives generated by active studies.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Return all boxes with IDs and coordinates (default false — returns unique price zones) | |
| study_filter | No | Substring to match study name. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and rises to it: it declares 'SIDE EFFECTS: None (Read-only)' and a capability LIMITATION ('Only reads box primitives generated by active studies'). It omits details like behavior when no boxes exist or deduplication mechanics, but the safety and scope profile is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then uses labeled clauses (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) for scannability. Every sentence earns its place with no 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?
With no output schema, the description usefully characterizes the return value as deduplicated {high, low} price ranges, and covers scope and safety for a 2-param read-only tool. Edge cases (empty results, inactive studies) are not addressed, but the definition is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema; the description's mention of 'deduplicated' ranges loosely maps to the verbose flag but adds no syntax or format guidance beyond it. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read bounding boxes and zones drawn by Pine Script indicators') and even characterizes the output shape ('deduplicated {high, low} price ranges'). This clearly differentiates it from siblings like data_get_pine_lines, data_get_pine_labels, and data_get_pine_tables, which target other primitives.
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 explicit 'WHEN TO USE' clause names concrete trigger scenarios (order blocks, fair value gaps, consolidation boxes via box.new), which is strong context. It does not name alternative sibling tools, but the conditions for use are clear enough that the agent can route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_pine_labelsA
Read text annotations and labels drawn by Pine Script indicators (label.new) paired with price coordinates. WHEN TO USE: Call when an indicator displays bias markers, order block tags, or targets via label.new. SIDE EFFECTS: None (Read-only). LIMITATIONS: Only reads labels currently existing in chart memory.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Return raw label data with IDs, colors, positions (default false — returns only text + price) | |
| max_labels | No | Max labels per study (default 50). Set higher if you need all. | |
| study_filter | No | Substring to match study name. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does reasonably well: it explicitly states 'SIDE EFFECTS: None (Read-only)' and a meaningful limitation that only labels currently in chart memory are readable. It does not describe return structure in detail, but the safety and scope profile is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence earns its place with zero 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?
No output schema exists, but the verbose parameter's description indicates the return shape (raw label data with IDs/colors/positions vs text+price only), so return expectations are covered indirectly. The definition is complete enough for an agent to invoke correctly, with only minor gaps in return-format detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents verbose, max_labels, and study_filter with defaults and semantics. The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (text annotations/labels drawn by Pine Script indicators via label.new) paired with price coordinates. This clearly distinguishes it from siblings like data_get_pine_lines, data_get_pine_tables, and data_get_pine_boxes.
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 WHEN TO USE clause gives concrete trigger conditions (indicator displays bias markers, order block tags, or targets via label.new). However, it does not name alternative tools or state when to prefer a different data_get_pine_* sibling over this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_pine_linesA
Read horizontal price levels drawn programmatically by Pine Script indicators (line.new). Returns deduplicated, sorted price levels per study. WHEN TO USE: Call when an indicator draws support/resistance or session levels via line.new. Use study_filter to target specific scripts. SIDE EFFECTS: None (Read-only). LIMITATIONS: Only reads lines drawn by active Pine studies.
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Return raw line data with IDs, coordinates, colors (default false — returns only unique price levels) | |
| study_filter | No | Substring to match study name (e.g., "Profiler", "NY Levels"). Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares 'SIDE EFFECTS: None (Read-only)' and a concrete limitation ('Only reads lines drawn by active Pine studies'). It also discloses post-processing behavior (deduplicated, sorted, per study). Minor gap: no statement on empty/missing-study behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then tightly organized WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape ('deduplicated, sorted price levels per study'). Combined with full schema coverage of both params and the read-only declaration, an agent has almost everything needed, though the verbose-mode return shape stays undocumented in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the schema; baseline 3 applies. The description reinforces study_filter's purpose ('target specific scripts') but adds no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read horizontal price levels drawn programmatically by Pine Script indicators') and pins down the exact mechanism (line.new). It is clearly distinguishable from the sibling draw-type readers data_get_pine_labels, data_get_pine_tables, and data_get_pine_boxes.
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 WHEN TO USE block gives a concrete trigger ('indicator draws support/resistance or session levels via line.new') and points at study_filter for targeting scripts. It stops short of naming explicit alternatives or exclusion conditions, so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_pine_tablesA
Read table matrices drawn by Pine Script indicators (table.new) as structured rows of text. WHEN TO USE: Call when an indicator outputs dashboard summaries, session statistics, or multi-timeframe matrices in a table. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires study drawing table.new to be attached.
| Name | Required | Description | Default |
|---|---|---|---|
| study_filter | No | Substring to match study name. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the safety profile (SIDE EFFECTS: None, read-only) and a real precondition (requires a study drawing table.new to be attached). It does not describe the return structure beyond 'rows of text', but the core behavioral facts are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by labelled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description partially compensates by stating the result is structured rows of text, while covering the precondition and read-only nature. It is complete enough to invoke correctly, though the exact shape of the returned rows remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single optional parameter (study_filter) fully documented as a substring match. The description adds no semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (table matrices drawn by Pine Script indicators via table.new) and returns them as structured rows of text. The explicit mention of table.new distinguishes it from the sibling drawing readers data_get_pine_lines, data_get_pine_labels, and data_get_pine_boxes.
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 WHEN TO USE clause gives concrete trigger scenarios (dashboard summaries, session statistics, multi-timeframe matrices). It does not explicitly name the sibling tools it is an alternative to, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_strategy_resultsA
Extract performance metrics from the TradingView Strategy Tester panel (Net Profit, Profit Factor, Win Rate, Max Drawdown, Total Trades, Sharpe Ratio). WHEN TO USE: Call after compiling a Pine Script strategy to evaluate quantitative backtest results. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires a strategy script to be actively running on the chart with Strategy Tester panel populated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so reasonably: it declares read-only status, 'no side effects', and states the precondition that a strategy must be running with the panel populated. It doesn't say what happens when the panel is empty (error vs empty result), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, labeled sentences (purpose, WHEN TO USE, SIDE EFFECTS/LIMITATIONS) with zero filler. The most decision-relevant information, what it extracts, 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 no-arg read-only extraction tool with no output schema, the description enumerates the returned metrics, which is exactly the return-value information an agent would otherwise lack. Prerequisites and safety posture are both covered.
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 takes zero parameters, so per the rubric the baseline is 4. No parameter meaning needs to be added, and the description correctly does not invent any.
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 (Extract) and resource (TradingView Strategy Tester panel performance metrics), and enumerates the exact metrics returned. This clearly distinguishes it from sibling readers like data_get_trades, data_get_equity, and data_get_indicator.
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 WHEN TO USE clause gives explicit timing ('after compiling a Pine Script strategy to evaluate quantitative backtest results') plus a prerequisite in LIMITATIONS. It does not name alternative tools for related backtest data (e.g. data_get_trades/data_get_equity), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_study_valuesA
Extract real-time numerical values of all visible indicators from the chart Data Window (RSI, MACD, EMAs, custom plot() outputs). WHEN TO USE: Call when reading current indicator values directly from TradingView without recomputing in Node.js. SIDE EFFECTS: None (Read-only). LIMITATIONS: Indicators must be visible on chart.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers key behavioral traits: 'SIDE EFFECTS: None (Read-only)' and 'LIMITATIONS: Indicators must be visible on chart.' It does not describe authentication, rate limits, or error behavior if indicators are hidden, but for a read-only extraction tool this is solid coverage.
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: purpose first, then labeled sections for when to use, side effects, and limitations. Every sentence earns its place with no redundant or filler 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?
For a simple zero-parameter, read-only extraction tool with no output schema, the description covers purpose, when to use, side effects, and a precondition. It stops short of describing the return structure (e.g., how indicator names map to values), which would be helpful given the lack of 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 tool has zero parameters, so parameter semantics baseline is 4. The description adds no parameter-specific information because there are no parameters to document.
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 ('Extract') and resource ('real-time numerical values of all visible indicators from the chart Data Window'), and lists examples (RSI, MACD, EMAs, custom plot() outputs). The phrase 'all visible indicators' implicitly distinguishes it from the singular sibling data_get_indicator, so an agent can tell them apart.
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?
An explicit 'WHEN TO USE' section tells the agent to call this when reading current indicator values directly from TradingView without recomputing in Node.js. However, it does not name an alternative tool or state when not to use it, so it falls short of the full when/when-not/alternatives standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_get_tradesA
Extract individual trade execution log from Strategy Tester (entry/exit times, prices, contracts, P&L). WHEN TO USE: Call when conducting granular trade-by-trade review or streak analysis of a backtested Pine strategy. SIDE EFFECTS: None (Read-only). LIMITATIONS: Strategy Tester bottom panel must have trade list populated.
| Name | Required | Description | Default |
|---|---|---|---|
| max_trades | No | Maximum trades to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a solid job: it declares the side effect profile (None, Read-only) and a real prerequisite (Strategy Tester bottom panel must be populated). It does not cover rate limits, pagination, or how max_trades truncation behaves, leaving a modest gap.
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?
Purpose is front-loaded, then WHEN TO USE, SIDE EFFECTS, and LIMITATIONS are cleanly labeled. Every line carries information and nothing is padded.
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 extraction tool with no annotations and no output schema, the description supplies purpose, usage trigger, safety profile, prerequisite, and returned fields. It falls just short of complete because truncation/pagination behavior of max_trades is unexplained.
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 is a single optional parameter with 100% schema coverage ('Maximum trades to return'), so the schema already documents it fully. The description adds no extra syntax or default behavior for max_trades, making the baseline 3 correct.
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 (Extract) and resource (individual trade execution log from Strategy Tester) and enumerates the returned fields, which implicitly separates it from aggregate siblings like data_get_strategy_results and data_get_equity. It never names an alternative explicitly, so sibling differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'WHEN TO USE: Call when conducting granular trade-by-trade review or streak analysis of a backtested Pine strategy' gives a concrete triggering condition with a clear scope (backtested Pine strategy). It stops short of naming alternatives or stating when NOT to use it, so it lands at clear-context but no-exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depth_getA
Extract order book / Depth of Market (DOM) bid/ask levels from the DOM panel. WHEN TO USE: Call when analyzing order book liquidity or bid-ask imbalance. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires DOM panel to be open in TradingView.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It correctly discloses side effects (none, read-only) and a prerequisite limitation (DOM panel must be open). It does not describe error behavior or return format, but for a simple read-only extraction tool this is a reasonable level of disclosure.
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 and well structured with WHEN TO USE, SIDE EFFECTS, and LIMITATIONS labels. It is concise and 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 parameterless, annotation-free read tool with no output schema, the description covers purpose, usage context, side effects, and a key limitation. It could optionally describe the return shape (e.g., bid/ask level structure), but it is largely complete for tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There are no parameter semantics to clarify, and the empty schema provides all necessary structure.
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: extract order book / DOM bid/ask levels from the DOM panel. This is clear and unambiguous, but it does not explicitly differentiate itself from sibling tools such as quote_get, data_get_trades, or market_get_smart_volume.
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 an explicit WHEN TO USE section: analyzing order book liquidity or bid-ask imbalance. It also gives a prerequisite limitation (DOM panel must be open), but it does not name alternative tools or say when not to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_clearA
Remove all user drawing shapes and annotations from the active chart canvas. WHEN TO USE: Call when resetting or cleaning the chart canvas before drawing a fresh analysis template. SIDE EFFECTS: STATE_MUTATING (Deletes all user drawings on canvas). LIMITATIONS: Irreversible removal of canvas drawings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does state 'STATE_MUTATING' and 'Irreversible removal of canvas drawings.' It does not cover permission requirements or behavior on an empty canvas, but the critical destructive and irreversible characteristics are clearly disclosed.
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 primary action and then uses labeled sections for WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Each sentence adds value and the total length is appropriate for a destructive zero-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 simple, parameterless, destructive tool with no output schema, the description covers purpose, usage context, side effects, and irreversibility. An agent has all the information needed to invoke it safely and 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 takes no parameters, so the baseline for parameter semantics is 4. The description correctly adds no unnecessary parameter detail, as there is nothing to describe.
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: 'Remove all user drawing shapes and annotations from the active chart canvas.' The word 'all' distinguishes it from the sibling draw_remove_one, making the scope unambiguous without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear WHEN TO USE clause: 'Call when resetting or cleaning the chart canvas before drawing a fresh analysis template.' However, it does not name an alternative such as draw_remove_one for single-shape removal, so the when-not guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_get_propertiesA
Get styling properties, line colors, line width, and coordinate points of an existing drawing shape by entity ID. WHEN TO USE: Call when inspecting or confirming coordinates of an annotated price level. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires entity ID from draw_list.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity ID of the drawing (from draw_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and explicitly states 'SIDE EFFECTS: None (Read-only)' and the dependency on an entity ID from draw_list. It does not describe error behavior for invalid or missing IDs, but for a simple read getter this is a solid disclosure.
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, then neatly separated into WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with full schema coverage and no output schema, the description is complete. It states what is returned, when to call it, its safety profile, and the prerequisite entity ID.
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 100%, so the single parameter is already fully documented in the schema. The description repeats that entity_id comes from draw_list but adds no additional syntax, validation, or format meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Get) and resource (styling properties, line colors, line width, coordinate points of an existing drawing shape), and ties it to an entity ID. It clearly distinguishes this inspection tool from sibling tools like draw_list, draw_shape, and draw_remove_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 gives an explicit WHEN TO USE condition: inspecting or confirming coordinates of an annotated price level. It also states a prerequisite (entity ID from draw_list). It does not name alternatives or when-not scenarios, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_listA
List all user drawing shapes and annotations currently active on the chart with entity IDs, types, and coordinates. WHEN TO USE: Call before modifying or deleting drawings to locate specific drawing IDs. SIDE EFFECTS: None (Read-only). LIMITATIONS: Only reports user drawings, not Pine script drawings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and explicitly declares 'SIDE EFFECTS: None (Read-only)' plus a real scope limitation (user drawings only, not Pine script drawings). It omits any mention of result volume or pagination, which is a minor gap for a listing 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?
Front-loaded one-sentence purpose followed by clearly labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence carries information; nothing is restated from the 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?
For a zero-parameter, read-only listing tool with no output schema, the description supplies everything needed: what is listed, what is returned, the safety profile, and the user-vs-Pine scope boundary.
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 takes zero parameters, so the baseline is 4; there is no parameter surface for the description to clarify. The description instead describes the shape of the result (IDs, types, coordinates), which is useful but not a param concern.
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 (List) and resource (user drawing shapes and annotations on the chart) and even enumerates the returned fields (entity IDs, types, coordinates). This distinguishes it cleanly from siblings like draw_shape, draw_clear, draw_remove_one, and draw_get_properties.
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 'WHEN TO USE' clause gives an explicit trigger: call before modifying or deleting drawings to locate drawing IDs. It does not, however, name an alternative (e.g. draw_get_properties) or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_remove_oneA
Delete a specific drawing shape from the chart canvas by its entity ID. WHEN TO USE: Call when removing an invalid or obsolete level while preserving other drawings. SIDE EFFECTS: STATE_MUTATING (Deletes targeted drawing shape). LIMITATIONS: Requires entity ID obtained from draw_list.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | Entity ID of the drawing to remove (from draw_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the core side effect (STATE_MUTATING, deletes the targeted shape) and the requirement to obtain the entity ID from draw_list, but does not mention reversibility, error behavior, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first sentence, then uses labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) for scannability. Every sentence is purposeful and no information is wasted.
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 removal tool with no output schema, the description covers purpose, usage context, side effects, and prerequisite. Nothing critical for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the entity_id parameter is already fully documented in the schema. The description repeats that the remove operation uses an entity ID and that it comes from draw_list, adding no new format or syntax semantics beyond the structured field.
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 (delete) and resource (drawing shape), and specifies the target identifier (entity ID) needed. It is clearly distinguishable from sibling tools like draw_clear, which would remove drawings in bulk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (removing an invalid or obsolete level while preserving other drawings) and gives a prerequisite (entity ID from draw_list). It does not explicitly name an alternative tool or state when not to use it, but the preserving constraint implies a contrast with draw_clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_shapeA
Create and render a graphical drawing primitive on the chart (horizontal_line, vertical_line, trend_line, rectangle, text, ray). WHEN TO USE: Call when annotating key support/resistance levels, chart patterns, breakout zones, or trade entry/target targets visually. SIDE EFFECTS: STATE_MUTATING (Adds drawing primitive to chart canvas). LIMITATIONS: Requires point coordinates in unix timestamp and price values.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Text content for text shapes | |
| point | Yes | { time: unix_timestamp, price: number } | |
| shape | Yes | Shape type: horizontal_line, vertical_line, trend_line, rectangle, text | |
| point2 | No | Second point for two-point shapes (trend_line, rectangle) | |
| overrides | No | JSON string of style overrides (e.g., '{"linecolor": "#ff0000", "linewidth": 2}') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it explicitly discloses STATE_MUTATING ('Adds drawing primitive to chart canvas') and the coordinate-format LIMITATION. It stops short of covering permissions, reversibility/undo, or persistence across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) make the definition scannable, and the core capability is front-loaded in the first sentence. No filler sentences.
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 mutation tool without annotations or an output schema, the description covers purpose, usage context, the mutation side effect, and required coordinate formats. The only gaps are edge behavior such as what identifier is returned and whether the drawing can be undone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (shape, point, point2, text, overrides) are already documented. The description restates the coordinate format (unix timestamp + price) and shape list but adds no new syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('Create and render a graphical drawing primitive on the chart') and enumerates the supported shape types. An agent can tell this apart from siblings like draw_list, draw_clear, and draw_remove_one 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?
The WHEN TO USE clause gives concrete conditions (support/resistance levels, chart patterns, breakout zones, trade entry/targets), which is clear contextual guidance. It does not, however, name alternatives such as draw_list or draw_get_properties for inspection workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicator_set_inputsA
Programmatically override input values of an indicator entity (e.g., length, source, period, multiplier). WHEN TO USE: Call when fine-tuning parameters of an attached study without deleting and re-adding it. SIDE EFFECTS: STATE_MUTATING (Alters indicator configuration on chart). LIMITATIONS: Requires study entity ID and valid JSON inputs map.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | Yes | JSON string of input overrides, e.g. '{"length": 50, "source": "close"}'. Keys are input IDs, values are the new values. | |
| entity_id | Yes | Entity ID of the study (from chart_get_state) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key trait: 'STATE_MUTATING (Alters indicator configuration on chart)' plus the/entity-ID requirement. It stops short of covering failure behavior for invalid input IDs or whether overrides persist/are reversible.
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?
Four labeled, front-loaded fragments (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with no filler. The mutation warning is placed where an agent will see it before acting.
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 two-parameter mutation tool with no output schema and no annotations, the description covers purpose, trigger, side effect, and preconditions adequately. It omits error/validation behavior when input IDs or the JSON map are invalid, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented with examples inside the schema, so the schema does the heavy lifting. The description's mention of example fields (length, source, period) only loosely restates the schema's 'e.g.' example rather than adding new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Programmatically override input values of an indicator entity') and enumerates concrete examples (length, source, period, multiplier). The phrase 'without deleting and re-adding it' implicitly separates it from chart_manage_indicator, but no sibling is named explicitly.
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 'WHEN TO USE' clause gives a clear trigger: fine-tuning an attached study's parameters in place rather than removing and re-adding it. It includes a LIMITATIONS precondition (needs study entity ID and valid JSON map) but does not name an alternative tool for the delete/re-add path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indicator_toggle_visibilityA
Show or hide an indicator/study plot on the chart canvas. WHEN TO USE: Call when decluttering the chart view before visual analysis or screenshot capture. SIDE EFFECTS: STATE_MUTATING (Toggles indicator visibility). LIMITATIONS: Requires study entity ID from chart_get_state.
| Name | Required | Description | Default |
|---|---|---|---|
| visible | Yes | true to show, false to hide | |
| entity_id | Yes | Entity ID of the study (from chart_get_state) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it labels the operation STATE_MUTATING and discloses the prerequisite of a study entity ID from chart_get_state. It omits reversibility and permission details, but the mutation profile and precondition are clearly flagged.
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 purpose is front-loaded, then cleanly labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter toggle with no output schema and no annotations, the description covers action, trigger context, mutation side effect, and the entity-ID dependency. That is sufficient to call it correctly, with only minor omissions around reversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (visible, entity_id) are documented there. The description only restates the entity-ID prerequisite already present in the schema, adding no new syntax or format guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (show/hide) and resource (indicator/study plot on the chart canvas), which naturally separates it from siblings like indicator_set_inputs or chart_manage_indicator. It stops short of explicitly naming those siblings, so it is clear but not maximally 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 'WHEN TO USE' clause gives a concrete scenario (decluttering the chart before visual analysis or screenshot capture), which is more than most definitions provide. It does not name alternative tools or state when not to call it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_listA
List all saved chart layouts in user profile with layout names and IDs. WHEN TO USE: Call before switching layouts to discover valid layout names. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires user profile to have saved layouts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses 'SIDE EFFECTS: None (Read-only)' and 'LIMITATIONS: Requires user profile to have saved layouts.' This covers safety and a precondition. Slight gap: doesn't mention return format or pagination, but with no output schema some of that would be expected.
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?
Uses labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) that are front-loaded and easy to scan. 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 zero-parameter read-only list tool, the description covers purpose, usage, side effects, and limitations. It would benefit from a brief note on the return shape since there is no output schema, but overall it's complete enough to call 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?
Zero parameters, so baseline is 4 per the rules. The description mentions layout names and IDs, but since there are no input parameters, there's nothing more to document.
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: 'List all saved chart layouts in user profile with layout names and IDs.' Clear what it returns and what it operates on.
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 section: 'Call before switching layouts to discover valid layout names.' This directly names the sibling tool layout_switch and the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_switchA
Switch active chart workspace to another saved layout by name or ID. WHEN TO USE: Call when transitioning between specialized analytical layouts (e.g. crypto vs macro). SIDE EFFECTS: STATE_MUTATING (Loads different layout, reloads charts and indicators). LIMITATIONS: Layout name or ID must exist in user account.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name or ID of the layout to switch to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses a critical side effect (STATE_MUTATING, reloads charts and indicators) and a limitation (layout must exist). This is strong transparency, though it doesn't cover reversibility or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely dense: three labeled sections (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with no filler. Front-loaded with the core action.
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 state-mutating tool with no output schema, the description covers purpose, usage trigger, side effects, and a hard limitation. It is nearly complete; only the exact post-switch state (e.g., whether current unsaved changes are lost) is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter, so the schema already explains the 'name' parameter as name or ID. The description adds no format, case-sensitivity, or resolution-order details beyond what the schema provides.
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 (Switch) and resource (active chart workspace / saved layout) with clear scope by name or ID. An agent can distinguish this from layout_list and pane_set_layout, which are different operations.
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?
WHEN TO USE clause gives clear context ('transitioning between specialized analytical layouts') with examples. It does not explicitly exclude other tools or name alternatives, but the use case is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_compare_timeframesA
Compare market regime, trend direction, momentum (RSI), and volume consensus across multiple timeframes (e.g., 1D, 4H, 1H, 15m, 5m). WHEN TO USE: Call when performing multi-timeframe top-down analysis to identify timeframe alignment or conflicts. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
| timeframes | No | List of timeframes to evaluate | |
| candleCount | No | Granular base candles to retrieve for aggregation (default 300) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does assert 'NO SIDE EFFECTS,' which is useful. But it says nothing about preconditions (e.g., whether a symbol/chart context must already be set), data requirements, or how results are returned, which matters for a zero-annotation 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?
Three short sentences, front-loaded with what is compared before the WHEN TO USE directive and the safety note. No filler and every sentence carries distinct 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?
With no output schema and no annotations, the description should explain what the comparison returns and any preconditions. It covers purpose, usage trigger, and side-effect status adequately but leaves return shape and required market context unspecified for what is conceptually a rich analytical 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?
Schema description coverage is 100%, so both parameters are already documented, making 3 the baseline. The description's enumeration of example timeframes echoes the schema's default array and adds only marginal clarity about accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (compare) and enumerates the exact dimensions compared (market regime, trend direction, RSI momentum, volume consensus) plus the scope (multiple timeframes with concrete examples). It is clearly distinguishable from generic data tools. It falls short of a 5 only because the sibling chart_get_multi_timeframe sounds closely related and is never 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 explicit 'WHEN TO USE' clause gives a concrete scenario: multi-timeframe top-down analysis to identify timeframe alignment or conflicts. That is clear context for invocation. However, no exclusions or named alternatives are given, so an agent cannot tell when to prefer chart_get_multi_timeframe or market_get_context instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_detect_structureA
Detect deterministic market structure: Swing Highs/Lows, HH/HL/LH/LL classifications, Break of Structure (BOS), Change of Character (CHoCH), and Equilibrium/Range bounds. WHEN TO USE: Call when evaluating trend continuity or structural breakouts. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
| candleCount | No | Number of bars to analyze (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does declare two traits: the computation is 'deterministic' and has 'NO SIDE EFFECTS', which effectively communicates a safe read-only operation. However, it says nothing about cost, latency, data prerequisites (e.g., whether a chart with enough bars must be loaded), or the shape of what comes back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by a clearly labeled usage clause and a short safety clause. Every sentence earns its place and 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?
With no output schema, the description partially compensates by enumerating the detected structures, which tells the agent what the result will discuss. It still does not describe the response format (per-swing coordinates, timestamps, or labels), so an agent cannot fully anticipate the return payload.
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 is a single parameter (candleCount) and schema description coverage is 100%, so the schema already documents it fully as 'Number of bars to analyze (default 100)'. The description adds no extra meaning such as lookback sensitivity or minimum-bar constraints, making the baseline 3 the correct 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?
States a specific verb (Detect) and resource (market structure), then enumerates the exact artifacts produced: Swing Highs/Lows, HH/HL/LH/LL, BOS, CHoCH, Equilibrium/Range bounds. This is enough for an agent to distinguish it from sibling detectors like market_detect_zones or market_get_context without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The explicit 'WHEN TO USE: Call when evaluating trend continuity or structural breakouts' gives a clear triggering context. It stops short of naming alternatives or stating when NOT to use it (e.g., vs market_detect_zones for supply/demand), so it does not reach the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_detect_zonesA
Detect objective horizontal support & resistance zones and price consolidation clusters with touch counts and test recency. WHEN TO USE: Call when locating key price levels for take-profit, stop-loss, or reaction areas. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
| minTouches | No | Minimum touches to qualify a zone (default 2) | |
| candleCount | No | Number of bars to analyze (default 100) | |
| tolerancePct | No | Price clustering tolerance (default 0.005 = 0.5%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does at least assert 'NO SIDE EFFECTS', establishing it as a read-only analysis. It omits other behavioral traits: which symbol/timeframe/bars it operates on, computational cost, and how zones are ranked or returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: the capability and its result attributes come first, followed by the usage trigger. Every clause 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?
There is no output schema, so the description must describe returns; it only hints at them (touch counts, test recency) without a return shape. It also omits the chart-context dependency (symbol/timeframe/visible range) that an agent would need 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 100% with defaults documented on all three parameters (minTouches, candleCount, tolerancePct), so the schema does the heavy lifting. The description adds no additional meaning about how these knobs affect detection results, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: detecting horizontal support/resistance zones and consolidation clusters, plus output attributes (touch counts, test recency). However, it never distinguishes itself from the sibling market_detect_structure, which an agent could easily confuse 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 explicit 'WHEN TO USE' clause gives concrete scenarios (take-profit, stop-loss, reaction areas), which is stronger than most definitions. It stops short of naming when NOT to use it or pointing to market_detect_structure / market_get_context as alternatives for related analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_get_contextA
Get comprehensive, multi-dimensional market context (trend, regime, key indicators, volume, market structure, and zones) in a single deterministic call. WHEN TO USE: Call when orienting yourself on a ticker/timeframe before planning actions or answering user analysis queries. LIMITATIONS: Requires price bars loaded on chart. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
| expectedTf | No | Optional timeframe to verify against chart state | |
| candleCount | No | Number of OHLCV bars to analyze (default 100, max 500) | |
| includeZones | No | Whether to calculate support and resistance zones | |
| expectedSymbol | No | Optional symbol to verify against chart state | |
| includeStructure | No | Whether to calculate Swings, BOS, CHoCH, and range position | |
| includeIndicators | No | Whether to calculate RSI, MACD, EMA, ATR, Bollinger, ADX, VWAP, Stochastic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does meaningful work: 'NO SIDE EFFECTS' declares the read-only safety profile, 'single deterministic call' signals stable repeatable output, and 'Requires price bars loaded on chart' names a precondition that would otherwise cause silent failure. It omits error behavior and does not describe the response payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by labeled WHEN TO USE and LIMITATIONS clauses; every sentence earns its place and an agent can skim the labels for exactly the facts it needs. No filler or restatement of the title.
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 6-parameter, all-optional read tool with no output schema, the description covers purpose, usage trigger, precondition, and side-effect status. Its one real gap is return-shape detail: the enumerated dimension list hints at contents but does not tell the agent what fields or structure to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (expectedTf, candleCount, includeZones, expectedSymbol, includeStructure, includeIndicators) are already documented in the schema with defaults and constraints. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (market context) and enumerates the dimensions returned: trend, regime, key indicators, volume, market structure, zones. This clearly distinguishes it from narrower siblings like market_detect_structure and market_detect_zones, though it never names them explicitly.
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 labeled 'WHEN TO USE' clause gives a clear condition: orienting on a ticker/timeframe before planning actions or answering analysis queries. It does not name alternatives (e.g. market_detect_structure for structure only) or state when not to use it, so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_get_recent_changesA
Detect structural shifts, new swings, volume spikes, and divergences that occurred since a given timestamp or generation. WHEN TO USE: Call when periodically polling or checking what changed on the chart since your last analysis turn, saving LLM token bandwidth. NO SIDE EFFECTS.
| Name | Required | Description | Default |
|---|---|---|---|
| sinceTimestamp | No | Unix timestamp in seconds or milliseconds to filter changes from | |
| sinceGeneration | No | Chart generation ID from previous analysis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does disclose 'NO SIDE EFFECTS', which usefully establishes it as a safe read. It does not describe the shape of the diff output, whether results are bounded/paginated, or what happens when neither timestamp nor generation is supplied (both default to 0).
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, front-loaded with the purpose and then the usage trigger and safety note. Every sentence earns its place and nothing is redundant.
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 two-optional-parameter polling tool with no output schema and no annotations, the description covers purpose, trigger, and safety profile adequately. It could go further by clarifying behavior when both parameters are omitted or how the two parameters interact, but the essentials are 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 100%, so both parameters are fully documented in the schema, including the seconds-or-milliseconds format for sinceTimestamp and the meaning of sinceGeneration. The description merely alludes to 'a given timestamp or generation' without adding format, precedence, or default-behavior detail beyond the schema. Baseline 3.
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 ('Detect') and enumerates the exact change types returned: structural shifts, new swings, volume spikes, divergences. It is clearly distinguishable from siblings like market_detect_structure or market_get_smart_volume, which are point-in-time detectors rather than change detectors.
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 WHEN TO USE clause gives a concrete trigger: polling for what changed since the last analysis turn, with a stated rationale (saving LLM token bandwidth). It does not, however, name alternatives or state when not to use it (e.g., first-time analysis), so it stops short of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_get_smart_volumeA
Analyze institutional-style market activity proxy (RVOL, robust z-score, Wyckoffian effort vs result, absorption, initiative moves, exhaustion, sweeps, and accumulation/distribution). WHEN TO USE: Call when evaluating volume anomalies, liquidity sweeps, or market participation conviction. NO SIDE EFFECTS. LIMITATIONS: On CFD/Forex feeds (like OANDA:XAUUSD), volume reflects tick activity rather than centralized transaction contracts; activity is inferred/heuristic.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session window to evaluate (AUTO, ASIA, LONDON, NEW_YORK, LONDON_NY_OVERLAP) | AUTO |
| lookback | No | Rolling lookback period for statistical volume profiling (default 100) | |
| expectedTf | No | Optional timeframe to verify against chart state | |
| sensitivity | No | Detection sensitivity multiplier (default 1.0) | |
| expectedSymbol | No | Optional symbol to verify against chart state | |
| includeMultiTimeframe | No | Whether to evaluate cross-timeframe smart volume alignment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares 'NO SIDE EFFECTS' and adds a LIMITATIONS section disclosing that on CFD/Forex feeds volume is tick-based and the analysis is inferred/heuristic. It stops short of describing the response shape, but the read-only and reliability caveats are genuinely useful 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?
Front-loaded with the core action, then cleanly sectioned into WHEN TO USE and LIMITATIONS. The metric list is dense but each item earns its place by defining the analytical output; no filler sentences.
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 no-output-schema, six-optional-param analysis tool the description covers purpose, usage triggers, side-effect profile, and data-reliability caveats. It could say more about what the response contains, but the essential invocation guidance is 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 100%, so all six parameters (session, lookback, expectedTf, sensitivity, expectedSymbol, includeMultiTimeframe) are documented in the schema itself. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Analyze') plus an enumerated set of analytical outputs (RVOL, robust z-score, Wyckoffian effort vs result, absorption, initiative moves, exhaustion, sweeps, accumulation/distribution). This clearly scopes it to volume/activity analysis, distinguishing it from sibling tools like market_detect_structure or market_detect_zones.
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 an explicit 'WHEN TO USE' section naming concrete triggers (volume anomalies, liquidity sweeps, participation conviction). It gives clear selection context but does not name any sibling alternative or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
morning_briefA
Scan user watchlist, read indicator values across symbols, and extract structured market data for a pre-market or daily briefing according to rules.json. WHEN TO USE: Call at the start of a trading day to synthesize cross-asset market bias and momentum. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires rules.json in workspace or specified via rules_path.
| Name | Required | Description | Default |
|---|---|---|---|
| rules_path | No | Optional path to rules.json. Defaults to rules.json in the project root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so reasonably by declaring 'SIDE EFFECTS: None (Read-only)' and a dependency ('Requires rules.json in workspace or specified via rules_path'). It does not describe output structure, failure behavior when rules.json is absent, or whether the scan hits external services, so the disclosure is solid 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?
Front-loads the core action, then uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks that scan quickly. Sentence count is tight, though the three labels are slightly formulaic relative to the amount of content delivered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-step composite tool with no output schema, the description covers purpose, timing, safety, and the key prerequisite, which is a fair amount. However it does not indicate the shape or scope of the 'structured market data' returned, leaving the agent unable to anticipate the response for such a cross-asset aggregation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter rules_path is fully documented in the schema. The description only reinforces the rules.json default behavior via the LIMITATIONS line, adding no syntax or format detail beyond the schema, which matches the baseline 3 for high 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?
States specific verbs and resources ('scan user watchlist, read indicator values across symbols, extract structured market data') and scopes the output ('pre-market or daily briefing according to rules.json'). It is clearly a composite briefing tool, though it does not explicitly contrast itself with similar siblings like market_get_context or watchlist_get, leaving the differentiation to inference.
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 'WHEN TO USE' clause explicitly anchors usage to 'the start of a trading day to synthesize cross-asset market bias and momentum,' which is strong temporal guidance. It stops short of naming when NOT to use it or which sibling to prefer instead, so no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pane_focusA
Switch active user focus to a specific chart pane by index (0-based). WHEN TO USE: Call before executing chart operations targeted at a secondary pane in a multi-chart layout. SIDE EFFECTS: STATE_MUTATING (Changes active chart focus). LIMITATIONS: Index must be valid within pane_list.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Pane index (0-based, from pane_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does disclose the key trait: STATE_MUTATING focus change plus a precondition that the index must be valid within pane_list. It does not mention error behavior for an out-of-range index or whether focus persists across commands, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence of purpose followed by labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS clauses — front-loaded, scannable, and every line adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter state-mutating tool with no annotations and no output schema, the description covers purpose, timing, mutation side effect, and validity constraint. Only the failure mode for an invalid index is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented as '(0-based, from pane_list)'; the description's 'index (0-based)' restates rather than extends that. Baseline 3 applies when the schema does the work.
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 gives a specific verb + resource + scope: 'Switch active user focus to a specific chart pane by index (0-based).' That is enough to distinguish it from pane_list (read) and pane_set_symbol (content change), though it never explicitly contrasts itself with those 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?
A dedicated 'WHEN TO USE' clause states the triggering condition: call it before chart operations aimed at a secondary pane in a multi-chart layout. It lacks an explicit when-not or a named alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pane_listA
List all chart panes in the current split-view workspace with their active symbols, resolutions, and focus state. WHEN TO USE: Call before manipulating multi-chart layouts to discover pane indices. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires multi-chart layout active to list multiple panes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so explicitly: SIDE EFFECTS: None (Read-only) and the LIMITATIONS line about requiring a multi-chart layout. It stops short of stating what a single-pane layout returns or whether the list is paginated/ordered, so it is strong rather than complete.
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 tight sentences with labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections; the core behavior is front-loaded and nothing is redundant.
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-param, no-output-schema list tool, the description supplies the return fields, safety profile, and a precondition, which is close to sufficient. It omits ordering/emptiness semantics for a single-pane workspace, leaving a small 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?
Zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly implies a no-argument call.
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?
Specific verb ('List') plus resource ('chart panes') and scope ('current split-view workspace'), and it names the payload returned (active symbols, resolutions, focus state). An agent can distinguish this from pane_focus, pane_set_symbol, and pane_set_layout 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?
The WHEN TO USE line gives a concrete trigger: call before manipulating multi-chart layouts to discover pane indices. It does not name a sibling alternative (e.g. chart_get_state vs pane_list), so it stops short of explicit routing, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pane_set_layoutA
Change the chart grid layout grid (e.g., single "s", "2h", "2v", "4" quad grid). WHEN TO USE: Call when configuring multi-chart views for correlated assets or multi-timeframe monitoring. SIDE EFFECTS: STATE_MUTATING (Alters window grid division and creates/destroys chart panes). LIMITATIONS: Layout codes: s, 2h, 2v, 2-1, 1-2, 3h, 3v, 4, 6, 8.
| Name | Required | Description | Default |
|---|---|---|---|
| layout | Yes | Layout code: s (single), 2h, 2v, 2-1, 1-2, 3h, 3v, 4 (2x2), 6, 8. Also accepts: single, 2x1, 1x2, 2x2, quad |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well for a mutation tool. It explicitly discloses STATE_MUTATING behavior, that it alters window grid division, and that it creates/destroys chart panes, though it omits auth or rate-limit 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 front-loaded and organized under WHEN TO USE, SIDE EFFECTS, and LIMITATIONS, making it easy to scan. It has minor redundancy, including the awkward phrase 'layout grid layout grid' and repetition of layout codes already in the 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 a simple one-parameter mutation tool with a rich schema and no output schema, the description covers purpose, usage context, side effects, and layout limitations. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the layout parameter with the full code list and aliases. The description repeats the same layout codes and adds no syntax or meaning beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: changing the chart grid layout, with examples such as single, 2h, 2v, and 4 quad grid. It is clear enough to distinguish from pane_list or pane_focus, but it does not explicitly differentiate itself from sibling layout_switch.
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?
Includes a WHEN TO USE section that gives concrete context: configuring multi-chart views for correlated assets or multi-timeframe monitoring. It provides clear positive guidance but does not name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pane_set_symbolA
Set financial ticker symbol directly on a specific pane index without changing active focus. WHEN TO USE: Call when populating multi-pane grids with correlated tickers (e.g. BTCUSD on pane 0, ETHUSD on pane 1). SIDE EFFECTS: STATE_MUTATING (Changes symbol on target pane). LIMITATIONS: Target pane index must exist.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Pane index (0-based) | |
| symbol | Yes | Symbol to set (e.g., NQ1!, ES1!, AAPL) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so reasonably: it labels the operation STATE_MUTATING, says the target pane's symbol changes, and clarifies that active focus is not changed. It does not describe error behavior or return values, but those gaps are minor for this simple setter.
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 clear labeled sections for usage, side effects, and limitations. Every sentence adds a distinct piece of information without 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?
For a two-parameter pane symbol setter with no output schema and no annotations, the description covers purpose, when to use, mutation side effect, and the main limitation. Nothing critical is missing 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?
Schema description coverage is 100%, so both parameters are already documented with types and descriptions. The description adds only a multi-pane example and the limitation that the index must exist, which is useful but does not substantially extend parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: sets a financial ticker symbol on a specific pane index. It also distinguishes itself from sibling tools like chart_set_symbol by emphasizing 'directly on a specific pane index without changing active focus.'
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 an explicit WHEN TO USE section with a concrete multi-pane example (BTCUSD on pane 0, ETHUSD on pane 1). It does not name an alternative tool for when this should not be used, but the focus-scope distinction gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_analyzeA
Run offline static analysis on Pine Script source code: detects array out-of-bounds, unguarded array.get/first/last, invalid loop ranges, lookahead bias, and deprecated syntax. WHEN TO USE: Call before compiling code to verify correctness without needing a live TradingView connection. SIDE EFFECTS: None (Read-only offline parser). LIMITATIONS: Static AST parsing only; does not execute runtime logic.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Pine Script source code to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: 'SIDE EFFECTS: None (Read-only offline parser)' declares safety, and 'LIMITATIONS: Static AST parsing only; does not execute runtime logic' discloses the analysis boundary. It omits what the result looks like, but the safety and scope profile is solidly covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections with no filler. Every clause conveys distinct, useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param, read-only tool with no output schema and no annotations, the description covers purpose, timing, side effects, and limits. It could briefly indicate the shape of the returned findings, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100%, so the schema already documents 'source'. The description adds no syntax or formatting guidance for the input, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run offline static analysis on Pine Script source code') and enumerates the exact classes of defects detected. An agent can distinguish it from siblings like pine_compile, pine_check, and pine_get_errors without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'WHEN TO USE: Call before compiling code to verify correctness without needing a live TradingView connection' gives clear timing and the offline condition. It implicitly positions itself relative to pine_compile but never names the sibling alternatives or exclusions explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_checkA
Compile Pine Script via TradingView remote compiler API without touching the UI. Returns compilation errors and warnings. WHEN TO USE: Call for headless validation of Pine Script code before opening editor or chart. SIDE EFFECTS: EXTERNAL_SIDE_EFFECT (Sends code to TradingView cloud compiler endpoint). LIMITATIONS: Requires active internet connection to reach TradingView servers.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Pine Script source code to compile/validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the external side effect (source code is sent to TradingView's cloud compiler) and the hard limitation (active internet connection required). It omits whether authentication/credentials are needed and whether the code leaves the machine permanently, but the key behavioral traits are surfaced.
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 short, front-loaded with the action, and uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks that are easy to scan. Minor redundancy ('without touching the UI' plus 'headless') costs it the top 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?
For a single-parameter, no-output-schema tool with no annotations, the description covers purpose, return content, trigger condition, side effect, and network limitation. The only meaningful gap is how it differs from sibling compile tools, which an agent needs in order to choose 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?
There is only one parameter and schema description coverage is 100%, so the schema already documents 'source' as the Pine Script code to compile. The description adds no format, size, or version constraints beyond that, making this the baseline 3.
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 ('Compile Pine Script via TradingView remote compiler API') and adds what it returns (compilation errors and warnings), which lets an agent distinguish it from a plain compile call. However, it does not differentiate itself from the close siblings pine_compile, pine_smart_compile, or pine_get_errors, so the purpose is clear but sibling routing is left to inference.
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: headless validation of Pine Script before opening the editor or chart. This gives a clear trigger condition, but it never names the alternatives (pine_compile / pine_smart_compile) or states when NOT to use it, so routing between the three compile tools remains ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_compileA
Trigger compilation ("Add to Chart" or "Save & Update") for the script currently in the Pine Editor. WHEN TO USE: Call after setting source code to apply the indicator or strategy to the chart canvas. SIDE EFFECTS: STATE_MUTATING (Attaches or updates study/strategy on chart canvas). LIMITATIONS: Pine Editor must be open with code loaded.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does useful work: it declares SIDE EFFECTS as STATE_MUTATING and a prerequisite (editor open with code loaded). It omits what happens on compile failure and how errors surface (pine_get_errors), which an agent invoking a mutation would want.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (WHEN TO USE / SIDE EFFECTS / LIMITATIONS) front-load the action, then the trigger conditions, then the constraints. Every sentence is informative and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema action tool with no annotations, the description supplies purpose, sequencing, mutation semantics, and a precondition. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric this is the baseline 4. There is nothing further the description could add on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('trigger compilation') and resource (the script in the Pine Editor) and names the UI actions it corresponds to. However, it does not differentiate itself from the sibling pine_smart_compile (or pine_check/pine_analyze), so an agent cannot tell from this text alone which compile variant to pick.
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 WHEN TO USE section gives clear sequencing ('call after setting source code') and the intended outcome (applying the indicator/strategy to the chart). It stops short of naming alternatives like pine_smart_compile or when not to call it, so routing between compile tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_get_consoleA
Read runtime logs and compiler messages from the Pine Editor console window (e.g., log.info(), log.error(), log.warning()). WHEN TO USE: Call when debugging Pine Script runtime behavior or inspecting custom log outputs. SIDE EFFECTS: None (Read-only). LIMITATIONS: Console output must be enabled in the script.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does disclose side effects ('None (Read-only)') and a practical limitation ('Console output must be enabled in the script'), though it does not cover return shape or authorization 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 front-loaded with purpose, then succinctly labels WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence earns its place with no 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?
For a zero-parameter, read-only console log tool with no output schema and no annotations, the description provides all essential details: what it reads, when to use it, safety, and a precondition. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to add beyond the schema. Baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a precise verb ('Read') and names the specific resource ('runtime logs and compiler messages from the Pine Editor console window'), including concrete examples of log functions. It clearly distinguishes this from compile-error retrieval tools by focusing on console output.
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 an explicit WHEN TO USE section: debugging Pine Script runtime behavior or inspecting custom log outputs. It gives clear context but does not name alternative tools (e.g., pine_get_errors) or state when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_get_errorsA
Retrieve compiler error messages, line numbers, and syntax markers from Monaco editor model. WHEN TO USE: Call immediately after compilation if errors occur to pinpoint line numbers and syntax issues. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires Pine Editor to be open.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares read-only behavior, states 'SIDE EFFECTS: None', and discloses the prerequisite 'Requires Pine Editor to be open.' It stops short of describing what is returned when there are no errors or whether the call triggers any compilation side effect.
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 labeled clauses (purpose, WHEN TO USE, SIDE EFFECTS/LIMITATIONS), front-loaded with the core action. Every sentence adds distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter, read-only tool with no output schema, the description covers purpose, trigger, safety profile, and prerequisite. It could go slightly further on the shape of the return payload, but it is close to 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 tool takes zero parameters, so the baseline is 4; the schema is empty and there is nothing further for the description to clarify about 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?
States a specific verb ('Retrieve') and precise resource ('compiler error messages, line numbers, and syntax markers from Monaco editor model'). This is clearly differentiated from sibling diagnostic tools like pine_get_console, pine_check, and pine_analyze, which target different outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'Call immediately after compilation if errors occur.' That is a clear when-to-use condition, but it names no alternatives (e.g., pine_get_console or pine_check) and offers no 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.
pine_get_sourceA
Get current Pine Script source code from the active TradingView Monaco editor model. WHEN TO USE: Call before refactoring, fixing errors, or saving an existing Pine script. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires Pine Editor bottom dock panel to be open.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely meets it: it declares 'SIDE EFFECTS: None (Read-only)' and a concrete precondition ('Requires Pine Editor bottom dock panel to be open'). It does not state what happens when the precondition fails or what the returned source looks like, keeping it out of 5 territory.
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 labeled clauses (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with zero filler and the core purpose front-loaded in the first sentence.
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 getter with no output schema and no annotations, the description covers the read-only guarantee and the runtime precondition, which is most of what an agent needs. It omits failure behavior (panel closed, no script loaded) and the return type, leaving a small 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 tool takes zero parameters, so per calibration the baseline is 4; there is nothing for the description to disambiguate beyond confirming it operates implicitly on the active editor model.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get current Pine Script source code') plus the exact origin ('active TradingView Monaco editor model'), which distinguishes it cleanly from pine_set_source, pine_list_scripts, and pine_analyze among 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?
Gives an explicit WHEN TO USE trigger list ('before refactoring, fixing errors, or saving an existing Pine script'), which is clear context. It does not name alternative tools or state when not to use it, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_list_scriptsA
List all user-saved Pine Scripts in TradingView personal library. WHEN TO USE: Call to inspect available saved scripts before opening one with pine_open. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires user to be logged in to TradingView.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares SIDE EFFECTS: None (Read-only) and LIMITATIONS: Requires user to be logged in. It does not describe return format or pagination, but the safety and auth profile are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS. Every sentence earns its place with no 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 zero parameters, no output schema, and no annotations, the description covers purpose, usage, side effects, and auth requirements. It falls short only in not hinting at what identifiers the returned list contains (e.g., script names or IDs) for use with pine_open.
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 takes zero parameters, so the baseline is 4. The description provides no parameter semantics to add, and none are needed.
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 (List) and resource (user-saved Pine Scripts in TradingView personal library), clearly distinguishing it from siblings like pine_open. An agent can immediately tell this is a read-only inventory operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call it before opening a script with pine_open, which gives clear context and names the alternative. It lacks a when-not condition or exclusions, but the primary usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_newA
Create a new blank Pine Script draft in the editor from a standard template (indicator, strategy, or library). WHEN TO USE: Call when starting a new script from scratch rather than modifying existing code. SIDE EFFECTS: STATE_MUTATING (Clears current editor and loads starter template). LIMITATIONS: Unsaved changes in active editor will be overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of script to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well. It declares STATE_MUTATING, explains that the current editor is cleared, loads a starter template, and warns that unsaved changes will be overwritten.
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 and compact, using clear labeled sections for purpose, usage, side effects, and limitations. Every sentence contributes useful information without 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?
For a simple one-parameter tool with no annotations and no output schema, the description covers purpose, when to use it, side effects, and destructive limitations. Nothing critical for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the enum for 'type' is already documented in the input schema. The description repeats the allowed template types but adds no syntax or formatting details beyond what the schema provides.
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 gives a specific verb and resource: create a new blank Pine Script draft in the editor. It also clarifies the template types and distinguishes this from modifying existing code, which separates it from siblings like pine_set_source and pine_save.
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 states 'WHEN TO USE: Call when starting a new script from scratch rather than modifying existing code.' This gives a clear selection context, though it does not name a specific alternative tool for modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_openA
Open a saved Pine Script from user library by name. WHEN TO USE: Call to load a specific user script into the Pine Editor. SIDE EFFECTS: STATE_MUTATING (Loads chosen script into editor). LIMITATIONS: Script name must match a script in user library.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the saved script to open (case-insensitive match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so reasonably well by explicitly flagging STATE_MUTATING (loads the chosen script into the editor) and a concrete LIMITATIONS constraint. It still omits error behavior and whether opening replaces current editor content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded verb+resource, then clearly labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. No wasted prose, and each clause 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 simple one-parameter tool with no annotations or output schema, the description covers purpose, trigger, mutation side effect, and a key constraint. Complete enough to call correctly, with only minor gaps around failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'name' parameter is already documented including its case-insensitive matching. The description adds only the constraint that the name must exist in the user library, which is a modest semantic addition over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (open) and resource (saved Pine Script from user library), with the WHEN TO USE line reinforcing that it loads a specific user script into the Pine Editor. It implicitly separates itself from siblings like pine_new (new script) and pine_list_scripts, though it never names them explicitly.
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 'WHEN TO USE' clause gives clear context: call it to load a specific user script into the Pine Editor. However, it offers no explicit alternatives or exclusions, so an agent must infer that creating a script is pine_new and listing scripts is pine_list_scripts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_saveA
Save the current Pine Script to user library via keyboard shortcut (Ctrl+S / Cmd+S). WHEN TO USE: Call when persisting edits to a saved script in TradingView cloud storage. SIDE EFFECTS: STATE_MUTATING (Saves script changes to user account). LIMITATIONS: Requires Pine Editor to be active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly carries the burden and discloses the key traits: STATE_MUTATING, writes changes to the user account, and requires the Pine Editor to be active. It omits failure behavior (e.g., what happens on an unsaved or invalid script) but covers the essential mutation and precondition facts.
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?
Four short, front-loaded segments (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with zero filler. The label-prefixed structure makes it scannable at a glance.
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, no-output-schema action tool, the description covers what it does, when to call it, its mutation effect, and its precondition. The main remaining gap is the absence of sibling routing (what to call before/after) and error behavior.
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 takes zero parameters, so the schema has nothing to document and the description is not obligated to add parameter meaning. Baseline 4 applies; no parameter-related guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save the current Pine Script to user library'), plus the keyboard-shortcut mechanism, so the action is unambiguous. It does not explicitly contrast itself with close siblings like pine_set_source or pine_compile, which would have earned 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 WHEN TO USE line gives concrete context: persisting edits to a script already saved in TradingView cloud storage. It stops short of naming alternatives (e.g., use pine_set_source first, or pine_smart_compile to verify) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_set_sourceA
Inject Pine Script source code directly into the active Monaco editor model. WHEN TO USE: Call when deploying new Pine Script code, applying bug fixes, or loading templates. SIDE EFFECTS: STATE_MUTATING (Replaces entire Monaco editor text buffer). LIMITATIONS: Requires Pine Editor panel to be open.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Pine Script source code to inject |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it declares STATE_MUTATING, warns that the entire Monaco text buffer is replaced, and notes the Pine Editor panel must be open. It omits whether the buffer change is persisted (vs. needing pine_save) or whether it is undoable, leaving a minor gap.
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?
Four labeled, front-loaded clauses with zero filler; purpose, usage, side effects, and limitations each earn their place and are easy to scan.
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 mutation tool with no annotations and no output schema, the description covers purpose, trigger scenarios, mutation semantics, and a precondition. It could still mention the downstream relationship to pine_compile/pine_save, which is the main thing an agent must know after injecting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'source' parameter, so the schema already documents its meaning. The description's phrase 'Pine Script source code to inject' adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Inject Pine Script source code directly into the active Monaco editor model') and clearly distinguishes itself from siblings such as pine_get_source, pine_save, and pine_compile. An agent can tell what this does and where it writes without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' line names concrete scenarios (deploying new code, applying bug fixes, loading templates). It doesn't name alternatives (e.g., pine_new for a blank script) or exclusions, so it falls short of the 5-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pine_smart_compileA
Execute atomic developer compilation loop: detects appropriate compile button, triggers build, polls for Monaco markers, and reports compile status. WHEN TO USE: Preferred tool for compiling Pine Script code directly into the active chart. SIDE EFFECTS: STATE_MUTATING (Modifies chart study state). LIMITATIONS: Requires Pine Editor panel to be open.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares SIDE EFFECTS: STATE_MUTATING (modifies chart study state) and a LIMITATION (requires the Pine Editor panel open). It also explains that compile status is reported. Rates/return detail are absent, but the mutation profile and prerequisite are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then cleanly labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections. Every sentence earns its place with no filler, though the labeled format is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description states it reports compile status, and it covers the mutation side effect and panel prerequisite. For a zero-param mutation tool with no annotations, this is nearly complete; only return-format specifics are omitted.
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 takes zero parameters, so per calibration the baseline is 4. The description correctly implies an atomic, argument-free operation and adds no misleading parameter expectations.
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 (compile Pine Script) and unpacks the mechanism: detects the compile button, triggers the build, polls Monaco markers, reports status. Says it is the 'preferred tool for compiling Pine Script code directly into the active chart,' which hints at differentiation from siblings like pine_compile, but never names an alternative explicitly.
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' clause ties the tool to compiling into the active chart, and 'preferred' implies this is the default over other compile/check siblings. It lacks an explicit when-not clause or a named alternative, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_getA
Get real-time market quote snapshot for a ticker (last price, day open/high/low/close, change %, volume). WHEN TO USE: Call for quick price checks without loading historical bar series. SIDE EFFECTS: None (Read-only). LIMITATIONS: Uses current chart ticker if symbol omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Symbol to quote (blank = current chart symbol) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does state 'SIDE EFFECTS: None (Read-only)' plus a real behavioral constraint: the symbol falls back to the current chart ticker when omitted. It omits rate limits, caching/staleness of the 'real-time' snapshot, and auth requirements, so it is solid 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?
Four compact labeled clauses (payload, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with the core action front-loaded and zero filler. An agent can scan it in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates the returned fields, declares the read-only safety profile, and explains the default-symbol behavior. Nothing an agent needs to invoke this single-optional-param tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents the blank-equals-current-chart-symbol behavior, so the LIMITATIONS line merely restates the schema rather than adding syntax or format detail. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (real-time market quote snapshot for a ticker) and enumerates the exact payload fields returned (last price, day OHLC, change %, volume). The phrase 'without loading historical bar series' implicitly separates it from data_get_ohlcv and chart_get_snapshot, which is enough for an agent to pick correctly.
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?
An explicit 'WHEN TO USE' block tells the agent to call it for quick price checks rather than pulling bar series. However, no alternative tool is named outright (the historical-bar contrast is left implicit), and no when-not condition is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_autoplayA
Toggle automatic bar playback in replay mode with configurable speed. WHEN TO USE: Call when letting historical playback run continuously at set speed. SIDE EFFECTS: STATE_MUTATING (Starts or pauses replay autoplay). LIMITATIONS: Requires Replay mode to be active.
| Name | Required | Description | Default |
|---|---|---|---|
| speed | No | Autoplay delay in ms (lower = faster). Leave empty to just toggle. (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does well: it labels the operation STATE_MUTATING, describes it as starting or pausing autoplay, and states the precondition that Replay mode must be active. It does not clarify reversibility or what happens to speed when toggled off.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded action statement followed by labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. The label scaffolding is a touch formulaic, but every line conveys operational information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter toggle with no annotations or output schema, the description supplies the key facts an agent needs: mutation semantics, the replay-mode precondition, and the usage trigger. Only fine details (exact toggle-off behavior, whether the speed persists) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 'speed' parameter is fully documented there, including units, direction, default, and the empty-value behavior. The description adds only the phrase 'configurable speed', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and scope: toggling automatic bar playback within replay mode, with a configurable speed. This is clearly distinct from siblings like replay_step (manual advancement) or replay_start (session initiation), though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' clause gives a concrete trigger ('letting historical playback run continuously at set speed'), which is better than most. It stops short of stating when NOT to use it or naming replay_step/replay_start as alternatives for manual or non-autoplay workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_startA
Enter TradingView Bar Replay mode at a specified historical date or first available bar. WHEN TO USE: Call when initiating historical simulated forward-testing or practicing trade executions bar by bar. SIDE EFFECTS: STATE_MUTATING (Switches chart into Replay mode, rewinds visible price action). LIMITATIONS: Requires market symbol with historical data at chosen date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to start replay from (YYYY-MM-DD format). If omitted, selects first available date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden and does well: it declares STATE_MUTATING, explains the concrete effect ('Switches chart into Replay mode, rewinds visible price action'), and states a prerequisite ('Requires market symbol with historical data at chosen date'). It omits behavior when replay is already active or on invalid dates, but the mutation semantics are unusually well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections; every clause is informative. The labeled format is slightly mechanical but not wasteful.
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 state-mutating tool with no annotations and no output schema, the description covers purpose, trigger context, side effects, and preconditions, which is most of what an agent needs. Gaps remain around state when replay is already running and what (if anything) is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'date' parameter, so the schema already documents format (YYYY-MM-DD) and the omit-behavior. The description only restates the same omit-behavior, adding no syntactic or semantic detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Enter TradingView Bar Replay mode') with scope ('at a specified historical date or first available bar'). It is clearly distinguishable from siblings like replay_step, replay_stop, and replay_status 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?
The WHEN TO USE clause gives clear context ('initiating historical simulated forward-testing or practicing trade executions bar by bar'), which is a real scenario. It stops short of naming alternatives or exclusions, e.g. that replay_step/replay_autoplay should be used after entry rather than re-calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_statusA
Get current status of Bar Replay mode (active, current replay timestamp, position). WHEN TO USE: Call to check whether chart is currently in replay mode and what timestamp is displaying. SIDE EFFECTS: None (Read-only). LIMITATIONS: None.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden and does so: it declares read-only semantics, states 'SIDE EFFECTS: None' and 'LIMITATIONS: None'. That is more than most read tools provide, though it does not discuss failure modes such as querying when replay is inactive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence is short and earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned fields (active, timestamp, position), and with no annotations it declares the read-only profile. Adequate for a parameterless status probe, though the exact response shape and inactive-replay behavior remain unstated.
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?
Zero parameters with 100% schema coverage, so the baseline is 4. There is nothing further for the description to clarify about 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?
States a specific verb and resource ('Get current status of Bar Replay mode') and enumerates the return content (active, current replay timestamp, position). This cleanly distinguishes it from siblings like replay_start, replay_step, and replay_stop.
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 'WHEN TO USE' clause gives a clear condition: check whether the chart is in replay mode and what timestamp is displaying. It does not explicitly name alternatives or exclusions, but the retrieval vs. mutation distinction is obvious from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_stepA
Advance replay forward by exactly one candle bar. WHEN TO USE: Call during manual forward simulation to reveal subsequent market price action step by step. SIDE EFFECTS: STATE_MUTATING (Advances replay state by one bar). LIMITATIONS: Requires Replay mode to be active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it flags STATE_MUTATING, specifies the exact mutation magnitude (one bar), and states the precondition that Replay mode must be active. It does not cover edge behavior at the end of the replay range, which would be needed for a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, labeled sentences (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with zero filler. The core action is front-loaded and each clause 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 zero-parameter mutating tool with no output schema, the description covers action, precondition, and mutation semantics. The only gap is what happens when the replay reaches its end or is already past the limit, which an agent stepping repeatedly would want to know.
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 takes no parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly adds no spurious parameter detail.
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 precise verb+resource+scope: 'Advance replay forward by exactly one candle bar.' This clearly distinguishes it from siblings such as replay_autoplay (continuous) and replay_start (initialization).
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' clause names the condition (manual forward simulation, step-by-step). It implies the manual-vs-autoplay distinction but doesn't name replay_autoplay as the alternative for continuous playback, which would have made it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_stopA
Exit Replay mode and restore the live real-time chart data feed. WHEN TO USE: Call when finishing simulation practice to return chart to current live market conditions. SIDE EFFECTS: STATE_MUTATING (Exits replay mode and jumps to live feed). LIMITATIONS: Closes any active replay session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so reasonably: it labels the operation STATE_MUTATING, explains it exits replay and jumps to the live feed, and notes it closes any active replay session. It stops short of saying what occurs if no replay session is active (no-op vs. error) or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks, so an agent can scan it quickly. Minor redundancy: the SIDE EFFECTS clause restates the exit-replay behavior already given in the opening sentence.
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, no-output-schema state toggle this covers purpose, trigger, mutation status, and the closure of the replay session, which is nearly everything needed to call it. The one real gap is undefined behavior when no replay session is running.
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 takes zero parameters, so there are no parameter semantics to explain and the baseline is 4. Nothing in the description contradicts or confuses the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair (exit Replay mode, restore live real-time chart feed) that an agent can act on immediately. It is clearly distinguishable from sibling replay tools such as replay_start, replay_step, and replay_trade, which all move forward through a simulation.
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 WHEN TO USE clause gives an explicit trigger: finishing simulation practice to return the chart to live conditions. It does not name any alternative tool or a when-not condition (e.g. what to call instead if you want to inspect the session before ending it), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_tradeA
Execute a simulated trade action in replay mode (buy, sell, or close position). WHEN TO USE: Call when taking practice trades against historical bar replay data. SIDE EFFECTS: STATE_MUTATING (Updates simulated paper trading position in replay). LIMITATIONS: Requires Replay mode to be active.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Trade action: buy, sell, or close |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares STATE_MUTATING, explains that it updates a simulated paper-trading position, and states the replay-mode precondition. It stops short of describing failure behavior (e.g. what happens if replay is not active) or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by clearly labeled WHEN TO USE, SIDE EFFECTS, and LIMITATIONS sections. Every sentence earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, annotation-free mutation tool with no output schema, the description covers purpose, trigger, mutation semantics, and precondition. The only gap is the absence of any indication of the result of a successful or failed trade.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'action' parameter is already documented with its buy/sell/close values. The description repeats those values but adds no syntax, constraints, or defaults beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (execute), resource (simulated trade action), and scope (replay mode), plus the concrete actions buy/sell/close. It implicitly separates itself from replay_start/replay_step/replay_status siblings through the 'trade action in replay mode' framing, though it never names an alternative.
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 'WHEN TO USE' line gives a clear triggering context ('taking practice trades against historical bar replay data'). The LIMITATIONS line adds a precondition (replay mode must be active), but no explicit when-not or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_getA
Retrieve archived session briefing from local session history. Returns today's brief if available, otherwise previous session. WHEN TO USE: Call when reviewing past daily biases or comparing today's price action against previous morning briefings. SIDE EFFECTS: None (Read-only filesystem read). LIMITATIONS: Requires previously saved session file.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date string YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses that it is a read-only filesystem read, has no side effects, requires a previously saved session file, and falls back to the previous session when today's brief is unavailable. It does not cover authentication, rate limits, or exact return structure, but it is substantially transparent for a read-only retrieval 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 compact and front-loaded with the core action, followed by return behavior, usage guidance, side effects, and limitations. Every sentence adds useful information without 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?
For a one-parameter read tool with no output schema, the description explains what is returned and under what fallback condition. It could clarify how the optional date parameter interacts with the fallback behavior, but it is otherwise sufficient 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?
Schema description coverage is 100%, and the single date parameter is fully documented as YYYY-MM-DD with a default of today. The description adds no additional parameter meaning beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieve archived session briefing from local session history. It also clarifies the fallback return behavior. Sibling differentiation is limited because it does not explicitly compare itself to morning_brief or session_save, but the core 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?
Provides explicit WHEN TO USE guidance: reviewing past daily biases or comparing today's price action against previous morning briefings. It does not list when not to use the tool or name alternative siblings, so it stops short of a full routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_saveA
Save generated session brief markdown or analysis summary to local session archive (~/.tradingview-mcp/sessions/YYYY-MM-DD.json). WHEN TO USE: Call after completing a morning briefing or daily market analysis to archive observations for future reference. SIDE EFFECTS: EXTERNAL_SIDE_EFFECT (Writes session JSON file to local disk). LIMITATIONS: None.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date string YYYY-MM-DD. Defaults to today. | |
| brief | Yes | The brief text to save (output from morning_brief after Claude applies the rules). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares EXTERNAL_SIDE_EFFECT, specifies a local disk write, names the exact file naming scheme, and states limitations. It omits whether a save overwrites an existing same-date file, which is the main unresolved behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Labeled sections (WHEN TO USE, SIDE EFFECTS, LIMITATIONS) front-load the essential action and destination. Efficient overall, though 'LIMITATIONS: None' is filler that adds no information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter write with no output schema, the definition covers purpose, trigger condition, destination, and side effects. Gaps are minor: overwrite semantics and any confirmation of success are not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'date' and 'brief' including defaults and provenance. The description adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save) and resource (session brief/analysis summary) and gives the concrete destination path (~/.tradingview-mcp/sessions/YYYY-MM-DD.json). This clearly separates it from the sibling session_get, which reads rather than writes.
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?
An explicit WHEN TO USE clause ties invocation to completing a morning briefing or daily market analysis, which maps to the sibling morning_brief and archiving intent. It stops short of stating when NOT to use it (e.g. re-saving vs first save).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbol_infoA
Get comprehensive instrument metadata for the active symbol (ticker name, exchange, instrument type, tick size, currency, market hours). WHEN TO USE: Call when determining tick precision, pip calculation rules, or exchange session times. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires an active instrument loaded on chart.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so reasonably: it declares 'SIDE EFFECTS: None (Read-only)' and a precondition ('Requires an active instrument loaded on chart'). It could add what happens when no instrument is loaded, but the safety and prerequisite profile is disclosed.
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 compact, front-loaded segments (purpose, when-to-use, side effects/limitations) with zero filler. Each sentence earns its place and the returned fields are packed into the opening line.
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 tool with no output schema, the description covers purpose, the returned field set, usage triggers, safety profile, and a precondition — nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4. The description cannot add parameter meaning beyond the empty schema, and no schema gap exists to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get comprehensive instrument metadata for the active symbol') and enumerates exactly what is returned (ticker name, exchange, instrument type, tick size, currency, market hours). This clearly separates it from symbol_search, which finds symbols rather than describing the loaded 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?
The 'WHEN TO USE' clause gives concrete triggers (tick precision, pip calculation rules, exchange session times), which is more than a restatement. It does not name alternative tools explicitly, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbol_searchA
Search TradingView database for symbols, exchanges, and financial instruments matching a keyword query. WHEN TO USE: Call to resolve ambiguous ticker names or locate the exact exchange ticker (e.g. searching "crude oil" or "ES"). SIDE EFFECTS: None (Read-only). LIMITATIONS: Relies on TradingView symbol search backend.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type (e.g., "stock", "futures", "crypto", "forex") | |
| query | Yes | Search query (e.g., "AAPL", "crude oil", "ES") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses 'SIDE EFFECTS: None (Read-only)' and a limitation about relying on the TradingView search backend. That is real added value, but the limitation is vague and there is no disclosure of result ordering, match behavior, or what the response contains for an operation with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections that are easy to scan. Every line roughly earns its place, though the labeled structure is a bit formulaic for a two-parameter search.
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 2-parameter read operation, the description covers purpose, usage, safety, and a limitation. The main gap is the absence of any indication of what the results look like, which matters slightly given there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both query and type parameters documented and exemplified in the schema itself. The description's inline examples duplicate rather than extend that documentation, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search TradingView database for symbols, exchanges, and financial instruments matching a keyword query.' This is clear and actionable. However, it never references the sibling tool symbol_info, which is the obvious adjacent choice, so an agent gets no explicit differentiation between searching and looking up symbol details.
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 'WHEN TO USE' clause gives concrete conditions: resolving ambiguous ticker names or locating the exact exchange ticker, with examples ('crude oil', 'ES'). It lacks any when-not guidance or a named alternative (e.g., symbol_info for known tickers), so it clears the context bar but stops short of routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_closeA
Close the currently active chart tab in TradingView Desktop. WHEN TO USE: Call when finished with a temporary workspace tab to release system memory. SIDE EFFECTS: STATE_MUTATING (Closes active tab). LIMITATIONS: Will not close window if only one tab remains.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the mutation class (STATE_MUTATING) plus a genuine constraint (will not close the window when only one tab remains). It omits what happens to unsaved work or inactive tabs, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded labeled fragments (action, usage, side effects, limitations) with no filler; 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 zero-parameter tab tool with no output schema, the definition covers action, trigger, mutation class, and one edge-case limitation. Only the outcome after closing (return value / follow-up state) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and the description has no parameter semantics to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close the currently active chart tab') scoped to TradingView Desktop, which cleanly separates it from tab_switch, tab_new, and tab_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 WHEN TO USE line gives a real trigger ('finished with a temporary workspace tab to release system memory'), but it does not name an alternative tool or say when not to close a tab.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_listA
List all open TradingView desktop application tabs with index, title, and active focus status. WHEN TO USE: Call before managing application tabs to locate specific tab indices. SIDE EFFECTS: None (Read-only). LIMITATIONS: Operates across TradingView Desktop tabs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses side effects ('None (Read-only)') and scope limitations ('Operates across TradingView Desktop tabs'). It could add a note on whether the list reflects only the active window or ordering guarantees, so it is 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?
Three front-loaded sentences plus labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description reasonably names the returned fields, and it covers safety and scope for a zero-param read tool. Minor gaps remain around result ordering and multi-window behavior, but nothing critical 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 tool takes zero parameters, so the schema-side burden is nil and the baseline is 4. The description correctly implies a no-argument call and instead describes the shape of the result, which is the useful detail here.
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 ('List all open TradingView desktop application tabs') and enumerates the returned fields (index, title, active focus status). It is clearly distinguishable from siblings tab_new, tab_close, and tab_switch.
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 'WHEN TO USE' clause explicitly says to call it before managing tabs in order to locate tab indices, which gives real selection context. It does not name a specific alternative or state a when-not condition, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_newA
Open a new chart tab in TradingView Desktop window. WHEN TO USE: Call when opening a fresh chart workspace without disrupting the current tab. SIDE EFFECTS: STATE_MUTATING (Creates new desktop window tab). LIMITATIONS: TradingView Desktop must support multi-tab mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden: it labels the operation STATE_MUTATING, explains the concrete side effect (creates a new desktop window tab), and states a prerequisite (multi-tab mode support). It stops short of noting focus behavior or permission requirements, but the mutation profile is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action then uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections, which is easy to scan. 'Creates new desktop window tab' mildly restates the opening sentence, a small 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?
For a zero-parameter mutation tool with no annotations and no output schema, the description covers purpose, trigger, side effect, and limitation. A minor gap remains around what the new tab returns or whether it becomes focused, which could matter for chaining with tab_switch.
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 takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond the schema's empty property set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a new chart tab') within a clear context ('TradingView Desktop window'). The phrase 'without disrupting the current tab' implicitly distinguishes it from sibling tools like tab_switch and tab_close.
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 section gives a clear triggering condition (opening a fresh chart workspace). It does not name alternative sibling tools such as tab_switch or tab_list, so the agent must infer the boundary, but the core guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_switchA
Switch active desktop window focus to a target tab by index (0-based). WHEN TO USE: Call when toggling between multiple open chart tabs. SIDE EFFECTS: STATE_MUTATING (Changes active tab focus). LIMITATIONS: Index must be valid within tab_list.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Tab index (0-based, from tab_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose that this is STATE_MUTATING and that it changes active tab focus, which is the essential behavioral fact. It omits error behavior for out-of-range indices and whether prior tab state is preserved, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, labeled clauses (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with the core action front-loaded and zero filler. Every sentence adds usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with no output schema and no annotations, the description covers purpose, trigger, mutation semantics, and a validity constraint. Remaining gaps are minor edge-case details such as failure behavior on an invalid index.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'index' parameter is already documented as 0-based from tab_list, so the description largely repeats structured data. Baseline 3 applies because the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (switch) and resource (active tab focus) with the addressing scheme (0-based index), which cleanly separates it from siblings like tab_list, tab_new, tab_close, and pane_focus. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WHEN TO USE block gives an explicit trigger (toggling between multiple open chart tabs) and the LIMITATIONS line ties the input to tab_list as the source of valid indices. It stops short of naming alternatives (e.g., use tab_list first, or pane_focus for pane-level focus), so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_discoverA
Inspect and discover available TradingView internal API paths, chart widgets, and exposed methods in the active window context. WHEN TO USE: Call when debugging Charting API availability or probing supported internal features. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires an active, loaded chart page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does so well: it declares 'SIDE EFFECTS: None (Read-only)' and a concrete limitation ('Requires an active, loaded chart page'). It omits any note on what the discovery output actually contains, which is a minor gap.
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 tightly structured sentences with the core purpose front-loaded and labelled usage/side-effect/limitation blocks. Every sentence earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only introspection tool with no output schema, the description supplies purpose, usage, safety, and preconditions. It stops short of describing the shape of the returned path/method inventory, but that is a modest omission for a debug probe.
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 takes zero parameters, so the baseline is 4. No parameter explanation is needed and none is missing.
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 (Inspect/discover) and resource (TradingView internal API paths, chart widgets, exposed methods). It is distinguishable from most siblings, though it doesn't explicitly contrast itself with the nearby tv_health_check or tv_ui_state, which overlap in the introspection space.
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 'WHEN TO USE' block gives a clear condition (debugging Charting API availability, probing internal features). However, it names no alternatives or when-not conditions, so an agent must infer that it is not the tool for normal chart queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_health_checkA
Verify CDP connection liveness to TradingView Desktop and return active chart state. WHEN TO USE: Call at session start or when diagnosing connectivity failures before attempting chart commands. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires TradingView Desktop running with remote debugging enabled on port 9222.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does it well: SIDE EFFECTS: None (Read-only) and LIMITATIONS naming the port 9222 remote-debugging prerequisite. This discloses the safety profile and a real operational precondition. It could go further on what happens on failure (error shape), so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three labeled clauses (purpose, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with zero filler and the core purpose front-loaded. 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?
Complete for a zero-arg read-only probe: it states what it verifies, when to call it, prerequisites, and that it returns chart state. With no output schema, the exact return shape is only summarily described, 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?
Zero parameters, so per the rubric the baseline is 4. No parameter meaning needs adding.
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 ('Verify CDP connection liveness to TradingView Desktop') and adds that it returns active chart state. This distinguishes it from connectivity-adjacent siblings like tv_discover and chart_get_state by being a health/liveness probe.
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 clause: at session start or when diagnosing connectivity failures before attempting chart commands. This names the triggering conditions clearly enough to route against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_launchA
Launch TradingView Desktop with Chrome DevTools Protocol (remote debugging) enabled on target port. Auto-detects executable path across Windows, macOS, and Linux. WHEN TO USE: Call automatically when tv_health_check fails due to TradingView not running. SIDE EFFECTS: EXTERNAL_SIDE_EFFECT (Spawns desktop application process, optionally terminates existing instances). LIMITATIONS: Requires TradingView Desktop to be installed on the local system.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | CDP port (default 9222) | |
| kill_existing | No | Kill existing TradingView instances first (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the EXTERNAL_SIDE_EFFECT (spawning a process, optionally terminating existing instances) and a prerequisite limitation (TradingView must be installed). It stops short of stating idempotency or expected startup latency/return behavior, so not quite perfect for an un-annotated 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?
Front-loaded with the core action, then cleanly delimited WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks. Every sentence earns its place with no 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?
For a two-optional-parameter launch tool with no output schema, the description covers what it does, the trigger, side effects, and the installation prerequisite. Nothing an agent needs to decide and invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both optional parameters (port, kill_existing) are already documented, establishing the baseline of 3. The description echoes 'target port' and 'terminates existing instances' but adds no format, range, or default nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Launch) and resource (TradingView Desktop) and immediately narrows scope with the CDP/remote-debugging detail on a target port. This is clearly distinguishable from siblings like tv_health_check and tv_discover, which check or locate rather than spawn the app.
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 an explicit trigger condition: call when tv_health_check fails because TradingView is not running, naming the sibling that precedes it. Nothing about when to invoke is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_ui_stateA
Get real-time UI state of TradingView window: detects open/closed bottom panels, visible dialogs, active tabs, and enabled control buttons. WHEN TO USE: Call before interacting with UI panels (Pine Editor, Strategy Tester) to ensure target DOM elements are present. SIDE EFFECTS: None (Read-only). LIMITATIONS: Assumes standard desktop window hierarchy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the safety profile ('SIDE EFFECTS: None (Read-only)') and a real limitation ('Assumes standard desktop window hierarchy'), which is meaningful. However, with no output schema it never describes the shape of the returned state, nor failure behavior when the window hierarchy is non-standard, leaving the behavioral picture partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then clearly labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks. Every clause carries information and there is no filler or repetition.
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 a 0-param tool with no annotations and no output schema, the description covers purpose, invocation timing, safety, and a caveat, which is close to complete. The remaining gap is the return structure — what keys/state fields the agent can expect — which the missing output schema leaves to the description to supply.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. No parameter-level confusion is possible.
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 ('Get') and resource ('real-time UI state of TradingView window') and enumerates exactly what it detects: bottom panels, dialogs, tabs, and control buttons. It doesn't explicitly differentiate itself from related siblings like tab_list, pane_list, or ui_find_element, which also expose UI/panel state, so an agent must infer the boundary.
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 'WHEN TO USE' clause gives clear context: call before interacting with UI panels (Pine Editor, Strategy Tester) to confirm target DOM elements exist. It lacks any explicit when-not condition or named alternative (e.g., ui_find_element for a specific element), so the routing guidance is helpful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_clickA
Click a TradingView DOM element matching selector strategy (aria-label, data-name, text, class-contains). WHEN TO USE: Call when interacting with custom buttons, dropdowns, or navigation elements not covered by high-level tools. SIDE EFFECTS: STATE_MUTATING (Dispatches click event to DOM element). LIMITATIONS: Target element must be present in DOM.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Selector strategy | |
| value | Yes | Value to match against the chosen selector strategy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares SIDE EFFECTS (STATE_MUTATING) with a concrete mechanism (dispatches a click event) and a LIMITATION (target must exist in DOM). It stops short of describing failure behavior, whether it waits for the element, or whether it scrolls into view first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then segmented into WHEN TO USE, SIDE EFFECTS, and LIMITATIONS labels. Three short sentences, each carrying distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description supplies the essential behavioral context (state mutation, DOM precondition) that structured fields lack. Minor gaps remain around post-click confirmation or expected failure modes, but nothing critical for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum already documents the four selector strategies, so the schema does the heavy lifting. The description restates the same strategies in the parenthetical list without adding format, matching rules, or precedence guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Click) plus resource (TradingView DOM element) and names the selector strategies available. An agent can distinguish this from high-level interaction tools such as chart_set_symbol. However, it never explicitly distinguishes itself from close siblings like ui_mouse_click or ui_find_element, leaving the boundary to inference.
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 clause: custom buttons, dropdowns, or navigation elements not covered by high-level tools. That gives a clear selection condition, but it names no specific alternative tool (e.g. ui_mouse_click for coordinates, ui_find_element for locating first) and states no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_evaluateA
Evaluate arbitrary JavaScript expression directly in the TradingView page context. WHEN TO USE: Call for specialized low-level browser automation or retrieving unexposed DOM properties. SIDE EFFECTS: STATE_MUTATING (Arbitrary JavaScript execution in page context). LIMITATIONS: Advanced tool; expressions run within page sandbox.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | JavaScript expression to evaluate in the page context. Wrap in IIFE for complex logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the crucial behavioral trait: SIDE EFFECTS: STATE_MUTATING via arbitrary JS in page context, plus a LIMITATIONS note about the page sandbox. It stops short of covering return behavior, error handling, or what happens when the expression throws.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in one sentence, then uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections that are easy to scan. Tight and free of filler, though the sections are terse enough that some depth is traded for brevity.
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, output-schema-less execution tool, the description covers purpose, trigger context, mutation risk, and sandbox limitation. Nothing essential to invoking it correctly is missing, though the absence of return-value framing leaves a small 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?
Schema description coverage is 100% and there is a single required parameter whose schema text already explains the IIFE-wrapping convention. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (evaluate) and resource (arbitrary JavaScript expression in the TradingView page context), which is clear and self-contained. It does not explicitly name sibling tools like ui_click or ui_find_element, but the 'specialized low-level browser automation' framing implicitly separates it from the standard UI tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WHEN TO USE clause gives a concrete context: 'specialized low-level browser automation or retrieving unexposed DOM properties.' This tells the agent when the escape-hatch tool is warranted, though it names no explicit alternative or when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_find_elementA
Locate a UI element by text, aria-label, or CSS selector and return its bounding box coordinates and visibility. WHEN TO USE: Call to verify element existence and obtain coordinates before clicking or hovering. SIDE EFFECTS: None (Read-only DOM query). LIMITATIONS: Scans active DOM tree.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text content, aria-label value, or CSS selector to search for | |
| strategy | No | Search strategy (default: text) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the safety profile ('SIDE EFFECTS: None (Read-only DOM query)') plus a scope limitation ('Scans active DOM tree'). It stops short of covering failure behavior when an element is not found or any performance/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and return value, then tacks on labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS clauses. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to name the return values, and it covers safety and scope limitations for a two-parameter read tool. Minor gap: no mention of behavior when no element matches the query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the query and strategy parameters plus the enum values are already documented. The description restates the three lookup strategies but adds no format syntax, matching precedence, or default behavior beyond the schema, so it meets the baseline only.
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 (Locate) and resource (UI element) plus the exact return payload (bounding box coordinates and visibility). This makes it clearly distinguishable from siblings like ui_click, ui_hover, and ui_evaluate, which act rather than locate.
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 'WHEN TO USE' clause explicitly positions it as a prerequisite for clicking or hovering, naming the alternatives. It does not state when-not to use it (e.g., deferring to ui_evaluate for scripted DOM queries), so it falls just short of an exhaustive routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_fullscreenA
Toggle TradingView window chart fullscreen mode. WHEN TO USE: Call when expanding chart canvas for clean screenshot captures or presentation view. SIDE EFFECTS: STATE_MUTATING (Toggles fullscreen mode). LIMITATIONS: None.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical trait: STATE_MUTATING, toggling fullscreen. 'Toggles' also hints that a repeated call reverts the state. It stops short of stating whether a chart/tab must be active or focused, and 'LIMITATIONS: None' is uninformative filler.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then labeled WHEN TO USE and SIDE EFFECTS sections. Very compact; only the 'LIMITATIONS: None' line fails to earn 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 zero-parameter, no-output-schema toggle, the description covers what it does, when to call it, and that it mutates state — enough to invoke correctly. Minor gap: no confirmation of what state is left in or any precondition about an open chart.
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?
Zero parameters, so there is no schema semantics to compensate for; the baseline of 4 applies. Nothing about arguments is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Toggle TradingView window chart fullscreen mode.' No sibling tool in the list performs fullscreen control, so the agent can identify it immediately from the name plus description.
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?
'WHEN TO USE' gives concrete triggers: expanding the chart canvas for clean screenshot captures or presentation view. Clear context, but no explicit when-not or alternative (e.g. capture_screenshot without fullscreen) is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_hoverA
Dispatch mouse move event to hover over a UI element matching selector strategy. WHEN TO USE: Call to trigger tooltips, dropdown menus, or interactive hover states. SIDE EFFECTS: STATE_MUTATING (Dispatches mouse move events). LIMITATIONS: Element must be rendered in DOM.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Selector strategy | |
| value | Yes | Value to match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavioral traits: STATE_MUTATING side effects, the dispatched event type, and a LIMITATIONS constraint (element must be in DOM). It stops short of noting permissions, return values, or whether the hover is verified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then cleanly sectioned into WHEN TO USE / SIDE EFFECTS / LIMITATIONS. Every sentence earns its place with no padding.
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 two-param action tool with no output schema, the definition covers purpose, usage, side effects, and a limitation. It lacks any note on the absence of a return confirmation, but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum for 'by' is fully documented in the schema, so the description adds little beyond reiterating 'selector strategy'. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Dispatch mouse move event') and resource ('hover over a UI element'), and the mechanism (hover, not click) clearly distinguishes it from siblings like ui_click and ui_mouse_click without opening their schemas.
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 'WHEN TO USE' clause gives clear context — triggering tooltips, dropdowns, or hover states. However, it names no alternative tool or exclusion condition, which is notable given the crowded UI sibling set (ui_click, ui_mouse_click, ui_find_element).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_keyboardA
Dispatch native keyboard key press or key combination (e.g., Enter, Escape, Alt+S, Ctrl+Z) via CDP Input domain. WHEN TO USE: Call when triggering application keyboard shortcuts or dismissing modals. SIDE EFFECTS: STATE_MUTATING (Dispatches keystroke events to focused window element). LIMITATIONS: Requires appropriate window focus.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press (e.g., "Enter", "Escape", "Tab", "a", "ArrowUp") | |
| modifiers | No | Modifier keys to hold (e.g., ["ctrl", "shift"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares STATE_MUTATING and notes that keystroke events are dispatched to the focused window element, plus the precondition that window focus is required. It stops short of describing failure behavior, blocking/timing, or what events fire if no element is focused.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action sentence, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks. Every sentence is load-bearing; no filler or restated metadata.
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 two-parameter, no-output-schema UI action tool, the description covers purpose, timing, mutation semantics, and preconditions adequately. The only real gap is ambiguity around combining the key string with the modifiers array, which neither the description nor the schema resolves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, making 3 the baseline. The description's examples ('Alt+S', 'Ctrl+Z') slightly overlap the separate modifiers parameter and could imply an either/or notation, but it adds no semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Dispatch native keyboard key press or key combination') with concrete examples (Enter, Escape, Alt+S, Ctrl+Z) and names the underlying mechanism (CDP Input domain). It implicitly separates itself from the neighboring ui_type_text by focusing on single keys/shortcuts, but never names that sibling, so the differentiation is inferential rather than explicit.
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 'WHEN TO USE' clause gives a clear positive condition: triggering application keyboard shortcuts or dismissing modals. It does not state when-not to use it or point to the obvious alternative (ui_type_text for string entry), so the routing guidance is present but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_mouse_clickA
Dispatch mouse click event at exact pixel coordinates (x, y) on the window canvas. WHEN TO USE: Call when clicking a non-DOM canvas target or specific pixel coordinate. SIDE EFFECTS: STATE_MUTATING (Dispatches mouse click at coordinate). LIMITATIONS: Coordinates must be within viewport bounds.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate (pixels from left) | |
| y | Yes | Y coordinate (pixels from top) | |
| button | No | Mouse button (default left) | |
| double_click | No | Double click (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a SIDE EFFECTS (STATE_MUTATING) and a LIMITATIONS constraint (coordinates must be in viewport bounds). It omits other behavioral traits an agent would want: whether the click requires window/pane focus, whether it blocks until the event is processed, and what happens on out-of-bounds coordinates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks that are easy to scan. The SIDE EFFECTS line partially restates the opening sentence ("Dispatches mouse click at coordinate") but overall there is little 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?
Four parameters at full schema coverage plus disclosed side effect and a viewport-bound limitation make this adequate for a simple click tool. However, with no annotations and no output schema, the description never says what the tool returns or how success/failure is signaled, leaving a gap in the behavioral picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so x, y, button and double_click are already documented with units and defaults in the schema. The description only restates the x/y coordinate pair and adds no syntax or semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Dispatch mouse click event") plus the precise targeting mechanism ("exact pixel coordinates on the window canvas"). The canvas/pixel framing implicitly separates it from the DOM-oriented sibling `ui_click`, though it never names that 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?
"WHEN TO USE: Call when clicking a non-DOM canvas target or specific pixel coordinate" gives a clear positive condition that effectively excludes DOM targets. It stops short of naming the alternative tool (`ui_click`) or stating explicit when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_open_panelA
Open, close, or toggle bottom dock panels in TradingView window (pine-editor, strategy-tester, watchlist, alerts, trading). WHEN TO USE: Call before interacting with Pine Editor or Strategy Tester to ensure panel visibility. SIDE EFFECTS: STATE_MUTATING (Alters bottom panel visibility state). LIMITATIONS: Supported panels: pine-editor, strategy-tester, watchlist, alerts, trading.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | Panel name | |
| action | Yes | Action to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the key trait: SIDE EFFECTS: STATE_MUTATING, altering bottom panel visibility. The LIMITATIONS section bounds the panel set. It doesn't say whether the operation is idempotent or what it returns, but the mutation profile is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections. Efficient, though the labeled format is slightly verbose for a two-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 tool with no output schema and no annotations, the description covers purpose, trigger conditions, side effects, and supported values. Coverage is solid; only return behavior and failure modes are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enums on both parameters, so the schema already documents panel names and actions. The description's supported-panel list merely restates the enum values, adding no syntax or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action set (open/close/toggle) on a specific resource (bottom dock panels) and enumerates the supported panels, which cleanly distinguishes it from UI siblings like ui_fullscreen and pane_set_layout. An agent can tell at a glance that this controls bottom-panel visibility.
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 WHEN TO USE clause gives a concrete trigger: call before interacting with Pine Editor or Strategy Tester. It lacks explicit exclusions or named alternatives for the other three panels, but the primary workflow guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_scrollA
Dispatch mouse wheel scroll events across chart canvas or page in specified direction. WHEN TO USE: Call when scrolling through long lists, logs, or panning canvas. SIDE EFFECTS: STATE_MUTATING (Dispatches wheel events). LIMITATIONS: Default amount is 300px.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Scroll amount in pixels (default 300) | |
| direction | Yes | Scroll direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden and does self-declare the critical trait: 'SIDE EFFECTS: STATE_MUTATING (Dispatches wheel events).' It also states the default amount, but omits focus/targeting prerequisites (which element or window must be active) and any rate or reliability notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS sections that make it highly scannable. The LIMITATIONS line slightly duplicates the schema default, and 'in specified direction' is redundant, but overall it is 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 simple 2-parameter, 100%-covered tool with no output schema, the description covers purpose, invocation context, side-effect class, and a limitation. Only focus/targeting prerequisites are missing for a UI-automation action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, including the enum of directions and the 300px default. The description restates 'in specified direction' and the 300px default without adding format or usage nuance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Dispatch mouse wheel scroll events across chart canvas or page in specified direction.' An agent can distinguish this from click/hover siblings by the scroll-specific verb, though no sibling is named explicitly to route among the many ui_* and chart_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'WHEN TO USE' clause scopes it to scrolling long lists, logs, or panning canvas, which is concrete context. It lacks any when-not or alternative-tool guidance (e.g. vs chart_scroll_to_date or ui_keyboard), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_type_textA
Type text characters directly into currently focused input or textarea element via CDP Input domain. WHEN TO USE: Call when filling out search fields, alert parameters, or text inputs. SIDE EFFECTS: STATE_MUTATING (Inserts text into focused DOM field). LIMITATIONS: Target element must be actively focused.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type into the focused element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does well: it explicitly labels the effect STATE_MUTATING and states the focus precondition. Gaps remain on failure behavior when nothing is focused and whether existing text is replaced or appended, which matter for a text-injection 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?
Three short labeled clauses (core action, WHEN TO USE, SIDE EFFECTS, LIMITATIONS) with the verb and target front-loaded. No filler sentences.
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-param, no-output-schema tool with no annotations, the description covers purpose, usage, mutation semantics, and precondition. Only the error/lack-of-focus behavior and replace-vs-append semantics are 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?
Only one parameter, and schema description coverage is 100% ('Text to type into the focused element'). The description adds no syntax, escaping, or formatting guidance beyond the schema, so the schema does all the work — baseline 3.
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 ('Type text characters') and resource ('currently focused input or textarea element'), with implementation context (CDP Input domain). It is not confused with ui_keyboard in the description, though it never explicitly distinguishes itself from that close sibling, which also injects input.
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?
'WHEN TO USE' enumerates concrete scenarios (search fields, alert parameters, text inputs), and 'LIMITATIONS' gives the precondition that the target must be focused. It stops short of naming alternatives (e.g., ui_keyboard or ui_evaluate) for cases where focus or text injection differs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_addA
Add a financial instrument/ticker to the active TradingView watchlist. WHEN TO USE: Call when tracking a newly discovered symbol for continued monitoring. SIDE EFFECTS: STATE_MUTATING (Adds symbol to user watchlist). LIMITATIONS: Symbol must be valid on TradingView.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol to add (e.g., AAPL, BTCUSD, ES1!, NYMEX:CL1!) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key trait via 'SIDE EFFECTS: STATE_MUTATING' plus a validity constraint. However it omits idempotency (behavior when the symbol is already present), error behavior, and which watchlist is targeted if multiple 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?
Purpose is front-loaded, followed by labeled WHEN/SIDE EFFECTS/LIMITATIONS sections. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers purpose, trigger, mutation side effect, and a validity constraint. It is nearly self-sufficient, only missing idempotency/error detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single param already carries format examples (AAPL, BTCUSD, ES1!, NYMEX:CL1!). The description adds no syntax or format meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb ('Add') and resource ('financial instrument/ticker to the active TradingView watchlist'), so an agent immediately knows this is the write counterpart to watchlist_get. It stops short of naming that sibling explicitly, but the scope is 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?
'WHEN TO USE: Call when tracking a newly discovered symbol for continued monitoring' gives a clear triggering context. It does not name alternatives (e.g., watchlist_get for reading) or state when NOT to call, so it falls short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_getA
Get all financial symbols from current TradingView watchlist with real-time last price, absolute price change, and percentage change. WHEN TO USE: Call when scanning market watchlists or monitoring asset universe for opportunities. SIDE EFFECTS: None (Read-only). LIMITATIONS: Requires watchlist to have symbols loaded.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so reasonably: it declares SIDE EFFECTS as None (Read-only) and a LIMITATIONS prerequisite that the watchlist must have symbols loaded. It stops short of describing error behavior or empty-watchlist handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose then uses labeled WHEN TO USE / SIDE EFFECTS / LIMITATIONS blocks, so an agent can scan it quickly. Slightly verbose in restating the returned fields, but every section 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 zero-parameter read tool with no output schema and no annotations, the description covers purpose, when-to-use, read-only safety, and the prerequisite. It could note failure/empty behavior, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so there is no parameter semantics to document (baseline 4). The description instead documents the output fields (last price, absolute and percentage change), which adds useful meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (all financial symbols from current TradingView watchlist) and even enumerates the returned data (last price, absolute/percentage change). It is clearly distinguishable from the sibling watchlist_add, though it does not name alternatives explicitly.
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 'WHEN TO USE' line gives a concrete usage context (scanning watchlists, monitoring the asset universe for opportunities), which is more than implied guidance. However, it offers no alternative tool or when-not-to-use exclusion to route against siblings like symbol_info or quote_get.
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.
90 tool updates
v1.0.0- First observed
alert_create - First observed
alert_delete - First observed
alert_list - First observed
batch_run - First observed
capture_screenshot - First observed
chart_get_multi_timeframe - First observed
chart_get_snapshot - First observed
chart_get_state - First observed
chart_get_state_diagnostics - First observed
chart_get_visible_range - First observed
chart_manage_indicator - First observed
chart_scroll_to_date - First observed
chart_set_symbol - First observed
chart_set_timeframe - First observed
chart_set_type - First observed
chart_set_visible_range - First observed
data_get_equity - First observed
data_get_indicator - First observed
data_get_ohlcv - First observed
data_get_pine_boxes - First observed
data_get_pine_labels - First observed
data_get_pine_lines - First observed
data_get_pine_tables - First observed
data_get_strategy_results - First observed
data_get_study_values - First observed
data_get_trades - First observed
depth_get - First observed
draw_clear - First observed
draw_get_properties - First observed
draw_list - First observed
draw_remove_one - First observed
draw_shape - First observed
indicator_set_inputs - First observed
indicator_toggle_visibility - First observed
layout_list - First observed
layout_switch - First observed
market_compare_timeframes - First observed
market_detect_structure - First observed
market_detect_zones - First observed
market_get_context - First observed
market_get_recent_changes - First observed
market_get_smart_volume - First observed
morning_brief - First observed
pane_focus - First observed
pane_list - First observed
pane_set_layout - First observed
pane_set_symbol - First observed
pine_analyze - First observed
pine_check - First observed
pine_compile - First observed
pine_get_console - First observed
pine_get_errors - First observed
pine_get_source - First observed
pine_list_scripts - First observed
pine_new - First observed
pine_open - First observed
pine_save - First observed
pine_set_source - First observed
pine_smart_compile - First observed
quote_get - First observed
replay_autoplay - First observed
replay_start - First observed
replay_status - First observed
replay_step - First observed
replay_stop - First observed
replay_trade - First observed
session_get - First observed
session_save - First observed
symbol_info - First observed
symbol_search - First observed
tab_close - First observed
tab_list - First observed
tab_new - First observed
tab_switch - First observed
tv_discover - First observed
tv_health_check - First observed
tv_launch - First observed
tv_ui_state - First observed
ui_click - First observed
ui_evaluate - First observed
ui_find_element - First observed
ui_fullscreen - First observed
ui_hover - First observed
ui_keyboard - First observed
ui_mouse_click - First observed
ui_open_panel - First observed
ui_scroll - First observed
ui_type_text - First observed
watchlist_add - First observed
watchlist_get
TDQS
Scored across 90 tools
Many tools are distinct, but with 90 tools there is notable overlap: multiple state/diagnostic tools (chart_get_state, chart_get_snapshot, chart_get_state_diagnostics, tv_health_check), multiple compile tools (pine_compile, pine_smart_compile, pine_check), and multiple click tools (ui_click, ui_mouse_click). Descriptions with WHEN TO USE help mitigate but ambiguity remains.
Consistent snake_case with prefix_verb_noun pattern across all domains (chart_, pine_, data_, draw_, etc.). Minor variations like get_ vs set_ but consistent within prefixes.
90 tools is excessive for a single MCP server, far beyond the typical 3-15 range. While the domain is complex, many low-level UI automation tools could be consolidated, making the set unwieldy for an agent.
Covers chart manipulation, data extraction, Pine Script editing, drawings, alerts, replay, panes, tabs, layouts, watchlists, session archiving, and market analysis. No obvious gaps in lifecycle coverage for a TradingView automation server.
Maintenance
Related MCP Connectors
- openhelmOAuthai.openhelm
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables automated control of TradingView Desktop via Chrome DevTools Protocol with 78+ tools for chart manipulation, Pine Script development, and indicator analysis. Supports automated morning briefs for session bias generation, replay trading practice, and multi-pane layouts with secure local-only data processing.2-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with TradingView Desktop via Chrome DevTools Protocol for automated morning briefs, chart analysis, Pine script development, and trading workflows.132 npm-
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with TradingView Desktop charts via Chrome DevTools Protocol, supporting chart analysis, Pine Script development, drawing, alerts, and replay automation.132 npm-
- FlicenseBqualityBmaintenanceEnables AI-assisted chart analysis, Pine Script development, and live order execution on TradingView Desktop via Chrome DevTools Protocol, supporting connected brokers for trading workflows.97132 npm-