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_idwhen you register a strategy or run a backtest. Untagged work is still valid — sessions are optional but recommended. - A session carries an optional
label(andobjective) 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:
| State | Meaning |
|---|---|
active | Open. You can keep tagging new strategies and runs to it. |
closed | Finished. 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.
- Open a session. Call
forven_create_session(label="RSI mean reversion iteration 3"). It returns an id likeADZ-0007. Hold onto that id for the rest of the loop. - Get your bearings. Call
forven_get_contextto learn the workspace path (where strategy.pyfiles go), the strategy template, available datasets, and the canonical parameter rules. Call this first in any new task. - 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 astrategy_idand the stage it landed in (quick_screenorresearch_only). File paths must be absolute. - 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, passcompact=trueto get gate-relevant metrics without the full trade ledger. See backtesting for what the numbers mean. - 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?" - 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.
| Action | Endpoint |
|---|---|
| Read Drop Zone context | GET /api/ai-dropzone/context |
| Open a session | POST /api/ai-dropzone/sessions — body {label, actor, objective}, returns session_id |
| List sessions | GET /api/ai-dropzone/sessions — query limit, include_closed |
| Session detail | GET /api/ai-dropzone/sessions/{session_id} |
| Close a session | POST /api/ai-dropzone/sessions/{session_id}/close |
Register a .py file | POST /api/strategies/intake/register-file — body {file_path, session_id?} |
| Run a backtest | POST /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_screenstage. 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.
Related
- MCP server — connect Claude Desktop and other MCP clients to drive the Drop Zone.
- Deep-dive strategy chat — refine a single strategy interactively once it is registered.
- Backtesting a strategy — what a run does and how to read the result.
Bot factory
Deploy and operate lifecycle strategy containers — list, start, stop, clone, and delete autonomous bots, and monitor their trades and positions.
Deep-dive strategy chat
An interactive, tool-using chat scoped to one strategy — read and edit its code, set defaults, and re-run backtests, all under a per-thread cost cap.