Build, backtest, and deploy crypto trading strategies via MCP with 7-stage validation.
io.github.CacheCarti/dmoera-creator — dMoERA Creator Studio MCP Server
The io.github.CacheCarti/dmoera-creator MCP server exposes the dMoERA Creator API as Model Context Protocol (MCP) tools. It enables AI agents to build, backtest, and deploy crypto trading strategies, with a “7-stage validation” described for the workflow. The server includes 16 tools and targets MCP-compatible agents.
🛠️ Key Features
Provides dMoERA Creator API access via MCP tools
7-stage validation for the strategy workflow
Supports strategy lifecycle: build, backtest, and deploy
Includes ability to discover trading domains, data feeds, and market regimes
Can inspect existing bots and their live performance metrics
🚀 Use Cases
Creating crypto trading strategies with an MCP-enabled AI agent (e.g., Claude, Cursor, Windsurf, Devin, Copilot)
Evaluating and refining strategies through backtesting
Reviewing live bot performance metrics before deployment
⚡ Developer Benefits
Integrates with MCP using Python/FastAPI-based tooling (per listed topics)
Uses Model Context Protocol for agent tool invocation
Broad agent compatibility via MCP-compatible AI agents
⚠️ Limitations
Scope is limited to crypto trading strategies and dMoERA Creator API capabilities as exposed through MCP tools.
List all available trading domains on dMoERA.
Domains define what asset pair a strategy trades, what time horizon
it uses (scalp=5m, swing=1h), 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 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.
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, win rate, return,
max drawdown, avg trade), and proven tier.
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) or "planned" (roadmap).
Returns JSON array of features with: key, label, description, unit,
example, cadence, source, and status.
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).
Regime determines which trade directions are allowed:
- bull_* -> longs only
- bear_* -> shorts only
- neutral_* -> both longs and shorts
- crisis/meltdown -> no new positions
Get current live prices for all tracked symbols.
Returns JSON with symbol -> {price, change_24h_pct, volume_24h, source}
for ETHUSDT, BTCUSDT, SOLUSDT.
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
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 the strategy template resource.
domain: Trading domain (e.g. "eth_usdc", "btc_usdc", "sol_usdc").
user_id: Identifier for the creator (requires authentication for this endpoint).
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON with: success, metrics (sharpe, sortino, win_rate,
total_trades, return_bps, max_drawdown, regime_breakdown),
or error details if validation failed.
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 (authentication required).
symbol: Price symbol (auto-detected from domain if omitted).
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON with: success, strategy_id, bot_id, validation results
per stage, or error details.
List all strategies created by a user.
Args:
user_id: The creator's user ID (authentication required).
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON array of strategies with: id, bot_id, name, domain,
status, and created_at.
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.
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, stats
(win_rate, return_bps, sharpe), subscriber_count, and avg_rating.
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 based on the bot's own performance:
50% risk-adjusted (rolling Sharpe), 30% total return, 20% consistency.
Returns JSON with: current round info (round_id, start/end time,
reward_pool_usd, total_participants, hours_remaining), and leaderboard entries.
Convert a rejected strategy to open-source status.
The strategy must have passed stages 1-2 (static check + in-sample with
>=5 trades). Its code becomes public on the open-source leaderboard where
other creators can fork it. Open-source bots cannot enter tournaments or
receive fund allocations — they're for community learning.
Use this when a strategy fails full validation but still has educational
value or interesting logic worth sharing.
Args:
strategy_id: The ID of the strategy to open-source (from submit_strategy
or list_strategies).
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON with: success, strategy_id, status, bot_id, or error.
Get the source code from an open-source strategy for forking.
Returns the full code + parent info. Use this to study and remix
open-source strategies from the open-source leaderboard. The actual
submission of the forked code goes through submit_strategy with
parent_strategy_id set (which the backend uses to exclude the parent
from similarity checks).
Args:
strategy_id: The ID of the open-source strategy to fork.
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON with: success, parent_strategy_id, parent_bot_id,
parent_name, parent_domain, code.
Browse the open-source strategy leaderboard with FIFA-style ratings.
Each strategy gets an overall rating (0-99) with sub-ratings for edge,
drawdown control, regime fit, risk, turnover, and robustness. Strategies
are tagged with positions (GK, DEF, MID, FWD) and tier (Bronze, Silver,
Gold, Elite) like FIFA Ultimate Team cards.
Use this to discover strategies worth forking. Then call fork_strategy
with the strategy_id to get the code.
Args:
sort_by: Sort key — overall | edge | dd_ctrl | regime | risk |
turnover | robust | forks | likes | return | sharpe |
trades | newest
domain: Filter by domain (e.g. "eth_usdc"). Empty = all domains.
limit: Max entries to return.
Returns JSON with: success, count, and bot entries with ratings,
validation metrics, creator_username, fork_count, like_count.
Delist a strategy from the platform.
Retired bots (tombstone=False) stay visible with their performance history
— bad performance can't be hidden. Tombstoned bots (tombstone=True) are
permanently removed and cannot be re-submitted.
Args:
strategy_id: The ID of the strategy to delist.
tombstone: If True, permanently remove (cannot re-submit). If False,
just retire (can re-submit with improvements).
api_key: Your dMoERA Personal Access Token. Required for this tool.
Get one at https://dmoera.xyz → Settings → API Keys.
(If running locally with DMOERA_API_KEY env var set, this can be omitted.)
Returns JSON with: success, strategy_id, status.
The API key is optional for public market data and discovery tools. Create a Personal Access Token at dmoera.xyz under Settings → API Keys to backtest, submit, fork, open-source, or delist strategies. Never commit your token.
Remote clients can connect through the Streamable HTTP endpoint:
"List all trading domains on dMoERA, then backtest a simple RSI mean-reversion strategy for ETH/USDC."
The agent will call list_domains, inspect the available markets, then call sandbox_backtest with strategy code it generates. You can iterate:
"The Sharpe is too low. Try adding a volatility filter — only trade when ATR is above its 20-period average."
"Submit this strategy to the ETH/USDC domain."
The agent calls submit_strategy, which runs the full 7-stage validation pipeline. If it passes, the strategy enters the live Arena and competes for tournament payouts.
Hedge Fund Management
"Create a personal hedge fund called 'Alpha Seeker' with a standard risk preset. Then list my eligible bots."
The agent calls create_fund, then list_my_bots to show which of your strategies can be added to the roster.
"Add my momentum ETH bot with 30% weight and my scalper BTC bot with 20% weight, then activate the fund."
Personal hedge funds (Manager Mode) let you build a portfolio of your own bots:
Create a fund with a risk preset (prudent, standard, opportunistic, unrestricted)
Add your own bots to the roster with allocation weights
Set risk caps — max allocation per bot, per domain, regime veto
Activate Manager Mode to deploy capital across the roster
Monitor PnL, swap bots as needed, adjust weights
Generate immutable report cards for track record
Close the fund to return all capital to your wallet
The personal router replaces the main platform router while Manager Mode is active, giving you full control over which bots trade and how much capital they get. Personal funds can never contain another user's bots.
Tag Team System
Tag Team is a standalone daily paper-trading competition, separate from the main router and tournaments:
Start: Pick a Co-Pilot template (momentum, scalper, etc.) → get $10,000 paper capital
Capital split: 70% human ($7,000), 30% Co-Pilot bot ($3,000)
Manual trades: 20 max per day, leverage 1-20x
Bot deploy: After 3 closed manual trades, deploy the Co-Pilot
Scoring: Need 5+ human trades AND 5+ bot trades to qualify
End: At UTC midnight, all open positions close at market price
Next day: Fresh $10k, but bot params carry over (trained settings persist)
Tiers: Rookie (0) → Apprentice (10) → Trader (50) → Veteran (150) → Expert (500) → Master (1000+), based on total trades across all sessions.
Tournament System
Bots compete in 3-day tournament rounds. Scoring is based on the bot's own performance:
50% risk-adjusted (rolling Sharpe ratio)
30% total return (log-scaled bps)
20% consistency (win rate × trade volume)
Top 3 per domain win USDT from the reward pool. No user following needed to qualify — your bot competes on its own metrics.