Skip to main content
Glama
FerroxLabs

TVControl

by FerroxLabs

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
tv_health_checkB

Check CDP, TradingView market-data connection, compatibility, and current chart state

tv_chart_healthA

Check whether each chart pane has a live data session. Finds the failure where ONE pane sits in a reconnect loop forever while the rest of the layout is fine: a study whose id never registered with the server kills that pane's session on every reconnect, and the pane cannot recover on its own. Read-only. Use tv_repair_chart to fix what this reports.

tv_repair_chartA

Repair a chart pane stuck in a reconnect loop, without rebuilding the layout. Removes the studies whose id never registered with the server (they are what kill the session on every reconnect) and reconnects the pane. Names every study it removes so you can add them back with indicator_add_from_search. Run tv_chart_health first, or pass dry_run to see the plan.

tv_discoverA

Report which known TradingView API paths are available and their methods

tv_compatibility_checkB

Canary for critical TradingView internal APIs used by TVControl. Reports the Desktop version and exactly which required capabilities are missing.

tv_capability_matrixB

Map every TVControl tool to its required TradingView APIs and report which tools are currently available or blocked.

tv_support_bundleA

Create a privacy-safe compressed diagnostics bundle with identifiers, source code, URLs, titles, and secret-like values removed.

tv_compatibility_snapshotA

Record, compare, or list immutable per-version TradingView API compatibility baselines. Critical failures and informational method drift are reported separately.

tv_watchdog_sampleA

Run one read-only health watchdog sample. Persists only state transitions and never chart symbols, URLs, or account data.

tv_watchdog_startA

Start the read-only in-process health watchdog. Samples are coalesced and only state transitions are persisted.

tv_watchdog_stopA

Stop the in-process health watchdog

tv_watchdog_statusB

Return watchdog runtime status and its latest privacy-safe sample

tv_watchdog_historyC

Return bounded privacy-safe watchdog state-transition history

tv_ui_stateA

Get current UI state: which panels are open, what buttons are visible/enabled/disabled

tv_launchA

Launch TradingView Desktop with Chrome DevTools Protocol (remote debugging) enabled. Auto-detects install location on Mac, Windows, and Linux.

tv_updateA

Safely fast-forward a clean git checkout from its configured upstream. Refuses package installs, untracked branches, dirty trees, and diverged history.

chart_get_stateA

Get current chart state (symbol, timeframe, chart type, indicators)

chart_set_symbolC

Change the chart symbol

chart_set_timeframeB

Change the chart timeframe/resolution

chart_set_typeC

Change chart type

chart_manage_indicatorB

Add or remove an indicator/study on the chart

chart_get_visible_rangeA

Get the visible date range (unix timestamps) and bars range on the chart

chart_set_visible_rangeB

Zoom the chart to a specific date range (unix timestamps)

chart_scroll_to_dateA

Jump the chart view to center on a specific date

symbol_infoA

Get detailed metadata about the current symbol (name, exchange, type, description)

symbol_searchB

Search for symbols by name or keyword

pine_get_sourceA

Get current Pine Script source code from the editor

pine_set_sourceA

Set Pine Script source code in the editor. Refuses to overwrite a buffer holding real content unless confirm_overwrite is set.

pine_compileA

Compile the current Pine Script and add it to the chart. WARNING: this SAVES first, clicking Save and add to chart, which persists the current editor buffer to the saved script it is bound to.

pine_get_errorsB

Get Pine Script compilation errors from Monaco markers

pine_saveA

Save the current Pine Script buffer to the saved script the editor is bound to. WARNING: this persists to the cloud and overwrites that script. Verified by reading the editor Save/Saved state; an unverified save is never reported as success.

pine_get_consoleB

Read Pine Script console/log output (compile messages, log.info(), errors)

pine_smart_compileB

Intelligent compile: detects button, compiles, checks errors, reports study changes WARNING: like pine_compile this SAVES the current buffer to the bound saved script before compiling.

pine_newA

