lumiwealth avatar

BotSpot: AI Trading, Backtests and Bots

lumiwealth/botspot-mcp

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-trading

Run 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/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 80 tools

Verified 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...

Parameters* required
backtestId*string
codeDigeststring
overall*string
one of pass · fail · unknown · skip
revisionId*string
rules*array
rulesDigeststring
list_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...

Parameters* required
aiStrategyIdstring
idstring
includeArtifactsboolean
Include artifact manifests in each backtest item (default false to keep responses lightweight).default: false
limitinteger
offsetinteger
default: 0
scopestring
one of all · conversation · strategydefault: all
sortBystring
Server-side sort field. Supported values: createdAt, totalReturn, cagrAnnualReturn, sharpe, maxDrawdown, status.one of createdAt · totalReturn · cagrAnnualReturn · sharpe · maxDrawdown · statusdefault: createdAt
sortOrderstring
Sort direction: desc (default) or asc.one of asc · descdefault: desc
statusstring
Optional comma-separated status filter. Valid values: initiated, in_progress, completed, completed_no_trades, failed, force_stopped, terminated_timeout, not_found, completed_with_errors. Do not use...
strategyIdstring
get_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...

Parameters* required
backtestId*string
Actual backtest run UUID. Use the id returned by list_backtests or an explicit user-provided backtest id. Do not use a strategy id, aiStrategyId, revisionId, browser URL revisionId, conversation id...
label*string
User-facing artifact label from list_backtests/includeArtifacts or get_backtest_artifact guidance, e.g. stats.csv, trades.csv, agent_detail.parquet, tearsheet.html, completion.json. Runtime logs ar...
get_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...

Parameters* required
backtestId*string
Actual backtest run UUID for a historical simulation, from list_backtests or an explicitly identified user-provided backtest. A bot/deployment id or a list_deployment_runs runId is not a backtestId...
contextLinesinteger
diagnosticPresetstring
one of broker_order_failure · runtime_failure · startup · orders
endTimeIsovalue
limitinteger
nextTokenstring
queriesarray
querystring
sortstring
one of asc · desc
startTimeIsostring
suppressNoiseboolean
start_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...

Parameters* required
budgetnumber
Starting cash for the backtest (in the quote currency, typically USD). Sets BACKTESTING_BUDGET in the backtest environment.
endDate*string
The last calendar day to simulate, inclusive. Preserve the requested last date; do not add a day as though this were an exclusive upper bound.
envVarSetIdsarray
Saved BotSpot environment variable IDs to inject into the backtest runner. The MCP server never reads or exposes the saved values; BotSpot issues a short-lived runtime secret for the backtest.
revisionIdstring
startDate*string
The first calendar day to simulate, inclusive. Preserve the user-requested date, normally YYYY-MM-DD.
variants*array
start_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...

Parameters* required
budgetnumber
Starting cash for the backtest (in the quote currency, typically USD). Sets BACKTESTING_BUDGET in the backtest environment.
dataConnectionIdstring
Saved broker connection to supply this backtest history, such as Kalshi prediction contracts, Alpaca or ProjectX futures. Credentials and account mode come from the saved connection through its pri...
dataProviderstring
Only for MCP clients without a BotSpot chat conversation (Claude, ChatGPT, Codex): the data source for this backtest, e.g. botspot_auto, alpaca, kalshi, polygon, or projectx. Inside BotSpot chat, u...
endDate*string
The last calendar day to simulate, inclusive. Preserve the requested last date; do not add a day as though this were an exclusive upper bound.
envVarSetIdsarray
Saved BotSpot environment variable IDs to inject into the backtest runner. The MCP server never reads or exposes the saved values; BotSpot issues a short-lived runtime secret for the backtest.
parametersobject
Strategy parameters to override at runtime (e.g. ALLOCATION, symbol, pct_to_trade). BotSpot saves these as an immutable strategy parameter set reusable by backtests and live bots.
revisionIdstring
startDate*string
The first calendar day to simulate, inclusive. Preserve the user-requested date, normally YYYY-MM-DD.
strategyParameterSetIdstring
Existing immutable strategy parameter set for this exact saved revision.
stop_backtestForce-stop an in-progress backtest by ID.3 params

Force-stop an in-progress backtest by ID.

