@dwlf/mcp-server
MCP server for DWLF market analysis platform — exposes market data, indicators, signals, strategies, backtests, portfolio, trade journal, and more as AI-accessible tools
Versions
No versions found.
Tools 100
dwlf_describe_strategy_nodes Describe the visual-strategy node types and their (currently-implicit) runtime parameters.
dwlf_list_strategies List the user
dwlf_get_strategy Get full details of a specific strategy including signal definitions, nodes, and edges.
dwlf_create_strategy ⚠️ Create a new strategy. CRITICAL WORKFLOW: 1) Create strategy → 2) Compile → 3) MUST call dwlf_activate_strategy_symbols (or strategy will NEVER generate signals!) → 4) Run backtest. Without step 3, backtests return 0 trades. The strategy exists but is invisible to the evaluation engine until symbols are activated. Always activate symbols immediately after creation.
dwlf_update_strategy Update an existing visual trading strategy. Provide the strategy ID and updated fields.
dwlf_compile_strategy Compile a visual strategy into an executable trade signal. Must be called after creating or updating a strategy before it can be evaluated or generate signals.
dwlf_delete_strategy Permanently delete a visual strategy. Hard delete — also removes the compiled executable and symbol activations.
dwlf_list_public_strategies List community-shared public strategies that can be used as inspiration or cloned.
dwlf_activate_event_symbols ⚠️ REQUIRED STEP after creating custom events! Activate (enable) symbols for an event. Events do NOT evaluate automatically — they are invisible to backtests and the daily pipeline until activated. If backtests return 0 trades, you likely forgot this step. Call immediately after compiling an event.
dwlf_get_event_symbols Get the list of symbols currently activated for a custom event.
dwlf_deactivate_event_symbols Deactivate (disable) one or more symbols for a custom event. The event will stop firing for these symbols.
dwlf_activate_strategy_symbols ⚠️ REQUIRED STEP after creating strategies! Activate symbols for a strategy. Strategies do NOT generate signals automatically — they are invisible to backtests until symbols are activated. If backtests return 0 trades, you likely forgot this step. Call immediately after compiling a strategy.
dwlf_get_strategy_symbols Get the list of symbols currently activated for a strategy.
dwlf_deactivate_strategy_symbols Deactivate (disable) one or more symbols for a strategy. The strategy will stop generating signals for these symbols.
dwlf_list_all_symbol_activations List all the user
dwlf_list_portfolios List the user
dwlf_get_portfolio Get portfolio details including holdings.
dwlf_get_holdings Get detailed holdings for a portfolio with current values and P&L.
dwlf_get_portfolio_snapshots Get historical snapshots for a portfolio — shows value over time.
dwlf_get_market_data Get OHLCV candle data (open, high, low, close, volume) for a trading symbol at a chosen timeframe.
dwlf_get_quote Get the latest price (close + date) for one or more symbols. Lightweight and API-key-accessible —
dwlf_list_symbols List all available trading symbols with metadata. Use this to discover what symbols are available on DWLF.
dwlf_get_support_resistance Get support and resistance levels for a trading symbol. These are key price levels where buying/selling pressure is expected.
dwlf_get_events Get indicator events (cycle lows/highs, crossovers, breakouts, divergences, etc.).
dwlf_get_price_picture Aggregate the price-meaningful indicator events for a symbol into a chronological narrative —
dwlf_get_cycle_setups The Cycle Setup Screener: universe-wide cross-reference of the WEEKLY cycle timing
dwlf_evaluate_custom_event ⚠️ Trigger an on-demand evaluation run for a specific custom event. This is the workflow step BETWEEN activating symbols and querying fires — without it, the custom event only evaluates on the daily cron and historical data is not backfilled until then. Returns { requestId, status:
dwlf_evaluate_strategy Trigger an on-demand evaluation run for a specific visual strategy. Parallels dwlf_evaluate_custom_event but for strategies. Returns { requestId, status:
dwlf_get_evaluation_status Get the status and result summary of a specific evaluation by requestId. Poll this after calling dwlf_evaluate_custom_event or dwlf_evaluate_strategy until status ===
dwlf_list_evaluations List recent evaluation requests for the account with their status and summary. Useful for finding the requestId of a previous evaluation, or for checking whether one is already in-flight before triggering another.
dwlf_get_quotas Get the current user\
dwlf_get_regime Get current market regime classification for a symbol — trend, cycle, momentum, volatility, and confidence score. Optionally retrieve full regime history.
dwlf_get_intelligence Get the full semantic snapshot for a symbol — current price, active events, FSM state, market regime, support/resistance levels, and signal quality. This is the preferred single-call way to get structured market context for a symbol.
dwlf_get_daily_briefing Get the cross-asset daily briefing (covers the watchlist UNION the briefing list). Returns a
dwlf_register_agent Programmatically register a new DWLF account — no browser or Google OAuth required. Returns an API key immediately. Email verification unlocks compute features (backtests, evaluations). Useful for onboarding flows where an agent registers itself.
dwlf_get_active_signals Get currently active trade signals. These are open positions or pending entries that DWLF is tracking.
dwlf_get_recent_signals Get user trade signals — strategy fires recorded by the daily evaluator. Shows signal history
dwlf_get_signal_stats Get signal performance statistics — win rate, average P&L, total signals, and performance breakdown.
dwlf_get_indicators Get computed technical indicators for a symbol (RSI, MACD, moving averages, Bollinger Bands, etc.). Returns current indicator values and states.
dwlf_get_trendlines Get automatically detected trendlines for a symbol. Returns trend direction, slope, and key touch points.
dwlf_get_ranges Range / support-resistance CONTEXT derived from cycle pivots — answers
dwlf_list_annotations List annotations for a symbol. Optionally filter by timeframe (e.g. daily, weekly, hourly). Returns each annotation with its annotationId, type, timeframe and full data — copy a data shape from here when you are unsure how to build a new one.
dwlf_create_annotation Create a chart annotation. `type` selects the shape; `data` carries the type-specific fields documented below. Note `arrow` is the callout/bubble-with-pointer and `text` is a plain text box — for commentary that points at a level, use `arrow`.\n\n
dwlf_update_annotation Update an existing annotation. symbol + timeframe are REQUIRED (the backend needs them to locate the row). `data` is merged field-by-field into the existing data — pass only the fields you want to change (e.g. {label:
dwlf_delete_annotation Delete an annotation by ID. symbol + timeframe are required (the backend needs them to locate the row).
dwlf_bulk_create_annotations Create multiple annotations in one call (max 25). Each entry follows the same shape as dwlf_create_annotation — see its data-shape reference. Returns a per-item results array; an individual item can fail without aborting the rest.
dwlf_ai_dashboard Get a complete account overview in a single call: watchlist with prices, active signals, open trades, portfolios, strategies, and recent events. Ideal for
dwlf_ai_symbol_brief Get a condensed single-symbol view: latest price with change, recent candles, key indicators, S/R levels, recent events, and active signals. Perfect for
dwlf_ai_strategy_performance Get all strategies with signal stats and performance metrics in a single call: total signals, active signals, win rate, avg R/R, total P&L, and per-strategy breakdowns.
dwlf_list_academy_tracks List all DWLF Academy tracks and lessons. Use this to discover educational content about DWLF concepts — indicators, events, strategies, charting, and more.
dwlf_get_academy_lesson Get the full content of a DWLF Academy lesson by slug. Returns markdown. Use dwlf_list_academy_tracks first to find available lessons.
dwlf_search_academy Search DWLF Academy content by keyword. Searches track and lesson titles. Returns matching lessons with their track context.
dwlf_list_symbol_tags List every distinct symbol TAG. Tags are the groups the markets chart\
dwlf_get_symbol_tags Get the tags currently assigned to one symbol — i.e. which chart group(s) it belongs to
dwlf_add_symbol_tag Tag a symbol so it lands in the right group on the markets chart\
dwlf_remove_symbol_tag Remove a tag from a symbol — re-categorise it, or (if it has no other tags) drop it back to
dwlf_get_watchlist Get the user
dwlf_add_to_watchlist Add a trading symbol to the user
dwlf_get_briefing_list Get the user
dwlf_add_to_briefing_list Add a symbol to the BRIEFING LIST — briefed daily but not actively watched. Use for
dwlf_remove_from_briefing_list Remove a symbol from the user
dwlf_list_subscriptions List all subscriptions on the account, including their enabled state, event source, channels, and filters.
dwlf_create_subscription Create a new subscription. Three shapes are supported, distinguished by `eventTypeId`:\n
dwlf_update_subscription Update an existing subscription (PATCH). Only the fields you supply are changed; everything else is preserved.
dwlf_delete_subscription Permanently delete a subscription. Hard delete — also removes any pending dispatcher state.
dwlf_get_trade_plan Get full details for a specific trade plan by ID.
dwlf_create_trade_plan Create a new trade plan with entry, stop loss, and take profit levels.
dwlf_update_trade_plan Update an existing trade plan by ID. All fields except planId are optional (partial update).
dwlf_delete_trade_plan Delete a trade plan by ID.
dwlf_list_trades List trades from the trade journal. Filter by status or symbol. Statuses:
dwlf_get_trade Get full details for a specific trade including notes, executions, and events.
dwlf_run_backtest ⚠️ Run a strategy backtest (async). Returns requestId → poll with dwlf_get_backtest_results. PREREQUISITES: 1) Strategy MUST have symbols activated (dwlf_activate_strategy_symbols) or backtest returns 0 trades. 2) Requires 200+ daily candles: startDate must be 10+ months before endDate. If backtest returns 0 trades, check: a) Are symbols activated? b) Is date range long enough? c) Do event conditions actually match historical data? Optional capital/risk params (initialCapital, riskPerTrade, maxConcurrentTrades, portfolioMode, allowSymbolPyramiding) override backend defaults — set portfolioMode=true together with maxConcurrentTrades to model shared-capital concurrency across symbols; set allowSymbolPyramiding=true to permit more than one concurrent open position per symbol, and maxPositionsPerSymbol to bound that (e.g. 3) so per-symbol concentration stays capped. Set disableTakeProfit=true for exit-signal-only strategies (no tp node) so the backend does NOT force a fallback take-profit that would exit early.
dwlf_get_backtest_results Get results for a backtest by requestId. If status is not
dwlf_list_backtests List your backtests (most recent first) with their status and config.
dwlf_delete_backtest Permanently delete a backtest request and its associated result data by requestId. Use to clean up stale or invalid runs (e.g. results computed before an engine bug was fixed). Idempotent — deleting an already-deleted requestId returns success.
dwlf_cancel_backtest Cancel a queued or running backtest by requestId. Pending requests cancel cleanly (worker skips). Running requests get a best-effort cancel — result is marked cancelled but mid-run computation isn\
dwlf_get_backtest_summary Get a summary of all backtests — aggregated performance stats.
dwlf_run_synthetic_backtest Run Monte Carlo synthetic validation for a strategy. Tests strategy against statistically realistic generated price paths to assess robustness. Returns requestId for polling.
dwlf_get_synthetic_backtest_results Get results for a synthetic backtest by requestId. Returns distribution stats, robustness metrics, and profitableSimsPct. Poll until status is
dwlf_list_custom_events List the user
dwlf_get_custom_event_notifications Get all recently fired custom events where the user has notifications enabled. Returns fires across ALL symbols in one call — the most efficient way to check what custom events have triggered. The eventName field contains the human-readable name (e.g.
dwlf_get_custom_event Get details of a specific custom event including conditions and trigger history.
dwlf_compile_custom_event Compile a custom event into an executable event definition. Must be called after creating or updating a custom event.
dwlf_preflight_custom_event Validate a custom event graph WITHOUT saving it. Returns execution tier (fast/async/reject), complexity score with breakdown, graph metrics, plan policy limits, errors, warnings, and suggested fixes. Call this BEFORE creating or updating a complex event to check whether it will be accepted and which execution tier it will land in.
dwlf_create_custom_event ⚠️ Create a new custom event. CRITICAL WORKFLOW: 1) Create event → 2) Compile → 3) MUST call dwlf_activate_event_symbols (or event will NEVER fire!) → 4) Trigger evaluation. Without step 3, backtests return 0 trades. The event exists but is invisible to the evaluation engine until symbols are activated. Always activate symbols immediately after creation.
dwlf_update_custom_event Update an existing custom event. Accepts any subset of {name, description, visual, metadata, version, notifyOnFire} via bodyJson. Most common use: flip notifyOnFire to true after creation so future fires surface in dwlf_get_custom_event_notifications. If you change `visual` or any condition shape, re-call dwlf_compile_custom_event afterwards to regenerate the executable.
dwlf_delete_custom_event Delete a custom event permanently. Hard delete — also removes the compiled executable, symbol activations, and watermark state. Past fires already written to EventsTable are NOT deleted (they remain as historical record).
dwlf_create_trade Log a new trade in the journal. Specify symbol, direction, entry price, and optional stop loss / take profit.
dwlf_close_trade Close an open trade by specifying the exit price.
dwlf_add_trade_note Add a note to an existing trade — observations, adjustments, lessons learned.
dwlf_get_trade_notes Get all notes for a trade — observations, updates, and lessons recorded during the trade.
dwlf_list_trade_plans List trade plan templates — reusable frameworks for entering trades.
dwlf_update_trade Update an existing trade by ID. All fields except tradeId are optional (partial update).
dwlf_delete_trade Delete a trade by ID.
dwlf_position_size Calculate recommended position size based on account size, risk percentage, entry price, and stop loss.
dwlf_get_trade_state Get the current state of a trade — including execution history and adjustments.
dwlf_get_skip_outcomes The Counterfactual scorecard: what would have happened had each SKIPPED trade been
dwlf_get_decision_stats The decision-quality ledger: TAKES (confirmed trades, judged by actual outcomes —
dwlf_confirm_trade Confirm (take) a confirm-mode PLANNED trade — turns it into an OPEN position.
dwlf_skip_trade Skip (pass on) a confirm-mode PLANNED trade, recording WHY. Moves it to status
Permissions 1
env_vars low