Replace the Pine editor buffer with a blank template. WARNING: this does NOT create a new saved script. It overwrites whatever script the editor currently has open, and a following pine_save or pine_compile persists that overwrite to the cloud. It refuses to run when the buffer holds real content unless confirm_overwrite is set.

pine_openA

Load a saved Pine Script into the editor buffer. THIS REPLACES THE BUFFER and does not guarantee the editor is bound to that script - check binding_verified before any pine_save. To READ a script with no buffer risk, use pine_get_script_source instead.

pine_get_script_sourceA

Read a saved Pine Script's source over the REST API WITHOUT touching the editor buffer. Use this to compare a saved script against a local file or audit what is deployed - it cannot destroy unsaved work and cannot mis-bind the editor.

pine_list_scriptsA

List saved Pine Scripts. Returns a page, not the whole library — pass name_filter to find one by name.

pine_analyzeA

Run static analysis on Pine Script code WITHOUT compiling — catches array out-of-bounds, unguarded array.first()/last(), bad loop bounds, and implicit bool casts. Works offline, no TradingView connection needed.

pine_checkA

Compile Pine Script via TradingView's server API without needing the chart open. Returns compilation errors/warnings. Useful for validating code before injecting into the chart.

data_get_ohlcvA

Get OHLCV bar data from the chart. Use summary=true for compact stats instead of all bars (saves context).

data_get_indicatorC

Get indicator/study info and input values

data_get_strategy_resultsA

Get strategy performance metrics. Pass entity_id when more than one strategy is loaded. Auto-opens Strategy Tester and unhides the selected strategy so TradingView computes its report.

data_get_tradesA

Get the most recent strategy orders. Pass entity_id when more than one strategy is loaded. Auto-opens Strategy Tester and unhides the selected strategy.

data_get_equityA

Get equity curve data from Strategy Tester. Pass entity_id when more than one strategy is loaded.

quote_getA

Get quote data. A different symbol briefly switches the chart, serializes concurrent quote calls, and restores the original chart.

depth_getA

Get order book / DOM (Depth of Market) data from the chart

quote_batchA

Get live quotes for MANY symbols in ONE request without touching the chart. Use this for watchlist and universe sweeps: 29 symbols return in about 270ms. quote_get switches the chart symbol and takes ~20s each, so never loop it.

data_get_pine_linesA

Read horizontal price levels drawn by Pine Script indicators (line.new). Returns deduplicated price levels per study. Use study_filter to target a specific indicator.

data_get_pine_labelsA

Read text labels drawn by Pine Script indicators (label.new). Returns text and price pairs. Use study_filter to target a specific indicator.

data_get_pine_tablesA

Read table data drawn by Pine Script indicators (table.new). Returns formatted text rows per table. Use study_filter to target a specific indicator.

data_get_pine_boxesA

Read box/zone boundaries drawn by Pine Script indicators (box.new). Returns deduplicated {high, low} price zones. Use study_filter to target a specific indicator.

data_get_study_valuesA

Get current indicator values from the data window for all visible studies (RSI, MACD, Bollinger Bands, EMAs, custom indicators with plot()).

capture_screenshotA

Take a screenshot of the TradingView chart. REFUSES on a hidden tab, because a hidden tab returns the last frame it painted - a real PNG of the right chart showing stale data. region:"chart" captures the ACTIVE pane and reports which selector found it.

draw_shapeA

Draw a shape/line on the chart. The created shape name is read back and an unrecognised name is REFUSED rather than silently becoming a flag.

draw_listA

List shapes/drawings on the ACTIVE PANE ONLY. On a multi-pane layout the other panes are not included and a count of 0 does NOT mean the chart is empty: use pane_list to see every pane and pane_focus to switch.

draw_clearA

Remove ALL drawings from the ACTIVE PANE. On a multi-pane layout this is NOT the whole chart: use pane_list to see the panes and pane_focus to pick one first. DESTRUCTIVE and there is no undo through this API: every trendline, level and annotation on the active chart is deleted, not just ones you added. Use draw_remove_one with an entity_id to remove a single drawing.

draw_remove_oneA