Parameters* required
backtestIdstring
botIdstring
revisionIdstring
backtest_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`:...

Parameters* required
backtestId*string
Actual backtest run UUID. Use the id returned by list_backtests or an explicit user-provided backtest id. Do not use a strategy id, aiStrategyId, revisionId, browser URL revisionId, conversation id...
query_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...

Parameters* required
artifactType*string
The tabular artifact type to query: trades.csv, stats.csv, indicators.csv, agent_detail.parquet, memory_events.parquet, memory_retrievals.parquet, or memory_state.parquet. Runtime logs are not quer...
backtestId*string
Actual backtest run UUID. Use the same backtest id previously used for get_backtest_artifact. Do not use a strategy id, aiStrategyId, revisionId, browser URL revisionId, conversation id, or a place...
queriesarray
Batch several named read-only SQL queries against the same tabular artifact in one tool call. Strongly prefer this for trades, stats, agent_detail, indicators, and other tabular evidence when diagn...
sqlstring
Single read-only SQL over the selected artifact as table "data". Example: SELECT COUNT(*) FROM data. Inspect its schema before referencing other columns. Pass either sql or queries, not both.
run_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...

Parameters* required
deploymentId*string
idempotencyKeystring
start_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...

Parameters* required
acceptancesobject
aiStrategyRevisionId*string
brokerCredentialIdvalue
deploymentModestring
one of auto · always_on · scheduleddefault: auto
envVarSetIdsarray
idempotencyKeystring
memoryGbnumber
one of 2 · 3 · 4
runImmediatelyboolean
scheduleMetadataobject
schedulePolicyIdvalue
strategyParameterSetIdvalue
stop_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...

Parameters* required
deploymentId*string
idempotencyKeystring
update_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...

Parameters* required
aiStrategyRevisionId*string
Use the exact current revision for a restart. This update tool has NO top-level source or liveCadenceMatchesBacktest parameters: never send either field. Those names are fields inside scheduleMetad...
brokerCredentialIdvalue
Exact saved broker ID from authoritative deployment evidence when keeping its account. If unavailable, omit it and tell the owner to confirm/select the named account on the approval page. An omitte...
deploymentId*string
deploymentModestring
one of always_on · scheduled
envVarSetIdsarray
For a restart keeping saved variables, this field must contain the matching active item.id values from saved_env_vars(action="list"). Copy that returned ID array into this field before calling. Omi...
idempotencyKeystring
runImmediatelyboolean
For an explicit restart with an immediate first iteration, set true WITHOUT adding deploymentMode, schedulePolicyId or scheduleMetadata. Immediate execution does not require a new schedule. Omit th...
scheduleMetadataobject
Omit entirely to preserve the current schedule. Do not infer a new cadence from another schedule or from the time of day. Supply only when the user explicitly requests a schedule change.
schedulePolicyIdvalue
Omit for a restart or version update that keeps the existing cadence. Supply only for an explicitly requested schedule change.
strategyParameterSetIdvalue
place_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...

Parameters* required
analysisBindingsobject
brokerCredentialIdstring
brokerSelectionobject
Preserve the user-requested provider and/or paper/live mode while leaving brokerCredentialId absent when no exact saved connection was selected. The user chooses a matching saved connection at appr...
idempotencyKeystring
reason*string
Required explicit trade explanation: at least 200 Unicode characters; prefer 600–2,500 covering intent, evidence and material risks. Maximum 100,000 characters and 400 KiB UTF-8. Do not include cre...
trade*object
get_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...

Parameters* required
actionId*string
operationstring
Omit for status. revoke_trade_window revokes further trades authorized by this source action; requires place_trade scope and does not cancel submitted orders.one of status · revoke_trade_window
get_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...

Parameters* required
actionIdstring
managerBotIdvalue
singleTradeBotIdstring
list_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...

Parameters* required
aiStrategyIdvalue
isRealMoneyboolean
limitinteger
searchstring
statusstring
Optional single status filter. Omit status to list all deployments.one of running · stopped · failed · in_progress · initiated · queued
statusesarray
Optional multi-status filter. Use this instead of a comma-separated status string.
strategyIdstring
get_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...

Parameters* required
contextLinesinteger
deploymentId*string
diagnosticPresetstring
one of broker_order_failure · runtime_failure · startup · orders
endTimeIsovalue
limitinteger
nextTokenstring
queriesarray
querystring
sortstring
one of asc · desc
startTimeIsostring
suppressNoiseboolean
list_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...

Parameters* required
deploymentIdstring
deploymentIdsarray
limitinteger
list_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...

Parameters* required
deploymentId*string
runIdstring
get_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...

Parameters* required
artifactKeystring
deploymentId*string
kindstring
one of agent_detail · memory_events · memory_retrievals · memory_state · logs · errors
runIdstring
query_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...

Parameters* required
artifactKeystring
deploymentIdstring
kindstring
one of agent_detail · memory_events · memory_retrievals · memory_state · logs · errorsdefault: agent_detail
maxRowsinteger
runIdstring
sql*string
targetsarray
get_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...

Parameters* required
assetTypestring
one of stock · option · future · crypto_future · cont_future · forex
brokerCredentialIdstring
exchangevalue
expirationstring
marketstring
outcomestring
Selected prediction contract outcome; Kalshi uses yes or no.
quoteSymbolvalue
rightstring
one of call · put · CALL · PUT
strikenumber
symbols*array
get_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...

Parameters* required
assetTypestring
one of stock · option · future · crypto_future · cont_future · forex
brokerCredentialIdstring
brokerProviderstring
includeCashPositionsboolean
outcomestring
Selected prediction contract outcome; Kalshi uses yes or no.
symbolstring
get_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...

Parameters* required
brokerCredentialIdstring
brokerProviderstring
get_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...

Parameters* required
deploymentId*string
hoursAgointeger
get_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...

Parameters* required
deploymentId*string
endTimeIsovalue
endTimestampinteger
historyboolean
includeRecentOrdersboolean
limitinteger
nextTokenstring
recentOrdersHoursAgointeger
recentOrdersLimitinteger
sortstring
one of asc · desc
startTimeIsostring
startTimestampinteger
symbolstring
get_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...

Parameters* required
deploymentId*string
endvalue
frequencystring
one of all · hour · day
limitinteger
startstring
get_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...

Parameters* required
deploymentId*string
endTimeIsovalue
endTimestampinteger
hoursAgointeger
includeOpenboolean
limitinteger
nextTokenstring
sortstring
one of asc · desc
startTimeIsostring
startTimestampinteger
statusstring
statusesarray
symbolstring
create_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...

Parameters* required
descriptionstring
Optional notes for the initial revision
name*string
Required human-readable strategy title. Use natural words or title case, such as "Competition Risk Trader". Do not use slug-style, snake_case, kebab-case, file names, or lowercase underscore names...
set_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...

Parameters* required
aiStrategyIdstring
revisionIdstring
Exact AiStrategyRevision.id to activate. Omit when restoring by user-facing version number and pass version instead.
strategyIdstring
versioninteger
User-facing version number to restore (for example 641). Prefer this when the user names a historical version; the server resolves it to the owned revisionId.
set_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...

Parameters* required
aiStrategyIdstring
AiStrategy.id for ownership resolution
revisionId*string
AiStrategyRevision.id to update
runtimeSecretRequirements*value
Structured runtime secret requirements for this revision, or null to clear. Use {version:1, requirements:[{label, description, requiredFor:['deploy'], allOf:[{key,title,description}], anyOf:[...]}]...
strategyIdstring
Strategy.id for ownership resolution
set_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...

Parameters* required
aiEnabledboolean
Explicit classification after inspecting this exact revision: true when executable code uses AI for decisions, false for Python rules. Omit to preserve the saved classification.
aiStrategyIdstring
AiStrategy.id for ownership resolution
assetClasses*array
Asset classes the strategy actually trades.
dataRequirements*array
Asset classes whose market data the strategy reads.
revisionId*string
AiStrategyRevision.id to update
strategyIdstring
Strategy.id for ownership resolution
switch_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,...

Parameters* required
aiStrategyIdstring
Target AiStrategy.id. Use list_strategies to resolve this when the user names a different strategy.
revisionIdstring
Optional target revision id. Omit when switching by strategy name unless the user explicitly asked for a specific version; the newest target revision will be selected.
strategyIdstring
Target Strategy.id. Use list_strategies to resolve this when the user names a different strategy.
list_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...

Parameters* required
aiStrategyIdstring
limitinteger
Maximum number of newest revisions to return in this bounded page. Defaults to 20 and is capped at 50. Ignored when version is set. Full revisionIds are always preserved.
offsetinteger
Zero-based page offset for older revisions. Use only when the first bounded page is not enough. Ignored when version is set.
strategyIdstring
versioninteger
Exact user-facing version number to retrieve (for example 641). Prefer this over limit/offset when the user names a specific historical version so the agent does not page through hundreds of newest...
generate_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...

Parameters* required
prompt*string
User's code generation request. IMPORTANT: This tool is rarely needed - normal trading strategy requests should use create_strategy plus file tools for LumiBot Python strategies. Only use this tool...
list_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...

Parameters* required
limitinteger
Max results to return (default 50)
namestring
Filter by name (case-insensitive partial or close word-token match)
offsetinteger
Skip N results for pagination (default 0)
get_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.

Parameters* required
aiStrategyIdstring
The AiStrategy entity ID
strategyIdstring
The Strategy entity ID
delete_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...

Parameters* required
aiStrategyIdstring
The AiStrategy entity ID
confirmboolean
Set to true to actually delete. Default false returns a preview of what will be affected.
strategyIdstring
The Strategy entity ID
update_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.

Parameters* required
aiStrategyIdstring
The AiStrategy entity ID
namestring
New name for the strategy
strategyIdstring
The Strategy entity ID
create_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.

Parameters* required
productSlugsarray
create_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.

Parameters* required
generateInfographicIfMissingboolean
default: false
includeDiagramboolean
default: true
includeInfographicboolean
default: true
revisionId*string
get_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.

Parameters* required
backtestId*string
includeIndicatorsboolean
default: true
includeStatsboolean
default: true
includeTearsheetboolean
default: true
includeTradesboolean
default: true
get_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.

Parameters* required
backtestId*string
limitinteger
default: 1000
seriesstring
one of equity · portfolio · drawdown · returnsdefault: equity
show_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...

Parameters* required
brokerCredentialIdstring
modestring
one of live · paper · alldefault: all
show_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...

Parameters* required
brokerCredentialIdstring
modestring
one of live · paper · alldefault: all
sortBystring
one of value · pnldefault: value
show_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...

Parameters* required
brokerCredentialIdstring
symbol*string
show_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...

Parameters* required
backtestId*string
limitinteger
default: 1000
seriesstring
one of equity · drawdowndefault: equity
show_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...

Parameters* required
backtestIds*array
show_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...

Parameters* required
deploymentId*string
limitinteger
default: 20
show_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...

Parameters* required
expiration*string
feesnumber
default: 0
legs*array
priceRangearray
underlying*string
underlyingPricenumber
show_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...

Parameters* required
cards*array
get_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.

Parameters* required
conversationIdstring
Conversation ID to fetch tool metrics for. Defaults to the current conversation if omitted.
measurementScopestring
Latency boundary. agent_round_trip includes Agent, network, Node routing, and response handling; node_server measures the Node request path; comparison pairs both clocks by exact toolCallId.one of agent_round_trip · node_server · comparisondefault: agent_round_trip
toolNamestring
Filter results to a specific tool name.
save_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...

Parameters* required
accountIdstring
allowCloneboolean
allowCodeViewboolean
allowExactQuantitiesViewboolean
allowFilledTradesViewboolean
allowOpenOrdersViewboolean
allowPerformanceViewboolean
allowPositionsViewboolean
allowTradeReasonViewboolean
Explicit consent to publish private trade explanations in Community.
assetClassesarray
autoPublishTradesboolean
Explicit consent to automatically post future confirmed fills in Community. Requires filled-trade visibility.
descriptionstring
detailsstring
publishboolean
Publish after saving. Default false.
regenerateHeroImageboolean
Regenerate and upload artwork using the same service as website Settings. Do not combine with removeHeroImage.
removeHeroImageboolean
strategyIdstring
subjectKind*string
one of account · strategy
tagsarray
titlestring
publish_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...

Parameters* required
accountIdstring
Exact owned proof account; paper and real use separate listings.
allowHoldingsViewboolean
Whether public listing viewers can see holdings.
backtestIdstring
Exact owned successful headline backtest. Reuse the current published ID to preserve its statistics; a different run must cover at least 180 days.
priceAmountCentsinteger
Monthly price in cents. Required for pricingModel=monthly.
priceCurrencystring
ISO currency code. Default usd.
pricingModelstring
Marketplace pricing. Default free.one of free · monthly
protectCodeboolean
Hide strategy code. Paid monthly listings always force this true.
strategyId*string
The Strategy entity ID (required)
tagsobject
Categorization tags for the listing
unpublish_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...

Parameters* required
aiStrategyIdstring
The AiStrategy entity ID (alternative)
listingIdstring
The marketplace listing ID (fastest lookup)
strategyIdstring
The Strategy entity ID (alternative)
clone_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...

Parameters* required
aiStrategyIdstring
The AiStrategy entity ID for cloning revisions. If not provided, resolved from strategyId.
listingIdstring
A Marketplace listing id from marketplace_strategies; copies that listing.
namestring
Optional name for the copy. Defaults to Name (Copy), Name (Copy 2), and so on.
sharePasswordstring
Password required by a protected private link, if configured.
shareTokenstring
Share token from a private share link. Required for private strategies not owned by you.
strategyIdstring
The Strategy entity ID to clone. Required unless listingId is given.
communityBotSpot'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...

Parameters* required
action*string
feed: newest public posts. search: posts matching query. thread: one post and its replies (postId). profile: one member and their posts or trades (user). post: publish a new post (body). reply: com...one of feed · search · thread · profile · post · reply
bodystring
cursorstring
kindstring
feed and search: all (default), trades (shared and verified trades), or bots (activity from public bots, including their automatic trade posts).one of all · trades · bots
limitinteger
marketplaceListingIdstring
parentPostIdstring
postIdstring
publicationIdstring
querystring
search only: words to find in post text or author nickname, e.g. "SPY puts".
requestIdstring
Reuse one UUID for retries of the same post or reply; new content needs a new UUID.
tabstring
feed and search: for_you (everyone, default) or following (people you follow).one of for_you · following
userstring
profile only: the member nickname (with or without @) or user id.
verifiedTradeSourceobject
viewstring
profile only: list the member posts (default) or only their trades.one of posts · trades
competitionsBrowse 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...

Parameters* required
action*string
one of list · get · leaderboard · eligibility · my_entry · enter
botIdstring
Legacy entry identity for withdraw.
brokerCredentialIdstring
Required for enter; optional entry identity for withdraw.
contestIdstring
Required for every action except list.
rulesAcceptedboolean
Required for enter, after the user accepts the rules.
search_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...

Parameters* required
filtersobject
Narrow results by metadata tags. Example: {"strategy_id": "abc"} returns only memories tagged with that strategy.
limitinteger
Max memories to return. Defaults to 5.
query*string
Natural language query to find relevant prior memories. Examples: 'What strategies has the user built before?' 'Does the user prefer aggressive or conservative trading?' 'What was the user's last c...
delete_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...

Parameters* required
memoryId*string
The id of the memory to delete. Obtain from the `id` field in a prior `search_memory` result. The server verifies you own the memory before deleting; ids belonging to other users are silently ignor...
get_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...

Parameters* required
action*string
list returns every skill with its description; get returns one skill.one of list · get
namestring
Skill name from action=list.
referencestring
Optional reference file path listed by action=get, such as references/x.md.
search_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...

Parameters* required
conversationIdstring
Optional: limit search to a single conversation id. Omit to search across ALL of the user's conversations, which is the usual case.
limitinteger
Max messages to return. Defaults to the server-configured maximum (currently 5). Hard ceiling is 20.
query*string
Natural-language keyword search over the user's full message history. Examples: "alpha picks API key error", "TSLA bracket order rejection", "what did we decide about stop losses". The query is pas...
list_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...

Parameters* required
brokerCredentialIdstring
brokerProviderstring
get_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...

Parameters* required
brokerCredentialId*string
test_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...

Parameters* required
brokerCredentialIdstring
includeDiagnosticsboolean
includeLogsboolean
logLimitinteger
runSnapshotboolean
update_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...

Parameters* required
brokerstring
credentialValuesobject
displayNamestring
id*string
paperOrLivestring
one of paper · live
delete_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.

Parameters* required
id*string
list_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...

Parameters* required
revisionIdvalue
Revision id. Omit only for the current attached/open strategy when the MCP token is scoped to an active strategy revision.
strategyIdstring
Strategy id. Omit only for the current attached/open strategy when the MCP token is scoped to an active strategy revision.
get_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....

Parameters* required
path*string
revisionIdvalue
Revision id. Omit only for the current attached/open strategy when the MCP token is scoped to an active strategy revision.
strategyIdstring
Strategy id. Omit only for the current attached/open strategy when the MCP token is scoped to an active strategy revision.
create_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...

Parameters* required
attachmentobject
Exact original upload to import instead of model-transcribed content. Use only when the user requested this import.
contentstring
descriptionstring
path*string
revisionIdvalue
Base revision ID to snapshot from. Omit with strategyId for the current attached/open strategy.
strategyIdstring
Base strategy id. Omit with revisionId for the current attached/open strategy so the server uses the conversation's latest saved revision.
replace_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....

Parameters* required
content*string
descriptionstring
editHandle*string
Opaque edit handle returned by list_files or get_file. It replaces raw hash copying while preserving stale-write protection.
path*string
revisionIdvalue
Base revision ID to snapshot from. Omit with strategyId for the current attached/open strategy.
strategyIdstring
Base strategy id. Omit with revisionId for the current attached/open strategy so the server uses the conversation's latest saved revision.
create_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.

Parameters* required
pathstring
revisionId*string
Base revision ID to snapshot from
strategyId*string
titlestring
delete_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...

Parameters* required
descriptionstring
editHandle*string
Opaque edit handle returned by list_files or get_file. It replaces raw hash copying while preserving stale-write protection.
path*string
revisionIdvalue
Base revision ID to snapshot from. Omit with strategyId for the current attached/open strategy.
strategyIdstring
Base strategy id. Omit with revisionId for the current attached/open strategy.
patch_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...

Parameters* required
descriptionstring
editHandle*string
Opaque edit handle returned by list_files or get_file. It replaces raw hash copying while preserving stale-write protection.
operations*array
path*string
revisionIdvalue
Base revision ID to snapshot from. Omit with strategyId for the current attached/open strategy.
strategyIdstring
Base strategy id. Omit with revisionId for the current attached/open strategy so UUIDs do not need to be transcribed.
get_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.

Parameters* required
conversationIdstring
Optional conversation UUID. Omit this field to use the current MCP conversation context; never pass placeholders such as `current`.
create_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...

Parameters* required
conversationIdstring
Optional conversation UUID. Omit this field to use the current MCP conversation context; never pass placeholders such as `current`.
items*array
At least one actual plan item is required, including a create/reuse request. To read or continue an existing plan, reuse its returned id or call get_active_plan; do not call create_plan with empty...
kindstring
replaceExistingboolean
Set true only when an existing active plan is obsolete or the user explicitly changed the work. Omit this for normal continuation.
replacementReasonvalue
Required when replaceExisting=true. Explain why the current active plan is being cancelled instead of updated.
supersedesPlanIdvalue
The active plan UUID being replaced. Use get_active_plan first if you do not know it.
title*string
add_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...

Parameters* required
conversationIdstring
Optional conversation UUID. Omit this field to use the current MCP conversation context; never pass placeholders such as `current`.
item*object
planIdvalue
Optional plan UUID. In the current conversation, omit planId unless you already have the actual plan id from get_active_plan or a wake message. Never pass a plan item id here; target plan items thr...

Sponsors

Readme

Connect ChatGPT, Claude and other agents to your broker

Add to Cursor Install in VS Code Add to Claude

Claude Code, one command:

claude mcp add --transport http botspot https://mcp.botspot.trade/mcp

View the full README on GitHub

Details

Repository
github.com/lumiwealth/botspot-mcp
Category
Finance & Commerce
Transport
HTTP
Registry
MCP registry, active
Resources
3
Tools verified
Nov 6, 2026

Related Finance & Commerce MCP servers

View all
1mharnett avatarLinkedin Adsmharnett/mcp-linkedin-adsMCP server for LinkedIn Campaign Manager — campaigns, creatives, and analytics0stars
2pipeworx-io avatarClose Crmpipeworx-io/mcp-close-crmClose CRM MCP Pack — wraps the Close (close.com) API v1.0stars
3pipeworx-io avatarCryptopipeworx-io/mcp-cryptoCrypto MCP — cryptocurrency prices and currency conversion.0stars
4pipeworx-io avatarFacebook_adspipeworx-io/mcp-facebook_adsFacebook Ads MCP Pack0stars
5pipeworx-io avatarFintech Intelpipeworx-io/mcp-fintech-intelFinTech Intel MCP — Compound tools that chain SEC, CFPB, FDIC,0stars
6pipeworx-io avatarGoogle_adspipeworx-io/mcp-google_adsGoogle Ads MCP Pack0stars