
BotSpot: AI Trading, Backtests and Bots
You'd reach for this when you want Claude to help you build and deploy trading algorithms without writing traditional code. It connects to Botspot's platform and lets you generate trading strategies through conversation, then backtest them against historical data and deploy live to supported brokers. The streamable HTTP transport means it's accessible remotely, so you can iterate on strategies with Claude and push them straight to production trading accounts. Best for traders who want to automate their strategies but don't want to deal with broker APIs, backtesting frameworks, or infrastructure. The no-coding-required pitch means Claude handles the strategy logic while Botspot manages execution across their 10+ broker integrations.
- tools
- 80
- transport
- HTTP
- last updated
- Oct 24, 2026
Install
From registry metadata$ npx add-mcp https://mcp.botspot.trade/mcp --name botspot-tradingRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http botspot-trading https://mcp.botspot.trade/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 80 toolsVerified live against the running server on Nov 6, 2026.
commit_backtest_rules_reviewCommit the conversational Agent's already-completed, per-Rule evidence review for one exact terminal backtest and revision. This tool never analyzes a Rule or retrieves evidence. Before calling it, independently read the exact rules.json and main.py revision, define the eviden...6 params
Commit the conversational Agent's already-completed, per-Rule evidence review for one exact terminal backtest and revision. This tool never analyzes a Rule or retrieves evidence. Before calling it, independently read the exact rules.json and main.py revision, define the eviden...
backtestId*stringcodeDigeststringoverall*stringpass · fail · unknown · skiprevisionId*stringrules*arrayrulesDigeststringlist_backtestsSummarize recent backtests for the user, optionally scoped to a strategy or conversation. For the current attached strategy, use scope='strategy' and omit id, strategyId, and aiStrategyId. The server resolves the exact strategy from the scoped MCP token, avoiding copied-identi...10 params
Summarize recent backtests for the user, optionally scoped to a strategy or conversation. For the current attached strategy, use scope='strategy' and omit id, strategyId, and aiStrategyId. The server resolves the exact strategy from the scoped MCP token, avoiding copied-identi...
aiStrategyIdstringidstringincludeArtifactsbooleanlimitintegeroffsetintegerscopestringall · conversation · strategydefault: allsortBystringcreatedAt · totalReturn · cagrAnnualReturn · sharpe · maxDrawdown · statusdefault: createdAtsortOrderstringasc · descdefault: descstatusstringstrategyIdstringget_backtest_artifactFor a live or scheduled deployment, use get_deployment_logs for runtime logs and list_deployment_artifacts/query_deployment_artifact for decisions, preserving the discovered deploymentId and runId. A deploymentId or deployment runId is not a backtestId. Request a short-lived d...2 params
For a live or scheduled deployment, use get_deployment_logs for runtime logs and list_deployment_artifacts/query_deployment_artifact for decisions, preserving the discovered deploymentId and runId. A deploymentId or deployment runId is not a backtestId. Request a short-lived d...
backtestId*stringlabel*stringget_backtest_logsFetch runtime logs for an identified historical backtest simulation. This tool does not read live/paper bot or scheduled-deployment logs. Use get_deployment_logs for those runtime logs and list_deployment_artifacts/query_deployment_artifact for decisions, preserving the discov...11 params
Fetch runtime logs for an identified historical backtest simulation. This tool does not read live/paper bot or scheduled-deployment logs. Use get_deployment_logs for those runtime logs and list_deployment_artifacts/query_deployment_artifact for decisions, preserving the discov...
backtestId*stringcontextLinesintegerdiagnosticPresetstringbroker_order_failure · runtime_failure · startup · ordersendTimeIsovaluelimitintegernextTokenstringqueriesarrayquerystringsortstringasc · descstartTimeIsostringsuppressNoisebooleanstart_parameter_experimentStart 2-10 parameter variants against the same saved revision, same date window, and same current BotSpot Auto routing policy. BotSpot creates or resolves one immutable strategy parameter set per variant and starts the runs in parallel with bounded concurrency through the norm...6 params
Start 2-10 parameter variants against the same saved revision, same date window, and same current BotSpot Auto routing policy. BotSpot creates or resolves one immutable strategy parameter set per variant and starts the runs in parallel with bounded concurrency through the norm...
budgetnumberendDate*stringenvVarSetIdsarrayrevisionIdstringstartDate*stringvariants*arraystart_backtestStart a new backtest for a revision with the provided date range. ASYNC: This starts a job and returns immediately with a backtest id. `backtest_status` and artifact tools expose the current state for that id. Backtests are asynchronous and can consume material runtime capacit...9 params
Start a new backtest for a revision with the provided date range. ASYNC: This starts a job and returns immediately with a backtest id. `backtest_status` and artifact tools expose the current state for that id. Backtests are asynchronous and can consume material runtime capacit...
budgetnumberdataConnectionIdstringdataProviderstringendDate*stringenvVarSetIdsarrayparametersobjectrevisionIdstringstartDate*stringstrategyParameterSetIdstringstop_backtestForce-stop an in-progress backtest by ID.3 params
Force-stop an in-progress backtest by ID.
backtestIdstringbotIdstringrevisionIdstringbacktest_statusFetch the latest status/stage for a backtest by id. Response includes `stage` plus a rich `structuredContent.progress` snapshot of the current heartbeat: - `percent`, `eta`, `elapsed`, `simulationDate`, `portfolioValue`, `totalReturnPct`, `heartbeatElapsedSeconds` - `orders`:...1 params
Fetch the latest status/stage for a backtest by id. Response includes `stage` plus a rich `structuredContent.progress` snapshot of the current heartbeat: - `percent`, `eta`, `elapsed`, `simulationDate`, `portfolioValue`, `totalReturnPct`, `heartbeatElapsedSeconds` - `orders`:...
backtestId*stringquery_csvExecute a SQL query on a backtest artifact using DuckDB. backtestId must be the actual backtest run id already discovered from list_backtests or used with get_backtest_artifact; never pass a strategy id, aiStrategyId, revisionId, browser URL revisionId, conversation id, or pla...4 params
Execute a SQL query on a backtest artifact using DuckDB. backtestId must be the actual backtest run id already discovered from list_backtests or used with get_backtest_artifact; never pass a strategy id, aiStrategyId, revisionId, browser URL revisionId, conversation id, or pla...
artifactType*stringbacktestId*stringqueriesarraysqlstringrun_deployment_onceHIGH RISK: request owner approval for one immediate iteration of an existing scheduled bot. Use this for run once, an extra run, or retrying a missed iteration. It can place live trades. Preserves the saved revision, broker, variables, recurring schedule, history and state. Cu...2 params
HIGH RISK: request owner approval for one immediate iteration of an existing scheduled bot. Use this for run once, an extra run, or retrying a missed iteration. It can place live trades. Preserves the saved revision, broker, variables, recurring schedule, history and state. Cu...
deploymentId*stringidempotencyKeystringstart_deploymentPrepares owner review for a new BotSpot deployment; this call does not start a bot or place trades before approval. After explicit owner approval, this is HIGH RISK: the deployment may place real-money trades. Call for an authorized start request even when required saved varia...11 params
Prepares owner review for a new BotSpot deployment; this call does not start a bot or place trades before approval. After explicit owner approval, this is HIGH RISK: the deployment may place real-money trades. Call for an authorized start request even when required saved varia...
acceptancesobjectaiStrategyRevisionId*stringbrokerCredentialIdvaluedeploymentModestringauto · always_on · scheduleddefault: autoenvVarSetIdsarrayidempotencyKeystringmemoryGbnumber2 · 3 · 4runImmediatelybooleanscheduleMetadataobjectschedulePolicyIdvaluestrategyParameterSetIdvaluestop_deploymentHIGH RISK: stops an existing BotSpot live deployment and changes a running trading system. Stopping the wrong bot can leave real-money exposure unmanaged. Only call this tool after the user has explicitly confirmed the stop action, broker mode, and target deployment in the cur...2 params
HIGH RISK: stops an existing BotSpot live deployment and changes a running trading system. Stopping the wrong bot can leave real-money exposure unmanaged. Only call this tool after the user has explicitly confirmed the stop action, broker mode, and target deployment in the cur...
deploymentId*stringidempotencyKeystringupdate_deployment_revisionHIGH RISK: updates one named BotSpot live deployment to a target saved strategy revision after owner authorization. Without an active window it creates one website approval request. Restart argument example: {"deploymentId":"RETURNED_DEPLOYMENT_ID","aiStrategyRevisionId":"RETU...10 params
HIGH RISK: updates one named BotSpot live deployment to a target saved strategy revision after owner authorization. Without an active window it creates one website approval request. Restart argument example: {"deploymentId":"RETURNED_DEPLOYMENT_ID","aiStrategyRevisionId":"RETU...
aiStrategyRevisionId*stringbrokerCredentialIdvaluedeploymentId*stringdeploymentModestringalways_on · scheduledenvVarSetIdsarrayidempotencyKeystringrunImmediatelybooleanscheduleMetadataobjectschedulePolicyIdvaluestrategyParameterSetIdvalueplace_tradeHIGH RISK: creates a BotSpot website approval request for a single trade that may place real-money orders after approval. Provide reason before approval: at least 200 characters explaining the decision, supporting evidence and material risks; prefer 600–2,500. Maximum 100,000...6 params
HIGH RISK: creates a BotSpot website approval request for a single trade that may place real-money orders after approval. Provide reason before approval: at least 200 characters explaining the decision, supporting evidence and material risks; prefer 600–2,500. Maximum 100,000...
analysisBindingsobjectbrokerCredentialIdstringbrokerSelectionobjectidempotencyKeystringreason*stringtrade*objectget_deployment_action_statusReturns the status of a pending or completed deployment authorization request created by start_deployment, stop_deployment, update_deployment_revision, run_deployment_once, or place_trade. Includes the active, expired or revoked trading window when present. Omit operation or u...2 params
Returns the status of a pending or completed deployment authorization request created by start_deployment, stop_deployment, update_deployment_revision, run_deployment_once, or place_trade. Includes the active, expired or revoked trading window when present. Omit operation or u...
actionId*stringoperationstringstatus · revoke_trade_windowget_single_trade_statusRead-only approval and execution status for a direct trade or an existing-order cancel/modify request. Pass the actionId returned by place_trade, broker_orders(action="manage") or broker_orders(action=manage), or the deterministic singleTradeBotId/managerBotId single-trade-<ac...3 params
Read-only approval and execution status for a direct trade or an existing-order cancel/modify request. Pass the actionId returned by place_trade, broker_orders(action="manage") or broker_orders(action=manage), or the deterministic singleTradeBotId/managerBotId single-trade-<ac...
actionIdstringmanagerBotIdvaluesingleTradeBotIdstringlist_deploymentsReturns the user's deployments with each row's own paper/live mode, linked broker and performance data. Never transfer performance between same-named paper and live deployments; an unavailable live return stays unknown. Do not use this tool to prepare or route a direct buy, se...7 params
Returns the user's deployments with each row's own paper/live mode, linked broker and performance data. Never transfer performance between same-named paper and live deployments; an unavailable live return stays unknown. Do not use this tool to prepare or route a direct buy, se...
aiStrategyIdvalueisRealMoneybooleanlimitintegersearchstringstatusstringrunning · stopped · failed · in_progress · initiated · queuedstatusesarraystrategyIdstringget_deployment_logsReturns CloudWatch logs from a live deployment's container. Supports time-range filtering (startTimeIso/endTimeIso), CloudWatch filter patterns (query), local multi-query diagnostics (queries), diagnosticPreset, noise suppression, and pagination (nextToken). Default limit is 5...11 params
Returns CloudWatch logs from a live deployment's container. Supports time-range filtering (startTimeIso/endTimeIso), CloudWatch filter patterns (query), local multi-query diagnostics (queries), diagnosticPreset, noise suppression, and pagination (nextToken). Default limit is 5...
contextLinesintegerdeploymentId*stringdiagnosticPresetstringbroker_order_failure · runtime_failure · startup · ordersendTimeIsovaluelimitintegernextTokenstringqueriesarrayquerystringsortstringasc · descstartTimeIsostringsuppressNoisebooleanlist_deployment_runsLists owner-scoped artifact runs for one live/scheduled deployment, or for up to 10 related deployments via deploymentIds. Every returned row includes deploymentId so run IDs remain paired with the deployment that owns them. Use this when the user asks what evidence is availab...3 params
Lists owner-scoped artifact runs for one live/scheduled deployment, or for up to 10 related deployments via deploymentIds. Every returned row includes deploymentId so run IDs remain paired with the deployment that owns them. Use this when the user asks what evidence is availab...
deploymentIdstringdeploymentIdsarraylimitintegerlist_deployment_artifactsReturns the manifest for the latest or specified deployment run, including artifact kinds, keys, sizes, row counts, timestamps, symbols, queryability, visibility, and upload status. Use this to find the canonical agent_detail and memory artifacts before asking why a live or sc...2 params
Returns the manifest for the latest or specified deployment run, including artifact kinds, keys, sizes, row counts, timestamps, symbols, queryability, visibility, and upload status. Use this to find the canonical agent_detail and memory artifacts before asking why a live or sc...
deploymentId*stringrunIdstringget_deployment_artifactReturns a short-lived signed URL for one manifest-listed deployment artifact. Owner-scoped and manifest-only: never pass arbitrary S3 keys. Prefer query_deployment_artifact for agent_detail, memory, indicators, stats, or other tabular artifacts when the user needs analysis rat...4 params
Returns a short-lived signed URL for one manifest-listed deployment artifact. Owner-scoped and manifest-only: never pass arbitrary S3 keys. Prefer query_deployment_artifact for agent_detail, memory, indicators, stats, or other tabular artifacts when the user needs analysis rat...
artifactKeystringdeploymentId*stringkindstringagent_detail · memory_events · memory_retrievals · memory_state · logs · errorsrunIdstringquery_deployment_artifactRuns a read-only DuckDB SELECT against queryable deployment artifacts listed in the run manifest. For replacement-deployment history, pass up to 10 exact {deploymentId, runId} targets; they are owner-checked, queried concurrently, and returned with both IDs on every row under...7 params
Runs a read-only DuckDB SELECT against queryable deployment artifacts listed in the run manifest. For replacement-deployment history, pass up to 10 exact {deploymentId, runId} targets; they are owner-checked, queried concurrently, and returned with both IDs on every row under...
artifactKeystringdeploymentIdstringkindstringagent_detail · memory_events · memory_retrievals · memory_state · logs · errorsdefault: agent_detailmaxRowsintegerrunIdstringsql*stringtargetsarrayget_broker_quotesRead-only: fetches current quote/last-price data from the signed-in user's saved broker connection. Pass brokerCredentialId, or omit it only when the user has exactly one active saved broker connection. Use symbols for one or more assets. Use quoteSymbol only for crypto or for...10 params
Read-only: fetches current quote/last-price data from the signed-in user's saved broker connection. Pass brokerCredentialId, or omit it only when the user has exactly one active saved broker connection. Use symbols for one or more assets. Use quoteSymbol only for crypto or for...
assetTypestringstock · option · future · crypto_future · cont_future · forexbrokerCredentialIdstringexchangevalueexpirationstringmarketstringoutcomestringquoteSymbolvaluerightstringcall · put · CALL · PUTstrikenumbersymbols*arrayget_broker_positionsRead-only: fetches current positions directly from saved broker credentials, not from deployment telemetry or snapshot automation. For current performance of a named bot or a follow-up about its holdings, use show_bot_activity first; it performs its own exact-linked broker rea...6 params
Read-only: fetches current positions directly from saved broker credentials, not from deployment telemetry or snapshot automation. For current performance of a named bot or a follow-up about its holdings, use show_bot_activity first; it performs its own exact-linked broker rea...
assetTypestringstock · option · future · crypto_future · cont_future · forexbrokerCredentialIdstringbrokerProviderstringincludeCashPositionsbooleanoutcomestringsymbolstringget_broker_account_snapshotRead-only: fetches current cash, buying power, and account value from the signed-in user's saved broker connection. For current performance of a named bot or a follow-up about its account, use show_bot_activity first; it performs its own exact-linked broker read. Use this tool...2 params
Read-only: fetches current cash, buying power, and account value from the signed-in user's saved broker connection. For current performance of a named bot or a follow-up about its account, use show_bot_activity first; it performs its own exact-linked broker read. Use this tool...
brokerCredentialIdstringbrokerProviderstringget_bot_performanceReturns recorded performance snapshots for a live deployment's bot, including total return, max drawdown, Sharpe ratio, and portfolio value over time. The hoursAgo parameter controls the lookback window (default 168 = 1 week, max 720 = 30 days). For current account performance...2 params
Returns recorded performance snapshots for a live deployment's bot, including total return, max drawdown, Sharpe ratio, and portfolio value over time. The hoursAgo parameter controls the lookback window (default 168 = 1 week, max 720 = 30 days). For current account performance...
deploymentId*stringhoursAgointegerget_deployment_position_telemetryA saved-code-only edit does not require live orders or positions. Implement confirmed-fill handling in the strategy runtime without inventing a current fill or deployment. The live evidence requirements below apply only when investigating or preserving state for an existing li...13 params
A saved-code-only edit does not require live orders or positions. Implement confirmed-fill handling in the strategy runtime without inventing a current fill or deployment. The live evidence requirements below apply only when investigating or preserving state for an existing li...
deploymentId*stringendTimeIsovalueendTimestampintegerhistorybooleanincludeRecentOrdersbooleanlimitintegernextTokenstringrecentOrdersHoursAgointegerrecentOrdersLimitintegersortstringasc · descstartTimeIsostringstartTimestampintegersymbolstringget_portfolio_seriesReturns the owned linked-account history plus a fresh direct broker balance through the same canonical source used by Python internal_data.get. This is the whole linked account, not strategy-attributed or cash-flow-adjusted investment performance. Use show_bot_activity first f...5 params
Returns the owned linked-account history plus a fresh direct broker balance through the same canonical source used by Python internal_data.get. This is the whole linked account, not strategy-attributed or cash-flow-adjusted investment performance. Use show_bot_activity first f...
deploymentId*stringendvaluefrequencystringall · hour · daylimitintegerstartstringget_deployment_order_telemetryA saved-code-only edit does not require live orders or positions. Implement confirmed-fill handling in the strategy runtime without inventing a current fill or deployment. The live evidence requirements below apply only when investigating or preserving state for an existing li...13 params
A saved-code-only edit does not require live orders or positions. Implement confirmed-fill handling in the strategy runtime without inventing a current fill or deployment. The live evidence requirements below apply only when investigating or preserving state for an existing li...
deploymentId*stringendTimeIsovalueendTimestampintegerhoursAgointegerincludeOpenbooleanlimitintegernextTokenstringsortstringasc · descstartTimeIsostringstartTimestampintegerstatusstringstatusesarraysymbolstringcreate_strategyCreates a new strategy workspace with main.py and requirements.txt. The starter files are neutral boilerplate only; they do not encode customer-specific strategy logic or fake validation trades. After creation, use the returned files manifest instead of rediscovering starter p...2 params
Creates a new strategy workspace with main.py and requirements.txt. The starter files are neutral boilerplate only; they do not encode customer-specific strategy logic or fake validation trades. After creation, use the returned files manifest instead of rediscovering starter p...
descriptionstringname*stringset_strategy_revisionUpdates the active conversation to use a specific revision of the already-active strategy. Pass revisionId, or pass version with the user-facing version number (for example version=641) when the user asks to restore or pull up an exact historical version. If the user asks to w...4 params
Updates the active conversation to use a specific revision of the already-active strategy. Pass revisionId, or pass version with the user-facing version number (for example version=641) when the user asks to restore or pull up an exact historical version. If the user asks to w...
aiStrategyIdstringrevisionIdstringstrategyIdstringversionintegerset_runtime_secret_requirementsSets or clears structured runtime secret requirements for an owned strategy revision. Use this when the strategy code needs non-broker API keys or settings, such as AP_API_KEY. This metadata is checked before starting or updating a bot so missing saved variables are caught bef...4 params
Sets or clears structured runtime secret requirements for an owned strategy revision. Use this when the strategy code needs non-broker API keys or settings, such as AP_API_KEY. This metadata is checked before starting or updating a bot so missing saved variables are caught bef...
aiStrategyIdstringrevisionId*stringruntimeSecretRequirements*valuestrategyIdstringset_strategy_requirementsExplicitly overrides the automatically analyzed assetClasses and dataRequirements metadata for this owned strategy revision only. Optionally correct aiEnabled after inspecting that exact revision; omitted classification is preserved. Use this when the user asks for an override...6 params
Explicitly overrides the automatically analyzed assetClasses and dataRequirements metadata for this owned strategy revision only. Optionally correct aiEnabled after inspecting that exact revision; omitted classification is preserved. Use this when the user asks for an override...
aiEnabledbooleanaiStrategyIdstringassetClasses*arraydataRequirements*arrayrevisionId*stringstrategyIdstringswitch_active_strategyChanges this conversation's active strategy workspace to another strategy owned by the user. Use only when the user explicitly asks to work with, compare against, copy from, or move to a different strategy. If the user explicitly names or identifies a different owned strategy,...3 params
Changes this conversation's active strategy workspace to another strategy owned by the user. Use only when the user explicitly asks to work with, compare against, copy from, or move to a different strategy. If the user explicitly names or identifies a different owned strategy,...
aiStrategyIdstringrevisionIdstringstrategyIdstringlist_revisionsReturns a bounded page of available revisions for a strategy with full revisionIds and version numbers. The default returns the newest 20 revisions and is capped at 50 per call so revision history never overwhelms the model context. When the user names an exact historical vers...5 params
Returns a bounded page of available revisions for a strategy with full revisionIds and version numbers. The default returns the newest 20 revisions and is capped at 50 per call so revision history never overwhelms the model context. When the user names an exact historical vers...
aiStrategyIdstringlimitintegeroffsetintegerstrategyIdstringversionintegergenerate_other_code⚠️ IMPORTANT: This tool is RARELY needed. Normal trading strategy requests should use create_strategy plus file tools for LumiBot Python strategies. WHY LUMIBOT IS BETTER: - Python is more powerful and easier to maintain - Works with multiple brokers (Alpaca, Interactive Broke...1 params
⚠️ IMPORTANT: This tool is RARELY needed. Normal trading strategy requests should use create_strategy plus file tools for LumiBot Python strategies. WHY LUMIBOT IS BETTER: - Python is more powerful and easier to maintain - Works with multiple brokers (Alpaca, Interactive Broke...
prompt*stringlist_strategiesReturns all strategies owned by the current user. Each item includes both strategyId and aiStrategyId so you can use either with other tools (delete_strategy, list_revisions, start_backtest, etc.). Optionally filter by name. The name filter is case-insensitive and also returns...3 params
Returns all strategies owned by the current user. Each item includes both strategyId and aiStrategyId so you can use either with other tools (delete_strategy, list_revisions, start_backtest, etc.). Optionally filter by name. The name filter is case-insensitive and also returns...
limitintegernamestringoffsetintegerget_strategyReturns full details for a single strategy including name, type, revision count, latest revision info, and deployment status. Accepts either strategyId or aiStrategyId.2 params
Returns full details for a single strategy including name, type, revision count, latest revision info, and deployment status. Accepts either strategyId or aiStrategyId.
aiStrategyIdstringstrategyIdstringdelete_strategySoft-deletes a strategy so it no longer appears in lists or can be used for backtests. Data is preserved in the database for compliance. Two-phase operation: call without confirm (or confirm=false) to preview what will be affected. Call with confirm=true to execute the deletio...3 params
Soft-deletes a strategy so it no longer appears in lists or can be used for backtests. Data is preserved in the database for compliance. Two-phase operation: call without confirm (or confirm=false) to preview what will be affected. Call with confirm=true to execute the deletio...
aiStrategyIdstringconfirmbooleanstrategyIdstringupdate_strategyUpdates a strategy's name. Accepts either strategyId or aiStrategyId. Use publish_to_marketplace or unpublish_from_marketplace for public marketplace visibility.3 params
Updates a strategy's name. Accepts either strategyId or aiStrategyId. Use publish_to_marketplace or unpublish_from_marketplace for public marketplace visibility.
aiStrategyIdstringnamestringstrategyIdstringcreate_checkout_linkCreates a checkout session URL (subscription or one-time) tied to the authenticated MCP account.1 params
Creates a checkout session URL (subscription or one-time) tied to the authenticated MCP account.
productSlugsarraycreate_billing_portal_linkCreates a billing portal URL for the authenticated MCP user so subscriptions and payment methods can be managed.
Creates a billing portal URL for the authenticated MCP user so subscriptions and payment methods can be managed.
No parameters. Call it with no arguments.
get_strategy_visualsReturns strategy visual assets for a revision: Mermaid diagram code/image and infographic image URL. Use generateInfographicIfMissing=true to trigger infographic generation when missing.4 params
Returns strategy visual assets for a revision: Mermaid diagram code/image and infographic image URL. Use generateInfographicIfMissing=true to trigger infographic generation when missing.
generateInfographicIfMissingbooleanincludeDiagrambooleanincludeInfographicbooleanrevisionId*stringget_backtest_visualsReturns signed URLs for visual backtest artifacts (tearsheet, trades, indicators, stats) plus summary metrics and strategy IDs.5 params
Returns signed URLs for visual backtest artifacts (tearsheet, trades, indicators, stats) plus summary metrics and strategy IDs.
backtestId*stringincludeIndicatorsbooleanincludeStatsbooleanincludeTearsheetbooleanincludeTradesbooleanget_backtest_chart_seriesBuilds chart-ready time series data for equity/portfolio/drawdown/returns from stats artifacts and returns points + Vega-Lite spec.3 params
Builds chart-ready time series data for equity/portfolio/drawdown/returns from stats artifacts and returns points + Vega-Lite spec.
backtestId*stringlimitintegerseriesstringequity · portfolio · drawdown · returnsdefault: equityshow_account_overviewAnswers "How is my account doing?" with account value, cash, unrealized P&L and position count for each connected broker account, an account value history chart from saved daily snapshots, and an allocation donut when holdings are complete. Paper and live accounts are shown se...2 params
Answers "How is my account doing?" with account value, cash, unrealized P&L and position count for each connected broker account, an account value history chart from saved daily snapshots, and an allocation donut when holdings are complete. Paper and live accounts are shown se...
brokerCredentialIdstringmodestringlive · paper · alldefault: allshow_holdingsAnswers "What do I hold?" and "Which positions are winning?" with a holdings table per account (value, unrealized P&L in dollars and percent, weight) and an allocation donut when the total is complete. Fetches the holdings itself; use this first for a general holdings or alloc...3 params
Answers "What do I hold?" and "Which positions are winning?" with a holdings table per account (value, unrealized P&L in dollars and percent, weight) and an allocation donut when the total is complete. Fetches the holdings itself; use this first for a general holdings or alloc...
brokerCredentialIdstringmodestringlive · paper · alldefault: allsortBystringvalue · pnldefault: valueshow_positionAnswers "How is my TSLA position doing?" and "How much TSLA exposure do I have?" for a stock symbol or an options underlying: value, unrealized P&L, shares and average cost, exposure in share-equivalents (option delta only when the broker reports it), and a payoff chart at exp...2 params
Answers "How is my TSLA position doing?" and "How much TSLA exposure do I have?" for a stock symbol or an options underlying: value, unrealized P&L, shares and average cost, exposure in share-equivalents (option delta only when the broker reports it), and a payoff chart at exp...
brokerCredentialIdstringsymbol*stringshow_backtest_dashboardAnswers "How did my backtest do?" with total return, CAGR, max drawdown, Sharpe and the equity curve for one saved backtest. Use a backtestId from list_backtests or backtest_status. Results are simulated. Never starts or changes a backtest. Read-only. Shows an interactive pane...3 params
Answers "How did my backtest do?" with total return, CAGR, max drawdown, Sharpe and the equity curve for one saved backtest. Use a backtestId from list_backtests or backtest_status. Results are simulated. Never starts or changes a backtest. Read-only. Shows an interactive pane...
backtestId*stringlimitintegerseriesstringequity · drawdowndefault: equityshow_backtest_comparisonAnswers "Which of my backtests did better?" for 2 to 5 saved backtests: equity lines started at 100 on the same chart plus a metric table (total return, CAGR, max drawdown, Sharpe, trades). Results are simulated. Read-only. Shows an interactive panel in apps that support MCP A...1 params
Answers "Which of my backtests did better?" for 2 to 5 saved backtests: equity lines started at 100 on the same chart plus a metric table (total return, CAGR, max drawdown, Sharpe, trades). Results are simulated. Read-only. Shows an interactive panel in apps that support MCP A...
backtestIds*arrayshow_bot_activityFor a general activity or trading-today summary, call this before separate order telemetry, run history or logs. Inspect its returned dated account, holdings and orders first, then fetch only missing decision details. Daily price attribution requires loading data-analysis and...2 params
For a general activity or trading-today summary, call this before separate order telemetry, run history or logs. Inspect its returned dated account, holdings and orders first, then fetch only missing decision details. Daily price attribution requires loading data-analysis and...
deploymentId*stringlimitintegershow_option_payoffAnswers "What happens to this option trade at expiration?" from legs the user describes (call or put, long or short, strike, premium, contracts). Draws profit and loss at expiration with breakevens. Uses only the inputs given; fetches no data and places no trade. Read-only. Sh...6 params
Answers "What happens to this option trade at expiration?" from legs the user describes (call or put, long or short, strike, premium, contracts). Draws profit and loss at expiration with breakevens. Uses only the inputs given; fetches no data and places no trade. Read-only. Sh...
expiration*stringfeesnumberlegs*arraypriceRangearrayunderlying*stringunderlyingPricenumbershow_trading_cardsThis panel uses supplied inputs; rendering does not independently verify their prices, timestamps or account marks. For portfolio attribution, use run_data_analysis to calculate and publish every holding’s daily change/contribution and quantity × ending price versus reported m...1 params
This panel uses supplied inputs; rendering does not independently verify their prices, timestamps or account marks. For portfolio attribution, use run_data_analysis to calculate and publish every holding’s daily change/contribution and quantity × ending price versus reported m...
cards*arrayget_tool_call_metricsReturns per-tool call duration metrics for a conversation with an explicit latency boundary. Includes individual call records and aggregates, or exact Agent-vs-Node paired comparisons with transport/Agent overhead. Use this to identify slow tools and optimize your workflow.3 params
Returns per-tool call duration metrics for a conversation with an explicit latency boundary. Includes individual call records and aggregates, or exact Agent-vs-Node paired comparisons with transport/Agent overhead. Use this to identify slow tools and optimize your workflow.
conversationIdstringmeasurementScopestringagent_round_trip · node_server · comparisondefault: agent_round_triptoolNamestringsave_marketplace_publicationCreates or updates a draft for exactly one explicit subject. Can set Marketplace presentation and default-deny capabilities, then optionally publish. Set regenerateHeroImage=true to generate and upload fresh artwork through the website GPT Image 2.5 service (one paid generatio...20 params
Creates or updates a draft for exactly one explicit subject. Can set Marketplace presentation and default-deny capabilities, then optionally publish. Set regenerateHeroImage=true to generate and upload fresh artwork through the website GPT Image 2.5 service (one paid generatio...
accountIdstringallowClonebooleanallowCodeViewbooleanallowExactQuantitiesViewbooleanallowFilledTradesViewbooleanallowOpenOrdersViewbooleanallowPerformanceViewbooleanallowPositionsViewbooleanallowTradeReasonViewbooleanassetClassesarrayautoPublishTradesbooleandescriptionstringdetailsstringpublishbooleanregenerateHeroImagebooleanremoveHeroImagebooleanstrategyIdstringsubjectKind*stringaccount · strategytagsarraytitlestringpublish_to_marketplacePublishes a strategy to the public marketplace where users can discover it. Marketplace listing status is the public contract; bot deployments remain private. Tags can be set for categorization (holdingPeriod, riskLevel, plan tier). Free and paid monthly listings are supported...9 params
Publishes a strategy to the public marketplace where users can discover it. Marketplace listing status is the public contract; bot deployments remain private. Tags can be set for categorization (holdingPeriod, riskLevel, plan tier). Free and paid monthly listings are supported...
accountIdstringallowHoldingsViewbooleanbacktestIdstringpriceAmountCentsintegerpriceCurrencystringpricingModelstringfree · monthlyprotectCodebooleanstrategyId*stringtagsobjectunpublish_from_marketplaceRemoves a strategy from the public marketplace. The strategy becomes private and is no longer discoverable by other users. Existing private share links (if any) are NOT affected. Uses soft-delete (sets isActive=false). Accepts the marketplace listing ID, or a strategy/aiStrate...3 params
Removes a strategy from the public marketplace. The strategy becomes private and is no longer discoverable by other users. Existing private share links (if any) are NOT affected. Uses soft-delete (sets isActive=false). Accepts the marketplace listing ID, or a strategy/aiStrate...
aiStrategyIdstringlistingIdstringstrategyIdstringclone_strategyCreates a private dormant copy for the authenticated user. To copy a Marketplace listing, pass its listingId from marketplace_strategies; the publisher must have allowed copying. This copies published code, not a first-build workspace: continue with secure broker/key setup and...6 params
Creates a private dormant copy for the authenticated user. To copy a Marketplace listing, pass its listingId from marketplace_strategies; the publisher must have allowed copying. This copies published code, not a first-build workspace: continue with secure broker/key setup and...
aiStrategyIdstringlistingIdstringnamestringsharePasswordstringshareTokenstringstrategyIdstringcommunityBotSpot's trader Community: what other traders and their bots are doing right now. Read it often, before building or changing a strategy, to see what is working for real people: action feed reads the newest posts (kind=trades for shared and verified trades, kind=bots for publi...15 params
BotSpot's trader Community: what other traders and their bots are doing right now. Read it often, before building or changing a strategy, to see what is working for real people: action feed reads the newest posts (kind=trades for shared and verified trades, kind=bots for publi...
action*stringfeed · search · thread · profile · post · replybodystringcursorstringkindstringall · trades · botslimitintegermarketplaceListingIdstringparentPostIdstringpostIdstringpublicationIdstringquerystringrequestIdstringtabstringfor_you · followinguserstringverifiedTradeSourceobjectviewstringposts · tradescompetitionsBrowse public trading competitions, their rules, prizes and account leaderboards. list finds competitions; get reads one; leaderboard follows entered accounts; my_entry reads your own entry. enter registers your explicitly selected brokerage account (brokerCredentialId); no st...5 params
Browse public trading competitions, their rules, prizes and account leaderboards. list finds competitions; get reads one; leaderboard follows entered accounts; my_entry reads your own entry. enter registers your explicitly selected brokerage account (brokerCredentialId); no st...
action*stringlist · get · leaderboard · eligibility · my_entry · enterbotIdstringbrokerCredentialIdstringcontestIdstringrulesAcceptedbooleansearch_memoryRetrieve relevant prior memories about this user. CALL search_memory at the START of any conversation where the user: - References past context ("like we discussed", "remember when", "last time") - Asks for advice that should reflect their preferences - Describes a trading pro...3 params
Retrieve relevant prior memories about this user. CALL search_memory at the START of any conversation where the user: - References past context ("like we discussed", "remember when", "last time") - Asks for advice that should reflect their preferences - Describes a trading pro...
filtersobjectlimitintegerquery*stringdelete_memoryPermanently delete a memory about the user. CALL delete_memory when the user explicitly asks to forget something, OR when they correct a fact you retrieved ("no, I switched to IBKR last month" — delete the old "user trades on Tradier" memory after writing the new one). Obtain...1 params
Permanently delete a memory about the user. CALL delete_memory when the user explicitly asks to forget something, OR when they correct a fact you retrieved ("no, I switched to IBKR last month" — delete the old "user trades on Tradier" memory after writing the new one). Obtain...
memoryId*stringget_education_offersLive facts about the AI Trading Bootcamp and the free live challenge show, read from the database. Use when the user asks about the Bootcamp, its price, payment plans, curriculum or dates, or about the free live challenge or show (the next date and time), or when a new or stuc...
Live facts about the AI Trading Bootcamp and the free live challenge show, read from the database. Use when the user asks about the Bootcamp, its price, payment plans, curriculum or dates, or about the free live challenge or show (the next date and time), or when a new or stuc...
No parameters. Call it with no arguments.
skillsBotSpot's free strategy-building skills: expert guides for writing LumiBot trading strategies (stocks, ETFs, options), making them fast, and using the BotSpot tools well. Before you write, edit or debug a strategy, call action=list, then action=get with the skill name and foll...3 params
BotSpot's free strategy-building skills: expert guides for writing LumiBot trading strategies (stocks, ETFs, options), making them fast, and using the BotSpot tools well. Before you write, edit or debug a strategy, call action=list, then action=get with the skill name and foll...
action*stringlist · getnamestringreferencestringsearch_conversation_historySearch the user's full conversation history via Postgres full-text search. CALL search_conversation_history when the user refers to specific past messages, errors, decisions, or details that you do not already see in the live context window. Examples of when to call: - "What w...3 params
Search the user's full conversation history via Postgres full-text search. CALL search_conversation_history when the user refers to specific past messages, errors, decisions, or details that you do not already see in the live context window. Examples of when to call: - "What w...
conversationIdstringlimitintegerquery*stringlist_broker_credentialsLists saved broker credential metadata for the authenticated user. Raw credential values are never returned. Use an item's id as start_deployment.brokerCredentialId only when the user explicitly named that exact saved broker connection/account for this deployment. If no matchi...2 params
Lists saved broker credential metadata for the authenticated user. Raw credential values are never returned. Use an item's id as start_deployment.brokerCredentialId only when the user explicitly named that exact saved broker connection/account for this deployment. If no matchi...
brokerCredentialIdstringbrokerProviderstringget_broker_token_refresh_statusRead-only token refresh status for one saved broker credential owned by the authenticated user. Use this after Schwab or Tradier OAuth snapshot runs to verify whether Node persisted rotated token material. In a reconnection conclusion, state the returned snapshotStatus and sna...1 params
Read-only token refresh status for one saved broker credential owned by the authenticated user. Use this after Schwab or Tradier OAuth snapshot runs to verify whether Node persisted rotated token material. In a reconnection conclusion, state the returned snapshotStatus and sna...
brokerCredentialId*stringtest_schwab_broker_connectionOne-stop MCP smoke test for an authenticated user's saved Schwab broker connection. If brokerCredentialId is omitted and exactly one active Schwab credential exists, this selects it automatically. The tool checks sanitized token-refresh readiness and, by default, requests one...5 params
One-stop MCP smoke test for an authenticated user's saved Schwab broker connection. If brokerCredentialId is omitted and exactly one active Schwab credential exists, this selects it automatically. The tool checks sanitized token-refresh readiness and, by default, requests one...
brokerCredentialIdstringincludeDiagnosticsbooleanincludeLogsbooleanlogLimitintegerrunSnapshotbooleanupdate_broker_credentialUpdates broker credential metadata and optionally replaces Vault material for the authenticated owner. This replaces the saved credential values when credentialValues is provided; it never returns raw values. Use this for broker login/trading credentials only. Do not add a bro...5 params
Updates broker credential metadata and optionally replaces Vault material for the authenticated owner. This replaces the saved credential values when credentialValues is provided; it never returns raw values. Use this for broker login/trading credentials only. Do not add a bro...
brokerstringcredentialValuesobjectdisplayNamestringid*stringpaperOrLivestringpaper · livedelete_broker_credentialDeletes broker credential material from Vault and marks the authenticated user's metadata row deleted. Existing running deployments may fail if they still depend on this credential; create a new credential and redeploy instead of deleting an active dependency.1 params
Deletes broker credential material from Vault and marks the authenticated user's metadata row deleted. Existing running deployments may fail if they still depend on this credential; create a new credential and redeploy instead of deleting an active dependency.
id*stringlist_filesLists files in any saved strategy revision owned by the authenticated user. Folders are represented by slash-separated file paths. For the current attached/open strategy, omit strategyId and revisionId so the server uses the latest active revision from conversation state, fall...2 params
Lists files in any saved strategy revision owned by the authenticated user. Folders are represented by slash-separated file paths. For the current attached/open strategy, omit strategyId and revisionId so the server uses the latest active revision from conversation state, fall...
revisionIdvaluestrategyIdstringget_fileReturns one file from any saved strategy revision owned by the authenticated user, including an opaque editHandle for safe edits. Call list_files before reading optional files such as rules.json or helpers whose presence is unknown; read only paths returned for that revision....3 params
Returns one file from any saved strategy revision owned by the authenticated user, including an opaque editHandle for safe edits. Call list_files before reading optional files such as rules.json or helpers whose presence is unknown; read only paths returned for that revision....
path*stringrevisionIdvaluestrategyIdstringcreate_fileCreates a file in a new immutable revision for any strategy owned by the authenticated user. For the current attached workspace, omit strategyId and revisionId. When create_strategy attaches the workspace through conversationUpdate, these defaults also apply to new first-build...6 params
Creates a file in a new immutable revision for any strategy owned by the authenticated user. For the current attached workspace, omit strategyId and revisionId. When create_strategy attaches the workspace through conversationUpdate, these defaults also apply to new first-build...
attachmentobjectcontentstringdescriptionstringpath*stringrevisionIdvaluestrategyIdstringreplace_fileReplaces the full contents of an existing strategy file in a new immutable revision for any strategy owned by the authenticated user. Requires editHandle from get_file/list_files. Use this for first-build main.py replacement after create_strategy returns neutral starter files....6 params
Replaces the full contents of an existing strategy file in a new immutable revision for any strategy owned by the authenticated user. Requires editHandle from get_file/list_files. Use this for first-build main.py replacement after create_strategy returns neutral starter files....
content*stringdescriptionstringeditHandle*stringpath*stringrevisionIdvaluestrategyIdstringcreate_dashboard_fileCreates a template-first dashboard file at dashboards/<name>.dashboard.js in a new immutable strategy revision. Use this when the user asks to create a dashboard, then use get_file and patch_file to customize the dashboard from the template.4 params
Creates a template-first dashboard file at dashboards/<name>.dashboard.js in a new immutable strategy revision. Use this when the user asks to create a dashboard, then use get_file and patch_file to customize the dashboard from the template.
pathstringrevisionId*stringstrategyId*stringtitlestringdelete_fileDeletes a file in a new immutable revision for any strategy owned by the authenticated user. Requires editHandle from get_file/list_files to prevent stale edits. main.py cannot be deleted. For the current attached/open strategy, omit strategyId and revisionId; pass explicit id...5 params
Deletes a file in a new immutable revision for any strategy owned by the authenticated user. Requires editHandle from get_file/list_files to prevent stale edits. main.py cannot be deleted. For the current attached/open strategy, omit strategyId and revisionId; pass explicit id...
descriptionstringeditHandle*stringpath*stringrevisionIdvaluestrategyIdstringpatch_fileApplies exact text or guarded line-range edits to one file in any strategy owned by the authenticated user and creates a new immutable strategy revision. Requires editHandle from get_file/list_files. For insert_before and insert_after operations, include an exact unique anchor...6 params
Applies exact text or guarded line-range edits to one file in any strategy owned by the authenticated user and creates a new immutable strategy revision. Requires editHandle from get_file/list_files. For insert_before and insert_after operations, include an exact unique anchor...
descriptionstringeditHandle*stringoperations*arraypath*stringrevisionIdvaluestrategyIdstringget_active_planReturns the active read-only user-visible plan for the current conversation. Plan tools update plan state only; they never hide, block, route, or enable other tools.1 params
Returns the active read-only user-visible plan for the current conversation. Plan tools update plan state only; they never hide, block, route, or enable other tools.
conversationIdstringcreate_planCreates a persisted, user-visible plan for substantial work in the current conversation. Use this for strategy builds, strategy edits, research, deployment setup, backtest analysis, broker investigation, and other multi-step tasks. Do not use this for greetings, small talk, si...7 params
Creates a persisted, user-visible plan for substantial work in the current conversation. Use this for strategy builds, strategy edits, research, deployment setup, backtest analysis, broker investigation, and other multi-step tasks. Do not use this for greetings, small talk, si...
conversationIdstringitems*arraykindstringreplaceExistingbooleanreplacementReasonvaluesupersedesPlanIdvaluetitle*stringadd_plan_itemAdds a user-visible item to the active plan when new work is discovered. When working in the current conversation, omit planId unless you already have the actual plan id; never pass a plan item id as planId. All new-item fields belong inside the nested `item` object, including...3 params
Adds a user-visible item to the active plan when new work is discovered. When working in the current conversation, omit planId unless you already have the actual plan id; never pass a plan item id as planId. All new-item fields belong inside the nested `item` object, including...
conversationIdstringitem*objectplanIdvalueSponsors
Readme
Connect ChatGPT, Claude and other agents to your broker
Claude Code, one command:
claude mcp add --transport http botspot https://mcp.botspot.trade/mcp
Details
- Repository
- github.com/lumiwealth/botspot-mcp
- Category
- Finance & Commerce
- Transport
- HTTP
- Registry
- MCP registry, active
- Resources
- 3
- Tools verified
- Nov 6, 2026