Control the person’s live chart
live_chartCreate and edit interactive price and indicator charts on the BotSpot Charts page, with historical windows or live updates. action="create_chart" opens a chart with its source, symbol, bar size, historical window and requested indicators; use the returned chartId. "add_overlay" and "remove_overlay" manage broker account-value comparisons and backtest-fill markers. Leave chartId empty to use the chart they looked at last. action="list" lists charts, "get" reads symbol, indicators (instanceId) and drawings (drawingId). "list_sources" lists the person’s brokers and free crypto feeds, and "search_symbols" finds stocks, funds, crypto, futures, crypto perpetuals and prediction market contracts by ticker or name with the sources that can read each (no broker needed to search); a symbol its source lacks is refused, naming the source. "set_symbol" changes symbol, exchange or bar size (any whole number with m, h, d or w, like 37m or 3h). "add_indicator", "update_indicator", "remove_indicator" manage indicators by key and version (charts stay on their version). "draw", "update_drawing", "remove_drawing", "clear_drawings" manage lines, trendlines, rays, rectangles, markers, text, Fibonacci and long or short position tools anchored to time (epoch ms) and price, including their look, lock, hide and stacking order; to clone a drawing, draw a copy from its saved fields, and to lock or hide several or all drawings, send update_drawing drawingIds with locked or visible. "set_appearance" changes the bar type (chartType: candles, bars, line, area, heikin_ashi, renko and the rest), background, grid and candle colors; for example a purple gradient background is mode "gradient" with two purple hex colors. "describe_drawings" returns the bar at the arrowhead and the separate range after it. Report open from head.bar.o, high from head.bar.h, low from head.bar.l and close from head.bar.c; afterHead.firstOpen is the next bar, not the arrowhead bar. "summarize" returns the chart’s own numbers over a window (lookbackDays, from, to): price change, high and low, and each indicator line’s latest value and crosses. Answer chart questions from it, not from web searches.
Set "action" to choose the operation. Only send the fields listed for that action.
action="list": List the person’s live charts
No other fields required. Lists the person’s live charts on the BotSpot Charts page, most recently viewed first.
action="get": Read a live chart
No other fields required. Reads the symbol, timeframe, indicators (with instanceIds) and drawings (with drawingIds) of a live chart.
action="set_symbol": Change the chart symbol
No other fields required. Changes the symbol, exchange or bar size of the person’s open chart. The chart page updates live.
action="add_indicator": Add an indicator to the chart
Required fields: key. Adds an indicator to the open chart. The chart page updates live with the new indicator.
action="update_indicator": Change indicator settings
Required fields: instanceId. Changes an indicator’s settings on the open chart.
action="remove_indicator": Remove an indicator
Required fields: instanceId. Removes one indicator from the open chart.
action="draw": Draw on the chart
Required fields: type, points. Draws a horizontal line, trendline, ray, rectangle, marker, text label, Fibonacci, long position or short position on the open chart, anchored to time and price, with its look in style and a position tool’s sizing in position. The chart page updates live.
action="update_drawing": Move or relabel a drawing
No other fields required. Changes one drawing on the open chart: its points, text, look (style), position sizing, lock, visibility or stacking order (moveTo). Lock, unlock, hide or show several drawings in one call with drawingIds.
action="remove_drawing": Remove a drawing
Required fields: drawingId. Removes one drawing from the open chart.
action="clear_drawings": Clear all drawings
No other fields required. Removes every drawing from the open chart.
action="create_chart": Create a live chart
Required fields: symbol. Creates a live chart with optional indicators and attaches it to this conversation. Returns chartId. Data comes from the person’s own connected broker (sourceKind broker, the default), for stocks, ETFs, options, futures and whatever else it provides, or from a free public crypto feed (ccxt_public). When no particular broker is required, omit brokerCredentialId so the server can find the first compatible connection with bars before saving; sourceSelection in the result says which broker it used and what it passed over. Call the source by that broker name, not by the name the person saved a connection under. With no broker it returns a connect_broker action: tell the person in one plain sentence that they need a broker to get this data, and give them the link. Use for price charts with built-in or saved custom indicators, e.g. NVDA daily with a 200 bar sma.
action="list_sources": List where chart data can come from
No other fields required. Lists the person’s connected brokers, with the asset classes each one offers, and the free public crypto feeds. Use the current results to choose a compatible chart source automatically. Multiple sources do not require a user choice; do not invent provider rankings or unreturned history limits.
action="search_symbols": Search for a symbol to chart
No other fields required. Finds stocks, funds, crypto, futures, crypto perpetuals and prediction market contracts by ticker or name, with no broker needed: pass query, and chip to narrow it. Each result lists its sources for this person, the connected brokers and free crypto feeds that can read it. needsBroker means they must connect a broker first (connectUrl) before charting it. To confirm a symbol on one source instead, pass exchangeId for a public crypto feed or brokerCredentialId for a connected broker: a feed or a listed broker returns what it lists, any other broker confirms one exact ticker (match=exact_ticker). Empty there means that source does not have it; never put a symbol on a source that lacks it.
action="describe_drawings": Read facts about chart drawings
No other fields required. Returns plain facts about the drawings on a chart, computed from the chart’s real bars: the bar at each point, the bars a drawing spans, closes above and below a line or box with times and prices, crossings, Fibonacci level prices, touches and distance from the latest close, measurements, a long or short position’s entry, target, stop, reward to risk and which level was reached, and what an arrow points at and what happened after. Use it to answer questions about what the person drew.
action="add_overlay": Add an overlay to the chart
Required fields: kind. Adds another ticker, an account value line or backtest buy and sell markers on top of the chart. The data is loaded right away; if it cannot load, nothing is added and the reason is returned.
action="remove_overlay": Remove an overlay
Required fields: overlayId. Removes one overlay from the chart.
action="summarize": Read the numbers on a chart
No other fields required. Returns facts computed from the chart’s own bars and indicator lines over a window (for example lookbackDays 365): first and last close, percent change, high and low with dates, and for every indicator line its latest value, whether price is above or below it, how far, and when price last crossed it. Use this to answer questions about a chart instead of searching the web.
action="set_appearance": Change how the chart looks
No other fields required. Sets the chart bar type (chartType, e.g. heikin_ashi, line, renko), background, grid and candle colors. Only what is sent changes. Pick real hex colors for what the person describes: "make the background a purple gradient" means background {mode:"gradient", color:"#2e1065", color2:"#7c3aed", angle:90}; "hide the grid" means grid {vertical:false, horizontal:false}. The chart page updates live.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "live_chart"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end date (YYYY-MM-DD). Defaults to the last bar. Used with action="summarize". | |
| key | No | Indicator key, e.g. "rsi", "ema", "macd", "bbands", "wavetrend". For a saved custom indicator use the chartKey that indicators(action="create") returned. Used with action="add_indicator". Required for action="add_indicator". | |
| chip | No | Narrow a search to one kind of market. Leave empty for all. Used with action="search_symbols". | |
| from | No | Window start date (YYYY-MM-DD). Overrides lookbackDays. Used with action="summarize". | |
| grid | No | Used with action="set_appearance". | |
| kind | No | symbol: compare another ticker on this chart. account_value: an account value line from a bot (deploymentId), a strategy with exactly one bot (strategyId) or a broker account (accountId). backtest_fills: buy and sell markers from a backtest (backtestId). Used with action="add_overlay". Required for action="add_overlay". | |
| text | No | Label shown on the drawing. Used with action="draw", action="update_drawing". | |
| type | No | horizontal_line, vertical_line, marker and text take 1 point; trendline, ray, rectangle, fibonacci and measurement take 2; arrow takes 2 (tail first, then head); long_position and short_position take 3: entry (t is the left edge), target and stop (t is the right edge). Fibonacci 0 is at the second anchor, 1 at the first; reverse swaps that. Used with action="draw". Required for action="draw". | |
| asset | No | broker charts: leave empty for a stock or ETF. Otherwise the asset class and terms, e.g. {"assetType":"option","expiration":"2026-12-18","strike":200,"right":"call"}, {"assetType":"future","expiration":"2026-12-18","exchange":"CME"} or {"assetType":"index"}. Used with action="set_symbol", action="create_chart", action="search_symbols", action="add_overlay". | |
| color | No | CSS color, e.g. "#22c55e". Used with action="draw", action="update_drawing", action="add_overlay". | |
| query | No | A ticker or name, e.g. "SPY", "BTC" or "apple". Used with action="search_symbols". | |
| style | No | action="update_indicator": Chart settings. Replaces the saved settings, so send everything to keep; {} restores the defaults. | action="draw", action="update_drawing": How the drawing looks. Only the fields sent change. Used with action="update_indicator", action="draw", action="update_drawing". | |
| title | No | Optional chart title. Update a setting-specific title when the requested symbol, outcome or timeframe change would make it misleading. Omit to keep the chosen title. Used with action="set_symbol", action="create_chart". | |
| action | Yes | Which operation to run: "list", "get", "set_symbol", "add_indicator", "update_indicator", "remove_indicator", "draw", "update_drawing", "remove_drawing", "clear_drawings", "create_chart", "list_sources", "search_symbols", "describe_drawings", "add_overlay", "remove_overlay", "summarize", "set_appearance". See the tool description for each one. | |
| inputs | No | Indicator settings by name, e.g. {"length": 14}. Omitted settings use the indicator defaults. Used with action="add_indicator", action="update_indicator". | |
| locked | No | Used with action="draw", action="update_drawing". | |
| moveTo | No | Move in the stacking order. Later drawings paint on top. Used with action="update_drawing". | |
| points | No | Used with action="draw", action="update_drawing". Required for action="draw". | |
| symbol | No | action="set_symbol": Ticker for a broker chart (e.g. "NVDA", "SPY"), or a CCXT unified symbol for ccxt_public (e.g. "BTC/USDT:USDT"). Leave empty to keep it, for example when only the bar size changes. | action="create_chart": Ticker, e.g. "NVDA" or "SPY" (broker), or "BTC/USDT:USDT" (ccxt_public). | action="add_overlay": kind=symbol: the ticker to compare, e.g. "SPY". Used with action="set_symbol", action="create_chart", action="add_overlay". Required for action="create_chart". | |
| chartId | No | Chart id from live_chart(action="list"). Leave empty to use the chart the person looked at last. Used with action="get", action="set_symbol", action="add_indicator", action="update_indicator", action="remove_indicator", action="draw", action="update_drawing", action="remove_drawing", action="clear_drawings", action="describe_drawings", action="add_overlay", action="remove_overlay", action="summarize", action="set_appearance". | |
| upColor | No | Hex color of rising candles. Used with action="set_appearance". | |
| version | No | action="add_indicator": Indicator version. Charts stay on this version. | action="update_indicator": Move to another version only when the person asks. Used with action="add_indicator", action="update_indicator". | |
| visible | No | Used with action="draw", action="update_drawing". | |
| position | No | long_position and short_position: the sizing inputs. Used with action="draw", action="update_drawing". | |
| accountId | No | Saved broker connection id. Used with action="add_overlay". | |
| chartType | No | Bar type, saved on the chart: bars, candles, hollow_candles, volume_candles, line, line_markers, step_line, area, hlc_area, baseline, columns, high_low, heikin_ashi, renko, line_break, kagi, point_figure or range. "Switch to Heikin Ashi" is chartType "heikin_ashi"; "a line chart" is "line". Used with action="set_appearance". | |
| downColor | No | Hex color of falling candles. Used with action="set_appearance". | |
| drawingId | No | action="update_drawing": The drawing to change. Use drawingIds instead for several. | action="describe_drawings": One drawing; leave empty for every drawing. Used with action="update_drawing", action="remove_drawing", action="describe_drawings". Required for action="remove_drawing". | |
| fibonacci | No | Used with action="draw", action="update_drawing". | |
| normalize | No | Rebase the series to 100 at its first value so it can be compared. Used with action="add_overlay". | |
| overlayId | No | Used with action="remove_overlay". Required for action="remove_overlay". | |
| timeframe | No | Bar size: any whole number with m, h, d or w, like 1m, 37m, 45m, 3h, 2d or 2w. Sizes a source has no bar for are built from smaller real bars. A new chart defaults to 1d. Used with action="set_symbol", action="create_chart". | |
| background | No | Used with action="set_appearance". | |
| backtestId | No | Used with action="add_overlay". | |
| drawingIds | No | Several drawings at once, only with locked and/or visible: "lock my drawings" is every drawingId from get with locked true; "hide my drawings" is visible false. Used with action="update_drawing". | |
| exchangeId | No | action="set_symbol": Lowercase exchange id, e.g. "phemex". Leave empty to keep it. | action="create_chart": Lowercase exchange id, required for ccxt_public, e.g. "phemex". | action="search_symbols": A public crypto feed from live_chart(action="list_sources"). Used with action="set_symbol", action="create_chart", action="search_symbols", action="add_overlay". | |
| indicators | No | Indicators to add right away, e.g. [{"key":"sma","inputs":{"length":200}}]. Used with action="create_chart". | |
| instanceId | No | instanceId from live_chart(action="get"). Used with action="update_indicator", action="remove_indicator". Required for action="update_indicator", action="remove_indicator". | |
| sourceKind | No | Where prices come from: "broker" reads the person’s own connected broker, for stocks, ETFs, options, futures and anything else it provides; "ccxt_public" is a free public crypto exchange feed (needs exchangeId). There is no other source. Used with action="set_symbol", action="search_symbols", action="add_overlay", action="create_chart". | |
| strategyId | No | Used with action="add_overlay". | |
| deploymentId | No | Used with action="add_overlay". | |
| lookbackDays | No | action="set_symbol", action="create_chart": Visible calendar days of history, e.g. 365 for a year or about 3652 for ten years. Fetches native history with indicator warm-up, within the existing 5000-bar worker limit. Read summarize for actual provider coverage. Omit to preserve the current window; null restores the default. | action="summarize": Window to summarize, counted back from the last bar, e.g. 365 for the last year. Used with action="set_symbol", action="create_chart", action="summarize". | |
| brokerCredentialId | No | action="set_symbol", action="add_overlay": A saved broker connection from live_chart(action="list_sources"). Use the exact connection when the person names one or the instrument was resolved on that connection. | action="create_chart": For a new chart with no named source, omit this field to let BotSpot choose automatically from owned connections that return bars for the requested instrument and interval. Pass the exact saved id when the person names a connection or when the instrument was resolved on that specific connection. | action="search_symbols": A connected broker from live_chart(action="list_sources"). Used with action="set_symbol", action="add_overlay", action="create_chart", action="search_symbols". |