Remove a specific drawing by entity ID

draw_get_propertiesA

Get properties and points of a specific drawing

alert_createB

Create a price alert on the current chart using TradingView's authenticated alert API

alert_create_bulkA

Create price alerts across MANY symbols, or the whole watchlist, in one call. Does NOT touch the chart. Each alert can carry a webhook URL so every fire posts to your own endpoint instead of your inbox. Use percent_from_last to set a level per symbol from its live price, which is the only thing that makes sense across a mixed watchlist.

alert_listA

List active alerts

alert_deleteC

Delete all alerts or open context menu for deletion

alert_delete_by_idA

Delete a single alert by ID

batch_runB

Run an action across multiple symbols and/or timeframes

replay_startA

Start bar replay mode, optionally at a specific date. A date outside this symbol/timeframe replay depth is REFUSED rather than silently relocated - every read taken after a relocation is correct for a date you did not ask for.

replay_stepA

Advance one bar in replay mode

replay_autoplayA

Turn autoplay on or off in replay mode, optionally setting the speed. Pass enabled to say which state you want; omit it to flip whatever the current state is. Confirms the result by reading autoplay back.

replay_stopA

Stop replay and return to realtime

replay_tradeB

Execute a trade action in replay mode (buy, sell, or close position)

replay_statusA

Get current replay mode status

indicator_searchA

Search TradingView built-in, community, strategy, and saved-script studies. An empty result is only trustworthy when it comes back with verified_empty - a control query is run first to prove the catalogue is loaded, because a private script that has not finished loading looks exactly like one the account does not have. Without that flag, treat a zero as unknown, not as absence.

indicator_add_from_searchA

Search the TradingView Indicators dialog and add a matching built-in, strategy, community, or saved study

indicator_get_inputsA

Read a study's current input values back. Use this to confirm indicator_set_inputs landed, to detect settings changed by hand, or to record the configuration a result was produced under.

indicator_set_inputsB

Change indicator/study input values (e.g., length, source, period)

indicator_toggle_visibilityA

Show, hide, or flip an indicator on the chart. Omit visible to toggle. Confirms the result by reading the study back rather than trusting setVisible().

watchlist_listA

List every custom watchlist on the account with its id, name and symbol count. Use this before scanning: watchlist_get answers "whatever is active", which can name a different list than the panel is showing. Names are not unique, so resolve by id.

watchlist_createA

Create a NEW named watchlist, optionally populated in one call. Use this to build a user a list from scratch - watchlist_import and watchlist_add_bulk only write into whichever list is already active, so neither can make one. Returns the new id; pin by id, never by name.

watchlist_get_by_idA

Get one watchlist's membership by explicit id (or exact name). This is what a universe scan should use - it is verifiable, where "active" is not. Refuses rather than guessing when a name matches more than one list.

watchlist_getA

Get every symbol in the active TradingView watchlist. Membership comes from the symbols_list API so it is complete even when the panel is scrolled or closed. Quote cells are best effort and only present when the watchlist panel is open; check quotes_available.

watchlist_addA

Add a symbol to the TradingView watchlist

watchlist_add_bulkA

Add multiple symbols sequentially and report per-symbol results

watchlist_removeB

Remove a symbol from the TradingView watchlist

watchlist_remove_bulkA

Remove multiple symbols sequentially and report per-symbol results

watchlist_exportB

Export the current watchlist to a JSON file on disk

watchlist_importB

Import symbols into the TradingView watchlist from a JSON file

ui_clickB

Click a UI element by aria-label, data-name, text content, or class substring

ui_open_panelB

Open, close, or toggle TradingView panels (pine-editor, strategy-tester, watchlist, alerts, trading)

ui_fullscreenA

Toggle TradingView fullscreen mode

layout_createA

Create a NEW chart and save it under this name. Use this to build a user a chart from scratch - layout_list and layout_switch can only reach layouts that already exist. The new chart starts empty: add studies with indicator_add_from_search and set the timeframe, then call layout_save again to keep them. Verified by re-reading the account, not by the return value.

