Connection check
verified live · 27h ago
dmoera-creator
Build, backtest, and deploy crypto trading strategies via MCP with 7-stage validation.
Tools
26
GitHub stars
8
Installs / wk
—
Licence
MIT
Transport
streamable-http
Last checked
27h ago
Tools & capabilities
26 toolsRead from the running server on 27h ago.
activate_fund
fund_id*user_id*
Activate Manager Mode for a fund — starts the personal router. This deploys capital across the fund's roster bots according to their weights and the fund's risk caps. The… Activate Manager Mode for a fund — starts the personal router. This deploys capital across the fund's roster bots according to their weights and the fund's risk caps. The main platform router is paused while Manager Mode is active. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. Returns success or error.
add_bot_to_fund
bot_id*weightfund_id*user_id*bot_domain*
Add a bot to a fund's roster. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. bot_id: The bot to add (e.g. "momentum_eth_v3")… Add a bot to a fund's roster. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. bot_id: The bot to add (e.g. "momentum_eth_v3"). bot_domain: The bot's domain (e.g. "eth_usdc", "btc_usdc"). weight: Initial allocation weight in percent (default 20.0). Returns the updated roster entry.
browse_fund_marketplace
domainmin_sharpe
Browse bots available for adding to a fund roster. Shows bots with their performance stats and available capacity. Requires the trading engine to be running. Args:… Browse bots available for adding to a fund roster. Shows bots with their performance stats and available capacity. Requires the trading engine to be running. Args: domain: Filter by domain (e.g. "eth_usdc"). min_sharpe: Minimum Sharpe ratio filter. Returns a JSON array of marketplace bot entries.
close_fund
fund_id*user_id*
Permanently close a hedge fund. Returns all capital to the wallet. This is irreversible. The fund's performance record is preserved for reporting and copy-trader settlemen… Permanently close a hedge fund. Returns all capital to the wallet. This is irreversible. The fund's performance record is preserved for reporting and copy-trader settlement. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. Returns success or error.
create_fund
user_id*fund_namephilosophyrouter_presetaggression_mode
Create a new hedge fund for the user. The fund starts inactive — call activate_fund to start Manager Mode. Initial capital is taken from the user's wallet_cash at creation… Create a new hedge fund for the user. The fund starts inactive — call activate_fund to start Manager Mode. Initial capital is taken from the user's wallet_cash at creation time. Args: user_id: The user's ID. fund_name: Display name for the fund. router_preset: Risk profile — one of "prudent", "standard", "opportunistic", "unrestricted". aggression_mode: "normal" or "yolo". philosophy: Optional text describing the fund's investment thesis (max 2000 chars). Returns the created fund object.
deactivate_fund
fund_id*user_id*
Deactivate Manager Mode — returns to the main platform router. Closes all roster bot positions and returns capital to the wallet. Args: user_id: The user's ID (mu… Deactivate Manager Mode — returns to the main platform router. Closes all roster bot positions and returns capital to the wallet. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. Returns success or error.
estimate_swap_cost
fund_id*new_bot_id*old_bot_id*new_bot_domain*
Estimate the friction cost (in bps) of swapping a bot in a fund. Use this before calling swap_bot_in_fund to understand the cost of winding down the old bot's positions an… Estimate the friction cost (in bps) of swapping a bot in a fund. Use this before calling swap_bot_in_fund to understand the cost of winding down the old bot's positions and opening new ones. Args: fund_id: The fund's ID. old_bot_id: The bot being considered for removal. new_bot_id: The replacement bot. new_bot_domain: The replacement bot's domain. Returns the estimated friction in bps of fund AUM.
get_active_fund
user_id*
Get the user's currently active (Manager Mode) fund. Args: user_id: The user's ID. Returns the active fund object or null if Manager Mode is not active. Get the user's currently active (Manager Mode) fund. Args: user_id: The user's ID. Returns the active fund object or null if Manager Mode is not active.
get_bot_profile
bot_id*
Get detailed profile and performance stats for a specific bot. Args: bot_id: The bot identifier (e.g. "Eth_Full_Ensemble"). Returns JSON with: bot_id, domain, str… Get detailed profile and performance stats for a specific bot. Args: bot_id: The bot identifier (e.g. "Eth_Full_Ensemble"). Returns JSON with: bot_id, domain, strategy type, full performance metrics (Sharpe, Sortino, Calmar, profit factor, regime breakdown), current position if any, and recent trade history.
get_current_prices
Get current live prices for all tracked symbols. Returns JSON with symbol → {price, bid, ask, source, change_24h_pct, volume_24h} for ETHUSDT, BTCUSDT, SOLUSDT from Binanc… Get current live prices for all tracked symbols. Returns JSON with symbol → {price, bid, ask, source, change_24h_pct, volume_24h} for ETHUSDT, BTCUSDT, SOLUSDT from Binance/Coinbase/Kraken.
get_feature_catalog
List all data feeds available to strategies via ctx.features. Features are external data that strategies can read during on_bar(). Each feature has a status: "live" (avail… List all data feeds available to strategies via ctx.features. Features are external data that strategies can read during on_bar(). Each feature has a status: "live" (available now, requirable) or "planned" (roadmap, not yet available). Only live features can be used in required_features. Returns JSON array of features with: key, label, description, unit, example, cadence, source, status, and backtest_mode.
get_fund
fund_id*
Get detailed info for a specific hedge fund, including its roster. Args: fund_id: The fund's ID. Returns a JSON object with fund details and active roster entries… Get detailed info for a specific hedge fund, including its roster. Args: fund_id: The fund's ID. Returns a JSON object with fund details and active roster entries (bot_id, bot_name, weight, domain, current_pnl).
get_marketplace_bots
sortlimitdomain
List bots published to the marketplace. Args: domain: Filter by domain (e.g. "eth_usdc"). Omit for all domains. sort: Sort order — "rating", "return", "subscri… List bots published to the marketplace. Args: domain: Filter by domain (e.g. "eth_usdc"). Omit for all domains. sort: Sort order — "rating", "return", "subscribers", or "newest". limit: Max results (default 20, max 100). Returns JSON array of marketplace listings with: listing_id, bot_id, title, description, domain, creator, monthly_price_usd, cached stats (win_rate, return_bps, sharpe), subscriber_count, and avg_rating.
get_market_regime
Get current market regime classification. Returns the aggregate regime (e.g. "bull_calm", "bear_volatile"), per-symbol regimes, crisis score, and the derivatives data driv… Get current market regime classification. Returns the aggregate regime (e.g. "bull_calm", "bear_volatile"), per-symbol regimes, crisis score, and the derivatives data driving the classification (funding rates, open interest, long/short ratios, taker buy/sell ratios). Regime determines which trade directions are allowed: - bull_* → longs only - bear_* → shorts only - neutral_* → both longs and shorts - crisis/meltdown → no new positions
get_strategy_report
strategy_id*
Get a detailed report card for a strategy. Includes validation run results for all 7 stages, performance metrics, and the integrity block (code hash, AST hash, parameter f… Get a detailed report card for a strategy. Includes validation run results for all 7 stages, performance metrics, and the integrity block (code hash, AST hash, parameter fingerprint). Args: strategy_id: The strategy's database ID. Returns JSON with: strategy details, latest validation runs, metrics.
get_tournament_status
Get current tournament round status and leaderboard. Tournaments run every 3 days. Top 3 bots per domain win prizes from the reward pool. Scoring is weighted: 50% risk-adj… Get current tournament round status and leaderboard. Tournaments run every 3 days. Top 3 bots per domain win prizes from the reward pool. Scoring is weighted: 50% risk-adjusted return, 30% total PnL, 20% consistency. Returns JSON with: current round info (round_id, start/end time, reward_pool_usd, total_participants), and leaderboard entries.
list_bots
limitdomain
List trading bots ranked by performance. Args: domain: Filter by domain key (e.g. "eth_usdc", "btc_usdc", "sol_usdc"). If omitted, returns top bots acro… List trading bots ranked by performance. Args: domain: Filter by domain key (e.g. "eth_usdc", "btc_usdc", "sol_usdc"). If omitted, returns top bots across all domains. limit: Maximum number of bots to return (default 20, max 100). Returns JSON array of bots with: bot_id, domain, strategy_name, sharpe, win_rate, total_trades, return_bps, and validation_score.
list_domains
List all available trading domains on dMoERA. Domains define what asset pair a strategy trades, what time horizon it uses (scalp=5m, swing=1h, crisis=2m), and what data is… List all available trading domains on dMoERA. Domains define what asset pair a strategy trades, what time horizon it uses (scalp=5m, swing=1h, crisis=2m), and what data is available. Strategies must declare which domain they belong to. Returns a JSON array of domain objects with: key, name, type, base_asset, quote_asset, grading_seconds, and feed_symbols.
list_funds
user_id*
List all hedge funds for a user (active + closed). Args: user_id: The user's ID. Returns a JSON array of fund objects with: id, fund_name, is_active, inceptio… List all hedge funds for a user (active + closed). Args: user_id: The user's ID. Returns a JSON array of fund objects with: id, fund_name, is_active, inception_date, initial_capital, current_aum, router_preset, aggression_mode, total_pnl_usd, total_pnl_bps, and roster summary.
list_strategies
user_id*
List all strategies created by a user. Args: user_id: The creator's user ID. Returns JSON array of strategies with: id, bot_id, name, domain, status, declared… List all strategies created by a user. Args: user_id: The creator's user ID. Returns JSON array of strategies with: id, bot_id, name, domain, status, declared_sl_bps, declared_tp_bps, and created_at.
remove_bot_from_fund
bot_id*reasonfund_id*user_id*
Remove a bot from a fund's roster (triggers wind-down of its positions). Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. bot_… Remove a bot from a fund's roster (triggers wind-down of its positions). Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. bot_id: The bot to remove. reason: Optional reason for removal. Returns success or error.
sandbox_backtest
code*domainsymboluser_id
Run a sandbox backtest of strategy code without persisting anything. This is the fastest way to test a strategy. The code is run through static checks and a full backtest… Run a sandbox backtest of strategy code without persisting anything. This is the fastest way to test a strategy. The code is run through static checks and a full backtest on historical data, but no Strategy or StrategyVersion rows are created. Use this for rapid iteration. Args: code: Python source code implementing the Strategy contract. Must define a METADATA dict and a class extending Strategy with an on_bar(ctx) -> Signal method. See CREATOR_API.md. domain: Trading domain (e.g. "eth_usdc", "btc_usdc", "sol_usdc"). symbol: Price symbol for historical data (e.g. "ETHUSDT"). user_id: Identifier for trial tracking (used for DSR correction). Returns JSON with: success, metrics (sharpe, sortino, win_rate, total_trades, return_bps, max_drawdown, regime_breakdown, exit_reason_breakdown), or error details if validation failed.
submit_strategy
code*name*domain*symboluser_id*
Submit a strategy for full validation and live deployment. Runs the complete 7-stage validation pipeline: 1. static_check — code safety (banned imports, syntax) 2. in_… Submit a strategy for full validation and live deployment. Runs the complete 7-stage validation pipeline: 1. static_check — code safety (banned imports, syntax) 2. in_sample — sanity check on training data 3. out_of_sample — test on unseen data (70/30 split) 4. walk_forward — rolling window validation 5. randomized_start — different random start points 6. perturbation — market stress test 7. holdout — server-side reserved data (pass/fail only) If all stages pass, the strategy is registered for isolated live paper trading with status="incubating". Promotion to "live" requires a proven track record. Args: name: Human-readable strategy name (e.g. "ETH Momentum v2"). domain: Trading domain key (e.g. "eth_usdc"). code: Python source code implementing the Strategy contract. user_id: The creator's user ID. symbol: Price symbol for historical data. Returns JSON with: success, strategy_id, bot_id, validation results per stage, or error details.
swap_bot_in_fund
reasonweightfund_id*user_id*new_bot_id*old_bot_id*
+1
Swap one bot for another in a fund's roster. Closes the old bot's positions and opens new ones for the replacement. Incurs friction cost — use estimate_swap_cost first.… Swap one bot for another in a fund's roster. Closes the old bot's positions and opens new ones for the replacement. Incurs friction cost — use estimate_swap_cost first. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. old_bot_id: The bot to remove. new_bot_id: The bot to add in its place. new_bot_domain: The new bot's domain (e.g. "eth_usdc"). weight: Allocation weight for the new bot (defaults to old bot's weight). reason: Optional reason for the swap. Returns the updated roster entry and friction estimate.
update_fund_caps
fund_id*user_id*max_per_bot_pctmax_per_domain_pctregime_veto_enabled
Update a fund's risk caps and settings. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. max_per_bot_pct: Max allocation per s… Update a fund's risk caps and settings. Args: user_id: The user's ID (must own the fund). fund_id: The fund's ID. max_per_bot_pct: Max allocation per single bot (e.g. 40.0 = 40%). max_per_domain_pct: Max allocation per domain (e.g. 60.0 = 60%). regime_veto_enabled: Whether the regime detector can veto trades. Only provided fields are updated; others remain unchanged. Returns success or error.
update_fund_weights
fund_id*user_id*weights*