Skip to main content
The AskFutures MCP server registers 16 tools. They fall into five groups: manage sessions, build and read strategies, run backtests & optimizations, look up reference data, and a couple of utilities.
Two patterns run through every tool. First, almost everything takes a session_id — create or list a session before anything else. Second, building, backtesting, and optimizing are asynchronous: the kickoff tool returns an id, and you call wait_for_completion to learn the result. See developer concepts for the model.

Sessions

ToolWhat it doesKey inputsOutput
create_sessionCreate a workspace for strategy work.title (optional)New session_id + app_url.
list_sessionsList sessions you own.status (active | archived | all, default active), limit (1–100, default 20), cursorArray of sessions, each with an app_url, plus pagination.
get_sessionFetch one session by id.session_idThe session + app_url.

Strategies

ToolWhat it doesKey inputsOutput
list_strategiesList the strategy artifacts in a session, including the canonical parameters needed to optimize.session_idSummaries (artifact_id, version, ticker, backtestStatus, canonicalParameters, …) + app_url.
inspect_strategyFetch one strategy in full.session_id, artifact_idEntry/exit rules, exit conditions, parameters, extraction plan, and backtest status.
create_strategyStart building a new strategy from a plain-English description. Asynchronous.session_id, description, backtest (default true), provider (optional), idempotency_key (optional)An operation_id — call wait_for_completion next.
update_strategyStart modifying an existing strategy. Asynchronous; saves a new version.session_id, artifact_id, changes, provider (optional)An operation_id — call wait_for_completion next.
delete_strategyDelete a draft strategy artifact. Refuses unless confirmed.session_id, artifact_id, confirm (must be true)Deletion result.
create_strategy and update_strategy return before the strategy is ready. The artifact is creating until wait_for_completion reports succeeded. Don’t backtest or optimize against it before then.

Backtests & optimizations

ToolWhat it doesKey inputsOutput
backtest_existing_strategyRun (or re-run) a backtest on an existing artifact. No fork.session_id, artifact_idBacktest started — poll with wait_for_completion (task='backtest').
setup_optimizationConfigure a parameter sweep on a backtested strategy.session_id, artifact_id, parameters (array of { name, min, max, step })An optimization_id (batch is configured, not yet running).
run_optimizationPromote a configured sweep to running — one backtest per combination.session_id, artifact_id, optimization_idRun started — poll with wait_for_completion (task='optimization').
wait_for_completionPoll any async task until it finishes or times out.session_id, task (strategy_op | backtest | optimization), plus the matching ids, timeout_seconds (1–300, default 45)The finished result, or a timed_out status to poll again.
cancel_taskRequest cancellation of an in-flight task. Idempotent.session_id, task, plus the matching idsCancel acknowledged.
create_strategy runs a backtest by default, so most new strategies arrive already tested. Reach for backtest_existing_strategy only when the strategy was created with backtest=false, when its backtestStatus is not_tested or failed, or when you want a deliberate re-run.

Picking the right task and ids

wait_for_completion and cancel_task are keyed by task. Match the id(s) to the task:
taskRequired id(s)Polls / cancels
strategy_opoperation_idA create_strategy / update_strategy operation.
backtestartifact_idThe artifact’s backtestStatus.
optimizationartifact_id and optimization_idThe batch’s status.
Cancellation is best-effort and differs by task. For an optimization, the session’s single running sweep stops between combinations and partial results are kept. For a backtest or a strategy create/update, cancel only takes effect if the worker hasn’t started — short in-flight tasks are allowed to finish.

Reference data

ToolWhat it doesKey inputsOutput
list_symbolsList every tradable CME Group symbol (CME, CBOT, NYMEX, COMEX).(none)count + symbols, each with ticker, name, and sector.
get_reference_dataLook up one contract’s specs.symbolTick size, tick value, margin, session hours, and more.
Call list_symbols to discover what you can trade, then get_reference_data for the exact tick math before you size stops and targets. The same specs are on the contract specs and supported symbols reference pages.

Utility

ToolWhat it doesKey inputsOutput
write_todosReplace the session’s task list (full-replace — send the whole list every call). Useful when an async wait spans turns.session_id, todos (array of { id, content, status }; status is pending | in_progress | completed)Updated plan.
write_todos has full-replace semantics: each call overwrites the entire list, so always send every todo. Keep exactly one in_progress while working, and mark items completed as you finish.

A note on hypothetical results

Any metrics these tools return — P&L, win rate, drawdown, Sharpe — come from a fixed, deterministic simulator over real historical prices, net of modeled slippage and commission. The AI never invents them.
Backtest and optimization results are hypothetical and simulated, not advice. Past performance does not guarantee future results. Always test before you trade.

Next steps

Recipes

Worked end-to-end flows that chain these tools together.

Developer concepts

Sessions, operations, status fields, and the async model.

Connect the MCP server

Add AskFutures to Claude, Cursor, or Codex.

Authentication

Get MCP access enabled and authorized.