layout_saveA

Save the current chart layout silently, with no Save-As dialog. Pass name to save it under that name - that is what names a layout, not layout_create. Call this after changing symbol, timeframe or studies so the layout keeps them. Verifies the account lists it rather than trusting the save.

layout_listB

List saved chart layouts with bounded pagination

layout_get_activeA

Which saved layout the attached chart is currently showing. Use it to confirm a layout switch landed, to detect that the user has moved since a setup was saved, and to state which chart a reading describes.

layout_switchA

Switch to a saved chart layout by name or ID. Stops rather than discarding unsaved changes on the current chart unless discard_unsaved is set.

ui_keyboardB

Press keyboard keys or shortcuts (e.g., Enter, Escape, Alt+S, Ctrl+Z)

ui_type_textA

Type text into the currently focused input/textarea element. Refuses when nothing is focused or the focused element cannot accept text, and reports which element received the characters.

ui_hoverA

Hover over a UI element by aria-label, data-name, or text content

ui_scrollB

Scroll the chart or page up/down/left/right

ui_mouse_clickB

Click at specific x,y coordinates on the TradingView window

ui_find_elementA

Find UI elements by text, aria-label, or CSS selector and return their positions

pane_listA

List all chart panes in the current layout with their symbols and active state

pane_set_layoutB

Change the chart grid layout (e.g., single, 2x2, 2h, 3v)

pane_focusB

Focus a specific chart pane by index (0-based)

pane_set_symbolB

Set the symbol on a specific pane by index

tab_listA

List all open TradingView chart tabs

tab_newA

Open a new TradingView tab, optionally loading a saved layout

tab_closeA

Close the currently active chart tab. Names the tab it is about to close and refuses when no tab is marked active. Closing a chart tab cannot be undone through this API, so pass expect_title when it matters which one goes.

tab_switchB

Switch to a chart tab by index

state_snapshotA

Capture full chart state (symbol, timeframe, studies, drawings, visible range) to a named snapshot file

state_restoreA

Restore a saved chart state snapshot by name. DESTRUCTIVE: this makes the chart MATCH the snapshot, which removes every study and every drawing that is not in it. Take a state_snapshot of the current chart first if you might want it back.

state_listA

List all saved chart state snapshots sorted by capture date

state_deleteB

Delete a named chart state snapshot

strategy_sweepB

Iterate a strategy across symbols × timeframes × indicator input combinations

chart_vision_readA

Take a screenshot and read all chart data in one call (quote, indicators, Pine graphics, OHLCV). Returns mixed content: inline image when <= max_image_bytes, else file_path only.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 113 tools

Disambiguation2/5

The tool set is organized into clear resource prefixes, but several tools have overlapping boundaries: pine_compile vs pine_smart_compile, chart_manage_indicator vs indicator_add_from_search, data_get_indicator vs data_get_study_values, and multiple tv_* health/compatibility checks. While individual descriptions are unusually explicit, the sheer number of near-synonym pairs (plus watchlist_add_bulk/import/create and batch_run/strategy_sweep) makes mis-selection likely.

Naming Consistency4/5

Most tools follow a consistent resource_action pattern (chart_set_symbol, watchlist_create, alert_create_bulk, replay_start, draw_remove_one, state_snapshot). Minor deviations like quote_get/depth_get, tv_discover, ui_keyboard, and pine_new/pine_open break the pattern slightly, but the prefixes make the set predictable overall.

Tool Count1/5

113 tools is far beyond the 50+ threshold and creates an unwieldy surface even for a desktop automation server. The broad domain justifies many categories, but the count is excessive and should be split into focused sub-servers.

Completeness4/5

The server covers an impressive breadth: chart state, watchlist CRUD, Pine editing/compilation, alerts, replay, drawings, layouts, tabs, panes, UI automation, diagnostics, and strategy sweeps. Minor lifecycle gaps exist (no layout_delete, watchlist_delete, or alert_update), but these are workarounds rather than dead ends.

Maintenance

ActivityActive
ResponsivenessSlow