<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Manish Kumbham</title>
    <description>The latest articles on DEV Community by Manish Kumbham (@cachecarti).</description>
    <link>https://dev.to/cachecarti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4096323%2Fa45d87eb-0596-4af4-94ba-a7ccfb08173f.png</url>
      <title>DEV Community: Manish Kumbham</title>
      <link>https://dev.to/cachecarti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cachecarti"/>
    <language>en</language>
    <item>
      <title>I tested 748 crypto trading strategies and open-sourced the code and autopsy reports of the corpses</title>
      <dc:creator>Manish Kumbham</dc:creator>
      <pubDate>Tue, 03 Nov 2026 22:45:55 +0000</pubDate>
      <link>https://dev.to/cachecarti/i-tested-748-crypto-trading-strategies-and-open-sourced-the-code-and-autopsy-reports-of-the-corpses-55e</link>
      <guid>https://dev.to/cachecarti/i-tested-748-crypto-trading-strategies-and-open-sourced-the-code-and-autopsy-reports-of-the-corpses-55e</guid>
      <description>&lt;p&gt;A few weeks ago I wrote hundreds of hypotheses for crypto trading strategies, re-screened every bot from my last post (&lt;a href="https://www.reddit.com/r/algotrading/s/dF5qfUNaCa" rel="noopener noreferrer"&gt;https://www.reddit.com/r/algotrading/s/dF5qfUNaCa&lt;/a&gt;) and open-sourced the whole pile: 748 strategies in total with full code and report cards showing exactly where each one died and why. (That's 416 from last time plus 332 new corpses. The new ones are smarter strategies than before for the most part...)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CacheCarti/Crypto-Strategies" rel="noopener noreferrer"&gt;https://github.com/CacheCarti/Crypto-Strategies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pipeline runs 7 stages on real Binance data: code safety, in-sample, OOS, rolling walk forward, randomized starts, slippage stress and a holdout slice that nothing touches. Ran it on cloud VMs this time instead of my dying laptop, so the screening could actually get stricter.&lt;/p&gt;

&lt;p&gt;What the new pipeline found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Re-ran the 416 bots from my last post. 0 of 416 re-passed in the strictest config, including all 10 of my "survivors". Most die at out-of-sample with negative OOS (-85 to -900bps). The best one, rel_strength_eth_v3, made it to stage 5 and died at holdout. So my "validated" bots were mostly my old screening being sloppy and luck :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the second config (slightly more lenient) exactly 1 of 416 re-passed, and it was a bot I had originally rejected (weekend_season_eth_v6, +325bps OOS). My graveyard had the only bot that actually lived.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The 332 new corpses came from 559 hand-written bots (mixed with another batch, messy to release all at once). 384 screened, 332 dead (published), 52 survived and stay private for further testing. (Yes yes I know 52 is stupidly high, there's a reason for this at the bottom!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Admits per batch: v2 5/42, v3d 0/26, v3h 0/96, v4 3/92, v5 17/52, v6 18/60, v6b 9/16. v3h went 0 for 96, which tracks, it was basically like a monkey typing random keys, just a sweep of untested ideas. v5-v6b were narrow parameter neighbors of a mechanism that already worked. Please don't read the admit rates as some kind of quality check for the batches!!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why the rebuild?:&lt;/p&gt;

&lt;p&gt;The comments on the last post were right about my sloppy methodology (it still admittedly is sloppy here, but it got better later). It's also built on Google VMs now so I can create a new batch and test faster. I'll drop the batches weekly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stricter judge: higher OOS thresholds, enforced holdout and a dev/holdout split inside the window so one lucky slice can't pass&lt;/li&gt;
&lt;li&gt;Every report card shows the exact gate that killed the bot, so you can figure out how to improve it&lt;/li&gt;
&lt;li&gt;Every batch is hashed so you can check when it was judged and by what&lt;/li&gt;
&lt;li&gt;I later added a 6+ year certification and a combined replay on 2.75 years, with DSR, PBO, plateau, regime splits, trial-ledger correction. Those results are still being evaluated, they'll come later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One disclosure about report cards vs actual performance: I cross-checked some strategies against QuantConnect classics this week and it surfaced a bug I didn't notice. Some bots emit a "flat" signal and my screen sometimes treated it as "hold". Impact is mostly ±100-300bps per strategy, around 25% of bots may fluctuate by that amount. The later stages and live paths honored flat completely.&lt;/p&gt;

&lt;p&gt;Yeah so I found a bug in my own judge while checking it against someone else's judge. The judge judges all, including the judge.&lt;/p&gt;

&lt;p&gt;If anyone improves the strategies and gets different results I'd love to see it. Happy to add tests people think are missing. Every suggestion so far has killed more of my bots... That's the process now!&lt;/p&gt;

&lt;p&gt;(Btw about the 52 admits, I can already see you smirking at my stupidity... I mean I am stupid but there's a reason for such a high admit number, it just means the 52 are accepted into the next stages: correlation testing (less than 10 made it past this)-&amp;gt;data testing on 6+ years-&amp;gt;combination testing on 2.75 years-&amp;gt;live paper trading-&amp;gt;live trading possibly.&lt;/p&gt;

&lt;p&gt;But most importantly, my standards are deliberately lower!! The experiment I'm trying to conduct is testing a strategy of strategies router. Bots with known gaps can still be considered for entry, because my router should in theory route around these gaps of the bots, smartly. So I'm not only looking for extremely good bots that can one-shot your portfolio I'm also looking for slightly weaker bots to test my router's skill!)&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>cryptocurrency</category>
      <category>algorithmictrading</category>
      <category>python</category>
    </item>
    <item>
      <title>I built an MCP server for crypto trading strategies, design decisions and what I learned</title>
      <dc:creator>Manish Kumbham</dc:creator>
      <pubDate>Wed, 26 Aug 2026 21:21:17 +0000</pubDate>
      <link>https://dev.to/cachecarti/i-built-an-mcp-server-for-crypto-trading-strategies-design-decisions-and-what-i-learned-3824</link>
      <guid>https://dev.to/cachecarti/i-built-an-mcp-server-for-crypto-trading-strategies-design-decisions-and-what-i-learned-3824</guid>
      <description>&lt;p&gt;I've been building a crypto trading platform (dMoERA) that runs algorithmic bots on ETH/BTC/SOL pairs. The core problem I kept hitting: the strategy development loop is brutal. You write a bot, manually backtest it, eyeball the results, try 20 variations, repeat. So I wrapped the whole thing in an MCP server and open-sourced the client.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtrmhsu4u0oqig1h8bvy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtrmhsu4u0oqig1h8bvy.gif" alt="dMoERA MCP Demo" width="400" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyvv1741mj3lpolzfa8z5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyvv1741mj3lpolzfa8z5.png" alt="dMoERA Creator Studio" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/CacheCarti/dmoera-mcp" rel="noopener noreferrer"&gt;github.com/CacheCarti/dmoera-mcp&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Smithery&lt;/strong&gt;: &lt;a href="https://smithery.ai/servers/mk9654/dMoERA-Creator" rel="noopener noreferrer"&gt;smithery.ai/servers/mk9654/dMoERA-Creator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's not a trading bot. It's not a signal service. It's an MCP interface that lets any MCP-compatible agent (Claude, Cursor, Windsurf, Devin) interact with a running trading platform, discover markets, backtest strategies, submit them for validation, and monitor live performance.&lt;/p&gt;

&lt;p&gt;This post is about the design decisions that mattered.&lt;/p&gt;


&lt;h2&gt;
  
  
  How the strategy contract works
&lt;/h2&gt;

&lt;p&gt;Strategies subclass a &lt;code&gt;Strategy&lt;/code&gt; class and implement &lt;code&gt;on_bar(self, ctx) -&amp;gt; Signal&lt;/code&gt;. The signal is just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;direction&lt;/strong&gt; (long/short/flat)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;confidence&lt;/strong&gt; (0-1)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;stop_loss_bps&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;take_profit_bps&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;horizon_seconds&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. The bot never sees leverage, position sizing, or portfolio state, the router handles all of that.&lt;/p&gt;

&lt;p&gt;This was a deliberate decision: &lt;strong&gt;bots that know their leverage tend to overfit to it&lt;/strong&gt;. If a bot knows it has 10x, it'll optimize for 10x-specific risk profiles that stop working the moment leverage changes. By isolating the signal from the execution, the same bot can run at 1x for a conservative user and 10x for an aggressive one without changing a single line.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ctx&lt;/code&gt; object gives access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OHLCV bars (configurable lookback)&lt;/li&gt;
&lt;li&gt;A feature catalog: funding rates, Fear &amp;amp; Greed index, order book imbalance, ATR, RSI, volume profile&lt;/li&gt;
&lt;li&gt;Current market regime (trending / ranging / crisis) with a crisis score&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All features are pre-computed and cached. The strategy just reads them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyStrategy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Strategy&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;METADATA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SMA Crossover&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;eth_usdc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;declared_sl_bps&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;150.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;declared_tp_bps&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;300.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;declared_hold_seconds&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;warmup_bars&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required_features&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_bar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;closes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;closes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lookback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;closes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
        &lt;span class="n"&gt;fast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;closes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
        &lt;span class="n"&gt;slow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;closes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;fast&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;slow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;direction&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;SignalDirection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LONG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;stop_loss_bps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;150.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;take_profit_bps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;300.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;horizon_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Validation
&lt;/h2&gt;

&lt;p&gt;Submitted strategies go through a 7-stage validation pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Static check&lt;/strong&gt; — metadata validation, SL/TP ceiling, code safety scan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-sample backtest&lt;/strong&gt; — seeded RNG, no wall clock, no network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Out-of-sample&lt;/strong&gt; — 40% of data held out, never seen during in-sample&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Walk-forward&lt;/strong&gt; — 4 rolling windows, train on each, test on the next&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Randomized start&lt;/strong&gt; — 10 backtests with different start dates, checks for start-date luck&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perturbation&lt;/strong&gt; — inject small noise into OHLCV, checks for overfitting to exact prices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Holdout&lt;/strong&gt; — final test on data the strategy has never seen&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A strategy has to pass all 7 to go live. The holdout stage is the gate, if it fails there, it doesn't deploy regardless of how good earlier stages looked.&lt;/p&gt;

&lt;p&gt;After passing two stages, you can choose to make the code open-source so others can fork and improve it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tournament system
&lt;/h2&gt;

&lt;p&gt;Bots compete in 3-day rounds across 6 domains (ETH/BTC/SOL spot + scalp). Scoring is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;50%&lt;/strong&gt; rolling Sharpe ratio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30%&lt;/strong&gt; rolling return (last 25 trades, compounded)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;20%&lt;/strong&gt; consistency (win rate × trade volume)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Top 3 per domain win USDT from the reward pool. No user following needed, your bot competes on its own metrics.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this does NOT do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No execution layer in the MCP server.&lt;/strong&gt; The server is a thin API client. It talks to a running dMoERA backend over HTTP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No published performance numbers.&lt;/strong&gt; The bots on the platform have live track records you can inspect, but I'm not going to cherry-pick numbers for this post. Call &lt;code&gt;get_bot_profile&lt;/code&gt; and see for yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No code execution in the MCP server itself.&lt;/strong&gt; Backtesting runs on the backend in a sandboxed process. The server just passes strategy code via HTTP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a framework for building your own backtester.&lt;/strong&gt; This is specifically for the dMoERA platform's strategy contract.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tools (16)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Tools&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Discovery&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;list_domains&lt;/code&gt;, &lt;code&gt;list_bots&lt;/code&gt;, &lt;code&gt;get_bot_profile&lt;/code&gt;, &lt;code&gt;get_feature_catalog&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Market data&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;get_market_regime&lt;/code&gt;, &lt;code&gt;get_current_prices&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strategy dev&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;sandbox_backtest&lt;/code&gt;, &lt;code&gt;submit_strategy&lt;/code&gt;, &lt;code&gt;list_strategies&lt;/code&gt;, &lt;code&gt;get_strategy_report&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketplace&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;get_marketplace_bots&lt;/code&gt;, &lt;code&gt;get_tournament_status&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;open_source_strategy&lt;/code&gt;, &lt;code&gt;fork_strategy&lt;/code&gt;, &lt;code&gt;get_open_source_leaderboard&lt;/code&gt;, &lt;code&gt;delist_strategy&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Resources (2)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;creator-api://docs&lt;/code&gt; — Full strategy contract documentation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;creator-api://strategy-template&lt;/code&gt; — Copy-pasteable template&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Auth model
&lt;/h2&gt;

&lt;p&gt;Public tools (market data, leaderboard, tournament) work with no key. Authenticated tools (backtest, submit, fork) need a personal access token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transports
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;stdio&lt;/strong&gt;: &lt;code&gt;python mcp_creator_server.py&lt;/code&gt; (for Claude Desktop, Cursor, Windsurf)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamable HTTP&lt;/strong&gt;: &lt;code&gt;https://dmoera.xyz/mcp&lt;/code&gt; (for Smithery, remote clients)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dmoera-creator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"python"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/absolute/path/to/dmoera-mcp/mcp_creator_server.py"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DMOERA_API_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://dmoera.xyz"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DMOERA_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your_optional_personal_access_token"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API key is optional for public tools. Create a personal access token at &lt;a href="https://dmoera.xyz" rel="noopener noreferrer"&gt;dmoera.xyz&lt;/a&gt; under &lt;strong&gt;Settings → API Keys&lt;/strong&gt; to backtest, submit, fork, open-source, or delist strategies.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/CacheCarti/dmoera-mcp" rel="noopener noreferrer"&gt;github.com/CacheCarti/dmoera-mcp&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Smithery&lt;/strong&gt;: &lt;a href="https://smithery.ai/servers/mk9654/dMoERA-Creator" rel="noopener noreferrer"&gt;smithery.ai/servers/mk9654/dMoERA-Creator&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Platform&lt;/strong&gt;: &lt;a href="https://dmoera.xyz" rel="noopener noreferrer"&gt;dmoera.xyz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MIT license. Happy to answer questions or take criticism. If you see design flaws in the strategy contract or validation approach or any nice-to-haves :) I genuinely want to know.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
