[{"slug":"ZV-2026-1242","server_name":"dmoera.xyz","severity":"breaking","title":"dmoera.xyz: Tool browse_fund_marketplace was removed.","summary":"[breaking] Tool browse_fund_marketplace was removed. [safe] Tool generate_fund_report_card was added. [safe] Tool get_fund_analytics was added. [safe] Tool get_fund_live_pnl was added. [safe] Tool get_fund_performance was added. [safe] Tool get_fund_positions was added. [safe] Tool get_fund_report_card was added. [safe] Tool get_fund_trades was added. [safe] Tool get_vault_history was added. [safe] Tool get_vault_status was added. [safe] Tool list_my_bots was added. [safe] Tool list_open_source_bots was added. [safe] Tool run_fund_historical_test was added. [safe] Tool tag_team_badges was added. [safe] Tool tag_team_history was added. [safe] Tool tag_team_info was added. [safe] Tool tag_team_leaderboard was added. [safe] Tool tag_team_templates was added. [safe] Tool tag_team_tier was added. [safe] Tool tag_team_weekly was added. [safe] Description of activate_fund changed (10% word delta). [breaking] Field user_id was removed from activate_fund input; consumers still sending it may be rejected or silently ignored. [risky] Description of add_bot_to_fund changed (30% word delta). [breaking] Field user_id was removed from add_bot_to_fund input; consumers still sending it may be rejected or silently ignored. [safe] Description of close_fund changed (12% word delta). [breaking] Field user_id was removed from close_fund input; consumers still sending it may be rejected or silently ignored. [safe] Description of create_fund changed (21% word delta). [breaking] Field user_id was removed from create_fund input; consumers still sending it may be rejected or silently ignored. [safe] Description of deactivate_fund changed (14% word delta). [breaking] Field user_id was removed from deactivate_fund input; consumers still sending it may be rejected or silently ignored. [safe] Description of get_active_fund changed (20% word delta). [breaking] Field user_id was removed from get_active_fund input; consumers still sending it may be rejected or silently ignored. [safe] Description of","changes":[{"kind":"tool_removed","tool":"browse_fund_marketplace","detail":"Tool `browse_fund_marketplace` was removed.","severity":"breaking"},{"kind":"tool_added","tool":"generate_fund_report_card","detail":"Tool `generate_fund_report_card` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_analytics","detail":"Tool `get_fund_analytics` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_live_pnl","detail":"Tool `get_fund_live_pnl` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_performance","detail":"Tool `get_fund_performance` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_positions","detail":"Tool `get_fund_positions` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_report_card","detail":"Tool `get_fund_report_card` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund_trades","detail":"Tool `get_fund_trades` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_vault_history","detail":"Tool `get_vault_history` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_vault_status","detail":"Tool `get_vault_status` was added.","severity":"safe"},{"kind":"tool_added","tool":"list_my_bots","detail":"Tool `list_my_bots` was added.","severity":"safe"},{"kind":"tool_added","tool":"list_open_source_bots","detail":"Tool `list_open_source_bots` was added.","severity":"safe"},{"kind":"tool_added","tool":"run_fund_historical_test","detail":"Tool `run_fund_historical_test` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_badges","detail":"Tool `tag_team_badges` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_history","detail":"Tool `tag_team_history` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_info","detail":"Tool `tag_team_info` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_leaderboard","detail":"Tool `tag_team_leaderboard` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_templates","detail":"Tool `tag_team_templates` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_tier","detail":"Tool `tag_team_tier` was added.","severity":"safe"},{"kind":"tool_added","tool":"tag_team_weekly","detail":"Tool `tag_team_weekly` was added.","severity":"safe"},{"kind":"description_changed","tool":"activate_fund","after":"Activate Manager Mode for a fund — starts the personal router.\n\n    This deploys capital across the fund's roster bots according to their\n    weights and the fund's risk caps. The main platform router is paused\n    while Manager Mode is active.\n\n    Args:\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","before":"Activate Manager Mode for a fund — starts the personal router.\n\n    This deploys capital across the fund's roster bots according to their\n    weights and the fund's risk caps. The main platform router is paused\n    while Manager Mode is active.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","detail":"Description of `activate_fund` changed (10% word delta).","severity":"safe","descriptionDelta":0.09756097560975607},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"activate_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `activate_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"add_bot_to_fund","after":"Add a bot to a fund's roster.\n\n    Personal funds can only contain the authenticated user's OWN bots.\n    Use list_my_bots to see eligible strategies.\n\n    Args:\n        fund_id: The fund's ID.\n        bot_id: The bot to add (e.g. \"momentum_eth_v3\").\n        bot_domain: The bot's domain (e.g. \"eth_usdc\", \"btc_usdc\").\n        weight: Initial allocation weight in percent (default 20.0).\n\n    Returns the updated roster entry.\n    ","before":"Add a bot to a fund's roster.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n        bot_id: The bot to add (e.g. \"momentum_eth_v3\").\n        bot_domain: The bot's domain (e.g. \"eth_usdc\", \"btc_usdc\").\n        weight: Initial allocation weight in percent (default 20.0).\n\n    Returns the updated roster entry.\n    ","detail":"Description of `add_bot_to_fund` changed (30% word delta).","severity":"risky","descriptionDelta":0.30434782608695654},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"add_bot_to_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `add_bot_to_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"close_fund","after":"Permanently close a hedge fund. Returns all capital to the wallet.\n\n    This is irreversible. The fund's performance record is preserved for\n    reporting and copy-trader settlement.\n\n    Args:\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","before":"Permanently close a hedge fund. Returns all capital to the wallet.\n\n    This is irreversible. The fund's performance record is preserved for\n    reporting and copy-trader settlement.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","detail":"Description of `close_fund` changed (12% word delta).","severity":"safe","descriptionDelta":0.11764705882352944},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"close_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `close_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"create_fund","after":"Create a new personal hedge fund for the authenticated user.\n\n    The fund starts inactive — call activate_fund to start Manager Mode.\n    Initial capital is taken from the user's wallet_cash at creation time.\n    Personal funds can ONLY contain the user's own bots — use list_my_bots\n    to see eligible strategies.\n\n    Args:\n        fund_name: Display name for the fund.\n        router_preset: Risk profile — one of \"prudent\", \"standard\",\n                      \"opportunistic\", \"unrestricted\".\n        aggression_mode: \"normal\" or \"yolo\".\n        philosophy: Optional text describing the fund's investment thesis\n                   (max 2000 chars).\n\n    Returns the created fund object.\n    ","before":"Create a new hedge fund for the user.\n\n    The fund starts inactive — call activate_fund to start Manager Mode.\n    Initial capital is taken from the user's wallet_cash at creation time.\n\n    Args:\n        user_id: The user's ID.\n        fund_name: Display name for the fund.\n        router_preset: Risk profile — one of \"prudent\", \"standard\",\n                      \"opportunistic\", \"unrestricted\".\n        aggression_mode: \"normal\" or \"yolo\".\n        philosophy: Optional text describing the fund's investment thesis\n                   (max 2000 chars).\n\n    Returns the created fund object.\n    ","detail":"Description of `create_fund` changed (21% word delta).","severity":"safe","descriptionDelta":0.2142857142857143},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"create_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `create_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"deactivate_fund","after":"Deactivate Manager Mode — returns to the main platform router.\n\n    Closes all roster bot positions and returns capital to the wallet.\n\n    Args:\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","before":"Deactivate Manager Mode — returns to the main platform router.\n\n    Closes all roster bot positions and returns capital to the wallet.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n\n    Returns success or error.\n    ","detail":"Description of `deactivate_fund` changed (14% word delta).","severity":"safe","descriptionDelta":0.13793103448275867},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"deactivate_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `deactivate_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"get_active_fund","after":"Get the authenticated user's currently active (Manager Mode) fund.\n\n    Returns the active fund object or null if Manager Mode is not active.\n    ","before":"Get the user's currently active (Manager Mode) fund.\n\n    Args:\n        user_id: The user's ID.\n\n    Returns the active fund object or null if Manager Mode is not active.\n    ","detail":"Description of `get_active_fund` changed (20% word delta).","severity":"safe","descriptionDelta":0.19999999999999996},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"get_active_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `get_active_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"list_funds","after":"List all hedge funds for the authenticated user (active + closed).\n\n    Returns a JSON array of fund objects with: id, fund_name, is_active,\n    inception_date, initial_capital, current_aum, router_preset,\n    aggression_mode, total_pnl_usd, total_pnl_bps, and roster summary.\n    ","before":"List all hedge funds for a user (active + closed).\n\n    Args:\n        user_id: The user's ID.\n\n    Returns a JSON array of fund objects with: id, fund_name, is_active,\n    inception_date, initial_capital, current_aum, router_preset,\n    aggression_mode, total_pnl_usd, total_pnl_bps, and roster summary.\n    ","detail":"Description of `list_funds` changed (12% word delta).","severity":"safe","descriptionDelta":0.11764705882352944},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"list_funds","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `list_funds` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"remove_bot_from_fund","after":"Remove a bot from a fund's roster (triggers wind-down of its positions).\n\n    Args:\n        fund_id: The fund's ID.\n        bot_id: The bot to remove.\n        reason: Optional reason for removal.\n\n    Returns success or error.\n    ","before":"Remove a bot from a fund's roster (triggers wind-down of its positions).\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n        bot_id: The bot to remove.\n        reason: Optional reason for removal.\n\n    Returns success or error.\n    ","detail":"Description of `remove_bot_from_fund` changed (13% word delta).","severity":"safe","descriptionDelta":0.12903225806451613},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"remove_bot_from_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `remove_bot_from_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"swap_bot_in_fund","after":"Swap one bot for another in a fund's roster.\n\n    Closes the old bot's positions and opens new ones for the replacement.\n    Incurs friction cost — use estimate_swap_cost first.\n\n    Args:\n        fund_id: The fund's ID.\n        old_bot_id: The bot to remove.\n        new_bot_id: The bot to add in its place.\n        new_bot_domain: The new bot's domain (e.g. \"eth_usdc\").\n        weight: Allocation weight for the new bot (defaults to old bot's weight).\n        reason: Optional reason for the swap.\n\n    Returns the updated roster entry and friction estimate.\n    ","before":"Swap one bot for another in a fund's roster.\n\n    Closes the old bot's positions and opens new ones for the replacement.\n    Incurs friction cost — use estimate_swap_cost first.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n        old_bot_id: The bot to remove.\n        new_bot_id: The bot to add in its place.\n        new_bot_domain: The new bot's domain (e.g. \"eth_usdc\").\n        weight: Allocation weight for the new bot (defaults to old bot's weight).\n        reason: Optional reason for the swap.\n\n    Returns the updated roster entry and friction estimate.\n    ","detail":"Description of `swap_bot_in_fund` changed (8% word delta).","severity":"safe","descriptionDelta":0.07547169811320753},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"swap_bot_in_fund","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `swap_bot_in_fund` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"update_fund_caps","after":"Update a fund's risk caps and settings.\n\n    Args:\n        fund_id: The fund's ID.\n        max_per_bot_pct: Max allocation per single bot (e.g. 40.0 = 40%).\n        max_per_domain_pct: Max allocation per domain (e.g. 60.0 = 60%).\n        regime_veto_enabled: Whether the regime detector can veto trades.\n\n    Only provided fields are updated; others remain unchanged.\n\n    Returns success or error.\n    ","before":"Update a fund's risk caps and settings.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n        max_per_bot_pct: Max allocation per single bot (e.g. 40.0 = 40%).\n        max_per_domain_pct: Max allocation per domain (e.g. 60.0 = 60%).\n        regime_veto_enabled: Whether the regime detector can veto trades.\n\n    Only provided fields are updated; others remain unchanged.\n\n    Returns success or error.\n    ","detail":"Description of `update_fund_caps` changed (8% word delta).","severity":"safe","descriptionDelta":0.08333333333333337},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"update_fund_caps","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `update_fund_caps` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"update_fund_weights","after":"Update allocation weights for bots in a fund's roster.\n\n    Args:\n        fund_id: The fund's ID.\n        weights: A dict mapping bot_id to new weight percentage (e.g.\n                {\"momentum_eth_v3\": 15.0, \"scalper_btc_v2\": 20.0}).\n\n    Returns success or error.\n    ","before":"Update allocation weights for bots in a fund's roster.\n\n    Args:\n        user_id: The user's ID (must own the fund).\n        fund_id: The fund's ID.\n        weights: A dict mapping bot_id to new weight percentage (e.g.\n                {\"momentum_eth_v3\": 15.0, \"scalper_btc_v2\": 20.0}).\n\n    Returns success or error.\n    ","detail":"Description of `update_fund_weights` changed (11% word delta).","severity":"safe","descriptionDelta":0.11111111111111116},{"kind":"input_property_removed","path":"inputSchema.properties.user_id","tool":"update_fund_weights","before":{"type":"string","title":"User Id"},"detail":"Field `user_id` was removed from `update_fund_weights` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"}],"published_at":"2026-09-20T21:41:18.013Z"},{"slug":"ZV-2026-0603","server_name":"dmoera.xyz","severity":"breaking","title":"dmoera.xyz: Tool delist_strategy was removed.","summary":"[breaking] Tool delist_strategy was removed. [breaking] Tool fork_strategy was removed. [breaking] Tool get_open_source_leaderboard was removed. [breaking] Tool open_source_strategy was removed. [safe] Tool activate_fund was added. [safe] Tool add_bot_to_fund was added. [safe] Tool browse_fund_marketplace was added. [safe] Tool close_fund was added. [safe] Tool create_fund was added. [safe] Tool deactivate_fund was added. [safe] Tool estimate_swap_cost was added. [safe] Tool get_active_fund was added. [safe] Tool get_fund was added. [safe] Tool list_funds was added. [safe] Tool remove_bot_from_fund was added. [safe] Tool swap_bot_in_fund was added. [safe] Tool update_fund_caps was added. [safe] Tool update_fund_weights was added. [risky] Description of get_bot_profile changed (34% word delta). [safe] Description of get_current_prices changed (24% word delta). [safe] Description of get_feature_catalog changed (18% word delta). [safe] Description of get_market_regime changed (6% word delta). [safe] Description of get_marketplace_bots changed (2% word delta). [safe] Description of get_tournament_status changed (20% word delta). [safe] Description of list_domains changed (4% word delta). [risky] Description of list_strategies changed (56% word delta). [breaking] Field api_key was removed from list_strategies input; consumers still sending it may be rejected or silently ignored. [risky] Description of sandbox_backtest changed (36% word delta). [breaking] Field api_key was removed from sandbox_backtest input; consumers still sending it may be rejected or silently ignored. [risky] Optional field symbol was added to sandbox_backtest; may shift model behaviour. [safe] Description of submit_strategy changed (22% word delta). [breaking] Field api_key was removed from submit_strategy input; consumers still sending it may be rejected or silently ignored.","changes":[{"kind":"tool_removed","tool":"delist_strategy","detail":"Tool `delist_strategy` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"fork_strategy","detail":"Tool `fork_strategy` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_open_source_leaderboard","detail":"Tool `get_open_source_leaderboard` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"open_source_strategy","detail":"Tool `open_source_strategy` was removed.","severity":"breaking"},{"kind":"tool_added","tool":"activate_fund","detail":"Tool `activate_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"add_bot_to_fund","detail":"Tool `add_bot_to_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"browse_fund_marketplace","detail":"Tool `browse_fund_marketplace` was added.","severity":"safe"},{"kind":"tool_added","tool":"close_fund","detail":"Tool `close_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"create_fund","detail":"Tool `create_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"deactivate_fund","detail":"Tool `deactivate_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"estimate_swap_cost","detail":"Tool `estimate_swap_cost` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_active_fund","detail":"Tool `get_active_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_fund","detail":"Tool `get_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"list_funds","detail":"Tool `list_funds` was added.","severity":"safe"},{"kind":"tool_added","tool":"remove_bot_from_fund","detail":"Tool `remove_bot_from_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"swap_bot_in_fund","detail":"Tool `swap_bot_in_fund` was added.","severity":"safe"},{"kind":"tool_added","tool":"update_fund_caps","detail":"Tool `update_fund_caps` was added.","severity":"safe"},{"kind":"tool_added","tool":"update_fund_weights","detail":"Tool `update_fund_weights` was added.","severity":"safe"},{"kind":"description_changed","tool":"get_bot_profile","after":"Get detailed profile and performance stats for a specific bot.\n\n    Args:\n        bot_id: The bot identifier (e.g. \"Eth_Full_Ensemble\").\n\n    Returns JSON with: bot_id, domain, strategy type, full performance\n    metrics (Sharpe, Sortino, Calmar, profit factor, regime breakdown),\n    current position if any, and recent trade history.\n    ","before":"Get detailed profile and performance stats for a specific bot.\n\n    Args:\n        bot_id: The bot identifier (e.g. \"Eth_Full_Ensemble\").\n\n    Returns JSON with: bot_id, domain, strategy type, full performance\n    metrics (Sharpe, Sortino, Calmar, profit factor, win rate, return,\n    max drawdown, avg trade), and proven tier.\n    ","detail":"Description of `get_bot_profile` changed (34% word delta).","severity":"risky","descriptionDelta":0.34042553191489366},{"kind":"description_changed","tool":"get_current_prices","after":"Get current live prices for all tracked symbols.\n\n    Returns JSON with symbol → {price, bid, ask, source, change_24h_pct,\n    volume_24h} for ETHUSDT, BTCUSDT, SOLUSDT from Binance/Coinbase/Kraken.\n    ","before":"Get current live prices for all tracked symbols.\n\n    Returns JSON with symbol -> {price, change_24h_pct, volume_24h, source}\n    for ETHUSDT, BTCUSDT, SOLUSDT.\n    ","detail":"Description of `get_current_prices` changed (24% word delta).","severity":"safe","descriptionDelta":0.24},{"kind":"description_changed","tool":"get_feature_catalog","after":"List all data feeds available to strategies via ctx.features.\n\n    Features are external data that strategies can read during on_bar().\n    Each feature has a status: \"live\" (available now, requirable) or\n    \"planned\" (roadmap, not yet available). Only live features can be\n    used in required_features.\n\n    Returns JSON array of features with: key, label, description, unit,\n    example, cadence, source, status, and backtest_mode.\n    ","before":"List all data feeds available to strategies via ctx.features.\n\n    Features are external data that strategies can read during on_bar().\n    Each feature has a status: \"live\" (available now) or \"planned\" (roadmap).\n\n    Returns JSON array of features with: key, label, description, unit,\n    example, cadence, source, and status.\n    ","detail":"Description of `get_feature_catalog` changed (18% word delta).","severity":"safe","descriptionDelta":0.18367346938775508},{"kind":"description_changed","tool":"get_market_regime","after":"Get current market regime classification.\n\n    Returns the aggregate regime (e.g. \"bull_calm\", \"bear_volatile\"),\n    per-symbol regimes, crisis score, and the derivatives data driving\n    the classification (funding rates, open interest, long/short ratios,\n    taker buy/sell ratios).\n\n    Regime determines which trade directions are allowed:\n    - bull_* → longs only\n    - bear_* → shorts only\n    - neutral_* → both longs and shorts\n    - crisis/meltdown → no new positions\n    ","before":"Get current market regime classification.\n\n    Returns the aggregate regime (e.g. \"bull_calm\", \"bear_volatile\"),\n    per-symbol regimes, crisis score, and the derivatives data driving\n    the classification (funding rates, open interest, long/short ratios).\n\n    Regime determines which trade directions are allowed:\n    - bull_* -> longs only\n    - bear_* -> shorts only\n    - neutral_* -> both longs and shorts\n    - crisis/meltdown -> no new positions\n    ","detail":"Description of `get_market_regime` changed (6% word delta).","severity":"safe","descriptionDelta":0.0625},{"kind":"description_changed","tool":"get_marketplace_bots","after":"List bots published to the marketplace.\n\n    Args:\n        domain: Filter by domain (e.g. \"eth_usdc\"). Omit for all domains.\n        sort: Sort order — \"rating\", \"return\", \"subscribers\", or \"newest\".\n        limit: Max results (default 20, max 100).\n\n    Returns JSON array of marketplace listings with: listing_id, bot_id,\n    title, description, domain, creator, monthly_price_usd, cached stats\n    (win_rate, return_bps, sharpe), subscriber_count, and avg_rating.\n    ","before":"List bots published to the marketplace.\n\n    Args:\n        domain: Filter by domain (e.g. \"eth_usdc\"). Omit for all domains.\n        sort: Sort order — \"rating\", \"return\", \"subscribers\", or \"newest\".\n        limit: Max results (default 20, max 100).\n\n    Returns JSON array of marketplace listings with: listing_id, bot_id,\n    title, description, domain, creator, monthly_price_usd, stats\n    (win_rate, return_bps, sharpe), subscriber_count, and avg_rating.\n    ","detail":"Description of `get_marketplace_bots` changed (2% word delta).","severity":"safe","descriptionDelta":0.020000000000000018},{"kind":"description_changed","tool":"get_tournament_status","after":"Get current tournament round status and leaderboard.\n\n    Tournaments run every 3 days. Top 3 bots per domain win prizes\n    from the reward pool. Scoring is weighted: 50% risk-adjusted return,\n    30% total PnL, 20% consistency.\n\n    Returns JSON with: current round info (round_id, start/end time,\n    reward_pool_usd, total_participants), and leaderboard entries.\n    ","before":"Get current tournament round status and leaderboard.\n\n    Tournaments run every 3 days. Top 3 bots per domain win prizes\n    from the reward pool. Scoring is based on the bot's own performance:\n    50% risk-adjusted (rolling Sharpe), 30% total return, 20% consistency.\n\n    Returns JSON with: current round info (round_id, start/end time,\n    reward_pool_usd, total_participants, hours_remaining), and leaderboard entries.\n    ","detail":"Description of `get_tournament_status` changed (20% word delta).","severity":"safe","descriptionDelta":0.20370370370370372},{"kind":"description_changed","tool":"list_domains","after":"List all available trading domains on dMoERA.\n\n    Domains define what asset pair a strategy trades, what time horizon\n    it uses (scalp=5m, swing=1h, crisis=2m), and what data is available.\n    Strategies must declare which domain they belong to.\n\n    Returns a JSON array of domain objects with: key, name, type,\n    base_asset, quote_asset, grading_seconds, and feed_symbols.\n    ","before":"List all available trading domains on dMoERA.\n\n    Domains define what asset pair a strategy trades, what time horizon\n    it uses (scalp=5m, swing=1h), and what data is available.\n    Strategies must declare which domain they belong to.\n\n    Returns a JSON array of domain objects with: key, name, type,\n    base_asset, quote_asset, grading_seconds, and feed_symbols.\n    ","detail":"Description of `list_domains` changed (4% word delta).","severity":"safe","descriptionDelta":0.04166666666666663},{"kind":"description_changed","tool":"list_strategies","after":"List all strategies created by a user.\n\n    Args:\n        user_id: The creator's user ID.\n\n    Returns JSON array of strategies with: id, bot_id, name, domain,\n    status, declared_sl_bps, declared_tp_bps, and created_at.\n    ","before":"List all strategies created by a user.\n\n    Args:\n        user_id: The creator's user ID (authentication required).\n        api_key: Your dMoERA Personal Access Token. Required for this tool.\n                 Get one at https://dmoera.xyz → Settings → API Keys.\n                 (If running locally with DMOERA_API_KEY env var set, this can be omitted.)\n\n    Returns JSON array of strategies with: id, bot_id, name, domain,\n    status, and created_at.\n    ","detail":"Description of `list_strategies` changed (56% word delta).","severity":"risky","descriptionDelta":0.5636363636363637},{"kind":"input_property_removed","path":"inputSchema.properties.api_key","tool":"list_strategies","before":{"type":"string","title":"Api Key","default":""},"detail":"Field `api_key` was removed from `list_strategies` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"sandbox_backtest","after":"Run a sandbox backtest of strategy code without persisting anything.\n\n    This is the fastest way to test a strategy. The code is run through\n    static checks and a full backtest on historical data, but no Strategy\n    or StrategyVersion rows are created. Use this for rapid iteration.\n\n    Args:\n        code: Python source code implementing the Strategy contract.\n              Must define a METADATA dict and a class extending Strategy\n              with an on_bar(ctx) -> Signal method. See CREATOR_API.md.\n        domain: Trading domain (e.g. \"eth_usdc\", \"btc_usdc\", \"sol_usdc\").\n        symbol: Price symbol for historical data (e.g. \"ETHUSDT\").\n        user_id: Identifier for trial tracking (used for DSR correction).\n\n    Returns JSON with: success, metrics (sharpe, sortino, win_rate,\n    total_trades, return_bps, max_drawdown, regime_breakdown,\n    exit_reason_breakdown), or error details if validation failed.\n    ","before":"Run a sandbox backtest of strategy code without persisting anything.\n\n    This is the fastest way to test a strategy. The code is run through\n    static checks and a full backtest on historical data, but no Strategy\n    rows are created. Use this for rapid iteration.\n\n    Args:\n        code: Python source code implementing the Strategy contract.\n              Must define a METADATA dict and a class extending Strategy\n              with an on_bar(ctx) -> Signal method. See the strategy template resource.\n        domain: Trading domain (e.g. \"eth_usdc\", \"btc_usdc\", \"sol_usdc\").\n        user_id: Identifier for the creator (requires authentication for this endpoint).\n        api_key: Your dMoERA Personal Access Token. Required for this tool.\n                 Get one at https://dmoera.xyz → Settings → API Keys.\n                 (If running locally with DMOERA_API_KEY env var set, this can be omitted.)\n\n    Returns JSON with: success, metrics (sharpe, sortino, win_rate,\n    total_trades, return_bps, max_drawdown, regime_breakdown),\n    or error details if validation failed.\n    ","detail":"Description of `sandbox_backtest` changed (36% word delta).","severity":"risky","descriptionDelta":0.3553719008264463},{"kind":"input_property_removed","path":"inputSchema.properties.api_key","tool":"sandbox_backtest","before":{"type":"string","title":"Api Key","default":""},"detail":"Field `api_key` was removed from `sandbox_backtest` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.symbol","tool":"sandbox_backtest","after":{"type":"string","title":"Symbol","default":"ETHUSDT"},"detail":"Optional field `symbol` was added to `sandbox_backtest`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"submit_strategy","after":"Submit a strategy for full validation and live deployment.\n\n    Runs the complete 7-stage validation pipeline:\n    1. static_check — code safety (banned imports, syntax)\n    2. in_sample — sanity check on training data\n    3. out_of_sample — test on unseen data (70/30 split)\n    4. walk_forward — rolling window validation\n    5. randomized_start — different random start points\n    6. perturbation — market stress test\n    7. holdout — server-side reserved data (pass/fail only)\n\n    If all stages pass, the strategy is registered for isolated live\n    paper trading with status=\"incubating\". Promotion to \"live\" requires\n    a proven track record.\n\n    Args:\n        name: Human-readable strategy name (e.g. \"ETH Momentum v2\").\n        domain: Trading domain key (e.g. \"eth_usdc\").\n        code: Python source code implementing the Strategy contract.\n        user_id: The creator's user ID.\n        symbol: Price symbol for historical data.\n\n    Returns JSON with: success, strategy_id, bot_id, validation results\n    per stage, or error details.\n    ","before":"Submit a strategy for full validation and live deployment.\n\n    Runs the complete 7-stage validation pipeline:\n    1. static_check — code safety (banned imports, syntax)\n    2. in_sample — sanity check on training data\n    3. out_of_sample — test on unseen data (70/30 split)\n    4. walk_forward — rolling window validation\n    5. randomized_start — different random start points\n    6. perturbation — market stress test\n    7. holdout — server-side reserved data (pass/fail only)\n\n    If all stages pass, the strategy is registered for isolated live\n    paper trading with status=\"incubating\". Promotion to \"live\" requires\n    a proven track record.\n\n    Args:\n        name: Human-readable strategy name (e.g. \"ETH Momentum v2\").\n        domain: Trading domain key (e.g. \"eth_usdc\").\n        code: Python source code implementing the Strategy contract.\n        user_id: The creator's user ID (authentication required).\n        symbol: Price symbol (auto-detected from domain if omitted).\n        api_key: Your dMoERA Personal Access Token. Required for this tool.\n                 Get one at https://dmoera.xyz → Settings → API Keys.\n                 (If running locally with DMOERA_API_KEY env var set, this can be omitted.)\n\n    Returns JSON with: success, strategy_id, bot_id, validation results\n    per stage, or error details.\n    ","detail":"Description of `submit_strategy` changed (22% word delta).","severity":"safe","descriptionDelta":0.2246376811594203},{"kind":"input_property_removed","path":"inputSchema.properties.api_key","tool":"submit_strategy","before":{"type":"string","title":"Api Key","default":""},"detail":"Field `api_key` was removed from `submit_strategy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"}],"published_at":"2026-09-01T18:58:14.781Z"}]