AI Drop Zone

Sessions (ADZ-####) that scope batch strategy uploads and backtest runs into one queryable namespace, so you can later ask "what did I test?"

The AI Drop Zone is where strategy files and backtest runs get grouped into named sessions so a burst of experimentation stays organised. A session is a lightweight tag, written ADZ-0007, that you attach to each strategy you register and each backtest you run. Later you can pull up a single session and answer the only question that matters after an hour of iterating: what did I actually test here, and what came out?

It is the human-in-the-loop workspace that the MCP server drives, and it is equally usable by hand. Whether an agent is writing strategies through MCP tools or you are uploading files yourself, every registration and run flows into the same session-scoped store.

This page covers what a session is, its lifecycle, and how to create, tag, and query one. The exact tool and endpoint signatures live in the MCP server reference.

What a session is

A Drop Zone session is a grouping token, not an account or a project with permissions. It exists to tag work that belongs together:

  • A session has an id like ADZ-0001, ADZ-0002, assigned in order.
  • Each session can hold many strategies and many backtest runs.
  • You tag work to it by passing session_id when you register a strategy or run a backtest. Untagged work is still valid — sessions are optional but recommended.
  • A session carries an optional label (and objective) so "RSI mean-reversion, iteration 3" reads better than a bare id.

There are no ownership semantics. The session does not gate access; the operator layer in front of the backend does. A session simply scopes queries.

Where strategies land

When you register a .py strategy file through the Drop Zone, it enters the pipeline at the quick_screen stage — the overfitting-triage gate the public site calls "screen". From there it travels the normal lifecycle: quick_screen → gauntlet → paper → live. Registering a file does not promote it; it only makes it backtestable and visible. Promotion is gated separately — see the pipeline and the gauntlet.

A strategy that uses a pre-certified execution family (such as rsi_momentum) registers straight into quick_screen. A custom BaseStrategy module that is not yet certified registers into research_only until it earns a screen.

Session lifecycle

A session has exactly two states:

StateMeaning
activeOpen. You can keep tagging new strategies and runs to it.
closedFinished. The session is immutable — kept for audit and review, but no new work can be tagged to it.

Closing is idempotent and one-directional. You cannot reopen a closed session or modify it after the fact, so tag your work up front, or simply start a fresh session for the next round of iteration.

Steps

The Drop Zone is most often driven by an MCP client (Claude Desktop) calling Forven's tools, but the same flow maps one-to-one onto the local REST API. Here is the full loop.

  1. Open a session. Call forven_create_session(label="RSI mean reversion iteration 3"). It returns an id like ADZ-0007. Hold onto that id for the rest of the loop.
  2. Get your bearings. Call forven_get_context to learn the workspace path (where strategy .py files go), the strategy template, available datasets, and the canonical parameter rules. Call this first in any new task.
  3. Register each strategy. Write a strategy file to the workspace, then call forven_register_strategy_file(file_path=<absolute path>, session_id="ADZ-0007"). It returns a strategy_id and the stage it landed in (quick_screen or research_only). File paths must be absolute.
  4. Backtest each strategy. Call forven_run_backtest(strategy_id, dataset_id="BTC/USDT-1h", session_id="ADZ-0007"). Tagging the run links the result to the session. For tight loops, pass compact=true to get gate-relevant metrics without the full trade ledger. See backtesting for what the numbers mean.
  5. Review the session. At any point, call forven_get_session("ADZ-0007") to list every strategy and recent run tagged to it — your answer to "what did I test here?"
  6. Close when done. Call forven_close_session("ADZ-0007"). The session becomes immutable for audit and review.

What you'll see

In the UI, Drop Zone work surfaces through the Strategy library (registered strategies appear with their stage), the Import dialog (where files enter), and Session history (the list of sessions with their strategy and run counts). Open a session to see its tagged strategies and recent backtest runs grouped together.

The underlying API

Each MCP tool is a thin wrapper over a local HTTP endpoint on the running backend (http://127.0.0.1:8003 by default). You can drive the Drop Zone directly if you are scripting against the API rather than using an MCP client.

ActionEndpoint
Read Drop Zone contextGET /api/ai-dropzone/context
Open a sessionPOST /api/ai-dropzone/sessions — body {label, actor, objective}, returns session_id
List sessionsGET /api/ai-dropzone/sessions — query limit, include_closed
Session detailGET /api/ai-dropzone/sessions/{session_id}
Close a sessionPOST /api/ai-dropzone/sessions/{session_id}/close
Register a .py filePOST /api/strategies/intake/register-file — body {file_path, session_id?}
Run a backtestPOST /api/backtesting/run — body {strategy_id, dataset_id, session_id?, ...}

If the backend has FORVEN_AUTH_REQUIRED=true, send the x-api-key and x-operator-key headers (the MCP client reads these from FORVEN_API_KEY and FORVEN_OPERATOR_KEY).

A worked example

A short session-tagged loop, driven through MCP. The workflow is the same whether you or an agent runs it:

# 1. Open a session
forven_create_session(label="Breakout family sweep")        # -> ADZ-0011

# 2. Learn the workspace + datasets
forven_get_context()

# 3. Write a strategy file to the workspace, then register it
forven_register_strategy_file(
  file_path="C:\Users\you\projects\forven\forven\strategies\custom\breakout_v2.py",
  session_id="ADZ-0011")                                    # -> strategy_id, stage

# 4. Backtest it, tagged to the session, compact for speed
forven_run_backtest(strategy_id, dataset_id="BTC/USDT-1h",
  session_id="ADZ-0011", compact=true)

# 5. Later: what did I test in this session?
forven_get_session("ADZ-0011")

# 6. Done iterating — freeze it
forven_close_session("ADZ-0011")

Caveats

  • Sessions are organisational, not protective. They scope queries; they do not enforce who can do what. Access control lives in the operator layer in front of the backend.
  • Closed is closed. A closed session cannot be reopened or edited. Tag work before you close, or open a new session.
  • Parameter overrides in a backtest do not persist to the strategy's saved defaults. Each run is independent. To change defaults permanently, edit them in the lab or via the params endpoint — not through a one-off backtest.
  • Registration is not promotion. Dropping a file in only makes it backtestable at the quick_screen stage. Nothing reaches paper or live without surviving the gauntlet and clearing the promotion gates.

Forven is a research tool. Backtests and session results describe past behaviour on historical data. The numbers are illustrative, they are not predictive, and nothing here is financial advice.