algochains-mcp-server 22.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. algochains_mcp_server-22.4.0/.env.example +245 -0
  2. algochains_mcp_server-22.4.0/.gitattributes +7 -0
  3. algochains_mcp_server-22.4.0/.github/workflows/mcp-regression-gate.yml +266 -0
  4. algochains_mcp_server-22.4.0/.github/workflows/release.yml +379 -0
  5. algochains_mcp_server-22.4.0/.gitignore +14 -0
  6. algochains_mcp_server-22.4.0/.windsurf/skills/mcporter-toolkit/SKILL.md +118 -0
  7. algochains_mcp_server-22.4.0/CHANGELOG.md +228 -0
  8. algochains_mcp_server-22.4.0/HIDDEN_KILLERS_AUDIT.md +329 -0
  9. algochains_mcp_server-22.4.0/INTEGRATION_README.md +449 -0
  10. algochains_mcp_server-22.4.0/LATENCY_GUIDE.md +180 -0
  11. algochains_mcp_server-22.4.0/LICENSE +21 -0
  12. algochains_mcp_server-22.4.0/MARKETPLACE_CREATOR_GUIDE.md +273 -0
  13. algochains_mcp_server-22.4.0/MEGA_PROMPT_PREDICTION_MARKETS_V1.md +37 -0
  14. algochains_mcp_server-22.4.0/MEGA_PROMPT_V22.md +508 -0
  15. algochains_mcp_server-22.4.0/Makefile +124 -0
  16. algochains_mcp_server-22.4.0/PKG-INFO +551 -0
  17. algochains_mcp_server-22.4.0/README.md +455 -0
  18. algochains_mcp_server-22.4.0/README_DRAFT.md +428 -0
  19. algochains_mcp_server-22.4.0/README_backup_20260522.md +1417 -0
  20. algochains_mcp_server-22.4.0/SAFETY_MODEL.md +248 -0
  21. algochains_mcp_server-22.4.0/UX_BLUEPRINT.md +283 -0
  22. algochains_mcp_server-22.4.0/algochains.ts +13656 -0
  23. algochains_mcp_server-22.4.0/algoclaw/README.md +58 -0
  24. algochains_mcp_server-22.4.0/algoclaw/agents/registry.json +1 -0
  25. algochains_mcp_server-22.4.0/algoclaw/cli.py +926 -0
  26. algochains_mcp_server-22.4.0/algoclaw/cron/schedule.json +1 -0
  27. algochains_mcp_server-22.4.0/algoclaw/memory/.gitkeep +0 -0
  28. algochains_mcp_server-22.4.0/algoclaw/skills/bot-health/SKILL.md +40 -0
  29. algochains_mcp_server-22.4.0/algoclaw/skills/cooldown-check/SKILL.md +35 -0
  30. algochains_mcp_server-22.4.0/algoclaw/skills/kill-switch/SKILL.md +56 -0
  31. algochains_mcp_server-22.4.0/algoclaw/skills/portfolio-optimize/SKILL.md +47 -0
  32. algochains_mcp_server-22.4.0/algoclaw/skills/position-size/SKILL.md +53 -0
  33. algochains_mcp_server-22.4.0/algoclaw/skills/prop-fund-check/SKILL.md +57 -0
  34. algochains_mcp_server-22.4.0/algoclaw/skills/security-posture/SKILL.md +56 -0
  35. algochains_mcp_server-22.4.0/algoclaw/skills/signal-health/SKILL.md +45 -0
  36. algochains_mcp_server-22.4.0/algoclaw/skills/stoploss-guard/SKILL.md +41 -0
  37. algochains_mcp_server-22.4.0/algoclaw/skills/thoughtproof-verify/SKILL.md +52 -0
  38. algochains_mcp_server-22.4.0/algoclaw/state/.gitkeep +0 -0
  39. algochains_mcp_server-22.4.0/blueprints/KALSHI_INTEGRATION_BLUEPRINT_V1.md +276 -0
  40. algochains_mcp_server-22.4.0/blueprints/PREDICTION_MARKETS_GAP_ANALYSIS.md +45 -0
  41. algochains_mcp_server-22.4.0/blueprints/PREDICTION_MARKET_BOTS_BLUEPRINT.md +65 -0
  42. algochains_mcp_server-22.4.0/blueprints/UPGRADE_BLUEPRINT_V22.md +254 -0
  43. algochains_mcp_server-22.4.0/blueprints/archive/PAI_INTEGRATION_BLUEPRINT.md +297 -0
  44. algochains_mcp_server-22.4.0/blueprints/archive/SKILLS_BRIDGE_BLUEPRINT.md +165 -0
  45. algochains_mcp_server-22.4.0/config/compliance_profiles.json +49 -0
  46. algochains_mcp_server-22.4.0/config/mcporter.json +28 -0
  47. algochains_mcp_server-22.4.0/config/profiles/eu_mifid2.json +51 -0
  48. algochains_mcp_server-22.4.0/config/profiles/us_institutional.json +45 -0
  49. algochains_mcp_server-22.4.0/config/profiles/us_retail_algo.json +42 -0
  50. algochains_mcp_server-22.4.0/config/stress_scenarios.json +51 -0
  51. algochains_mcp_server-22.4.0/deno.json +5 -0
  52. algochains_mcp_server-22.4.0/deno.lock +23 -0
  53. algochains_mcp_server-22.4.0/docs/ALGOCHAINS_MASTER_ROADMAP_MEGA_PROMPT.md +1712 -0
  54. algochains_mcp_server-22.4.0/docs/ALGOCHAINS_MEGA_BLUEPRINT_V2.md +442 -0
  55. algochains_mcp_server-22.4.0/docs/ALGOCHAINS_MEGA_BLUEPRINT_V2_PART2.md +949 -0
  56. algochains_mcp_server-22.4.0/docs/ALGOCHAINS_MEGA_BLUEPRINT_V2_PART3.md +865 -0
  57. algochains_mcp_server-22.4.0/docs/ALGOCHAINS_MEGA_PROMPT_V3.md +401 -0
  58. algochains_mcp_server-22.4.0/docs/AUDIT_LOG_20260510.md +234 -0
  59. algochains_mcp_server-22.4.0/docs/COMMS_STRATEGY.md +438 -0
  60. algochains_mcp_server-22.4.0/docs/DEVELOPER_TIER_ONBOARDING.md +212 -0
  61. algochains_mcp_server-22.4.0/docs/GOTCHAS_AND_BUGS.md +230 -0
  62. algochains_mcp_server-22.4.0/docs/INTEGRATION_README.md +449 -0
  63. algochains_mcp_server-22.4.0/docs/MASTER_BLUEPRINT_V4_V6.md +397 -0
  64. algochains_mcp_server-22.4.0/docs/MCPORTER_INTEGRATION_BLUEPRINT.md +487 -0
  65. algochains_mcp_server-22.4.0/docs/MCPORTER_INTEGRATION_BLUEPRINT_V2.md +788 -0
  66. algochains_mcp_server-22.4.0/docs/MCP_AUTH_AND_POLICY_MATRIX.md +30 -0
  67. algochains_mcp_server-22.4.0/docs/MCP_HTTP_BRIDGE_THREAT_MODEL.md +205 -0
  68. algochains_mcp_server-22.4.0/docs/MCP_PARITY_AND_AUTONOMOUS_GAP.md +81 -0
  69. algochains_mcp_server-22.4.0/docs/MCP_SERVER_ENHANCEMENT_ROADMAP.md +86 -0
  70. algochains_mcp_server-22.4.0/docs/MCP_TRACEABILITY_CONTRACT.md +92 -0
  71. algochains_mcp_server-22.4.0/docs/MEGAPROMPT_MCP_FIX.md +404 -0
  72. algochains_mcp_server-22.4.0/docs/SAFE_MODE_MATRIX.md +147 -0
  73. algochains_mcp_server-22.4.0/docs/TIER_REGISTRY_CHANGES.md +129 -0
  74. algochains_mcp_server-22.4.0/docs/TRADOVATE_PARITY.md +121 -0
  75. algochains_mcp_server-22.4.0/docs/V17_MULTI_BROKER_SCALING_BLUEPRINT.md +807 -0
  76. algochains_mcp_server-22.4.0/docs/V7_BYOK_KEY_ORCHESTRATOR_BLUEPRINT.md +372 -0
  77. algochains_mcp_server-22.4.0/docs/V8_STRATEGY_BUILDER_SOCIAL_TRADING_BLUEPRINT.md +492 -0
  78. algochains_mcp_server-22.4.0/docs/V9_RISK_DASHBOARD_COMPLIANCE_WHITELABEL_BLUEPRINT.md +754 -0
  79. algochains_mcp_server-22.4.0/examples/trade_propagation/TRADE_PROPAGATION.md +21 -0
  80. algochains_mcp_server-22.4.0/examples/trade_propagation/dummy_signal_test.py +32 -0
  81. algochains_mcp_server-22.4.0/examples/trade_propagation/send_signal.py +77 -0
  82. algochains_mcp_server-22.4.0/homebrew/algochains.rb +94 -0
  83. algochains_mcp_server-22.4.0/man/man1/algochains.1 +265 -0
  84. algochains_mcp_server-22.4.0/migrations/v10_v16_schema.sql +592 -0
  85. algochains_mcp_server-22.4.0/migrations/v8_v9_schema.sql +299 -0
  86. algochains_mcp_server-22.4.0/packages/sdk/package.json +36 -0
  87. algochains_mcp_server-22.4.0/packages/sdk/src/client.d.ts +142 -0
  88. algochains_mcp_server-22.4.0/packages/sdk/src/index.js +37 -0
  89. algochains_mcp_server-22.4.0/packages/sdk/src/types.d.ts +1404 -0
  90. algochains_mcp_server-22.4.0/pyproject.toml +101 -0
  91. algochains_mcp_server-22.4.0/registry.json +86 -0
  92. algochains_mcp_server-22.4.0/scripts/algochains +118 -0
  93. algochains_mcp_server-22.4.0/scripts/algochains.ps1 +111 -0
  94. algochains_mcp_server-22.4.0/scripts/demo_algochains.sh +33 -0
  95. algochains_mcp_server-22.4.0/scripts/install.sh +196 -0
  96. algochains_mcp_server-22.4.0/scripts/install_on_desktop.sh +148 -0
  97. algochains_mcp_server-22.4.0/scripts/quickstart.py +629 -0
  98. algochains_mcp_server-22.4.0/scripts/run_bandit.sh +41 -0
  99. algochains_mcp_server-22.4.0/scripts/secret_scan.py +131 -0
  100. algochains_mcp_server-22.4.0/scripts/setup_cc_tunnel.sh +114 -0
  101. algochains_mcp_server-22.4.0/scripts/startup_health_check.py +429 -0
  102. algochains_mcp_server-22.4.0/scripts/test_cli_20.sh +90 -0
  103. algochains_mcp_server-22.4.0/skills/blueprint-executor.ts +97 -0
  104. algochains_mcp_server-22.4.0/skills/bot-health-monitor.ts +104 -0
  105. algochains_mcp_server-22.4.0/skills/contract-rollover-handler.ts +135 -0
  106. algochains_mcp_server-22.4.0/skills/deploy-bot-changes.ts +85 -0
  107. algochains_mcp_server-22.4.0/skills/institutional-flow-analysis.ts +109 -0
  108. algochains_mcp_server-22.4.0/skills/mcpt-pipeline-ops.ts +90 -0
  109. algochains_mcp_server-22.4.0/skills/money-blender-ops.ts +80 -0
  110. algochains_mcp_server-22.4.0/skills/morning-health-brief.ts +87 -0
  111. algochains_mcp_server-22.4.0/skills/strategy-vault-tracker.ts +77 -0
  112. algochains_mcp_server-22.4.0/skills/system-audit-fix.ts +119 -0
  113. algochains_mcp_server-22.4.0/src/algochains_mcp/__init__.py +13 -0
  114. algochains_mcp_server-22.4.0/src/algochains_mcp/account_protection/__init__.py +49 -0
  115. algochains_mcp_server-22.4.0/src/algochains_mcp/account_protection/engine.py +296 -0
  116. algochains_mcp_server-22.4.0/src/algochains_mcp/account_protection/guards.py +636 -0
  117. algochains_mcp_server-22.4.0/src/algochains_mcp/account_protection/protection_patterns.py +468 -0
  118. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_memory.py +345 -0
  119. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/__init__.py +16 -0
  120. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/agent_memory.py +44 -0
  121. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/agent_monitor.py +57 -0
  122. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/agent_orchestrator.py +78 -0
  123. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/consensus_engine.py +47 -0
  124. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/task_planner.py +39 -0
  125. algochains_mcp_server-22.4.0/src/algochains_mcp/agent_swarm/tool_router.py +68 -0
  126. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/__init__.py +15 -0
  127. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/congressional.py +174 -0
  128. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/cross_asset.py +236 -0
  129. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/dark_pool_engine.py +169 -0
  130. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/gex_engine.py +172 -0
  131. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/kelly_engine.py +167 -0
  132. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/options_flow.py +152 -0
  133. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/tape_reader.py +185 -0
  134. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/vol_surface.py +216 -0
  135. algochains_mcp_server-22.4.0/src/algochains_mcp/alpha_engines/vwap_engine.py +143 -0
  136. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/__init__.py +16 -0
  137. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/alt_data_marketplace.py +49 -0
  138. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/satellite_engine.py +40 -0
  139. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/sec_filing_engine.py +58 -0
  140. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/sentiment_engine.py +56 -0
  141. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/social_media_engine.py +53 -0
  142. algochains_mcp_server-22.4.0/src/algochains_mcp/alt_data/web_scraper.py +49 -0
  143. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/__init__.py +1 -0
  144. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/agent_provisioner.py +358 -0
  145. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/api_keys.py +85 -0
  146. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/key_vault.py +354 -0
  147. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/password_reset.py +301 -0
  148. algochains_mcp_server-22.4.0/src/algochains_mcp/auth/supabase_sso.py +132 -0
  149. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/__init__.py +14 -0
  150. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/alpaca_connector.py +202 -0
  151. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/base.py +254 -0
  152. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/credential_vault.py +429 -0
  153. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/crypto_perps.py +387 -0
  154. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/etrade_connector.py +655 -0
  155. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/ibkr_connector.py +194 -0
  156. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/oanda_connector.py +213 -0
  157. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/oauth_manager.py +552 -0
  158. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/prop_fund_autopilot.py +521 -0
  159. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/prop_fund_data_feeder.py +603 -0
  160. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/prop_fund_drawdown_monitor.py +547 -0
  161. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/prop_fund_manager.py +1066 -0
  162. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/quantconnect_connector.py +206 -0
  163. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/registry.py +88 -0
  164. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/rithmic_connector.py +533 -0
  165. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/schwab_connector.py +327 -0
  166. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/traderspost_connector.py +192 -0
  167. algochains_mcp_server-22.4.0/src/algochains_mcp/brokers/tradovate.py +780 -0
  168. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/__init__.py +18 -0
  169. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/data_warehouse.py +180 -0
  170. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/paper_trading_graduation.py +508 -0
  171. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/signal_tester.py +314 -0
  172. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/strategy_runner.py +250 -0
  173. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/submission_pipeline.py +400 -0
  174. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/__init__.py +1 -0
  175. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/bollinger_breakout.py +160 -0
  176. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/ema_pullback.py +129 -0
  177. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/registry.py +116 -0
  178. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/rsi_mean_reversion.py +121 -0
  179. algochains_mcp_server-22.4.0/src/algochains_mcp/builder_sdk/templates/sma_crossover.py +111 -0
  180. algochains_mcp_server-22.4.0/src/algochains_mcp/byok/__init__.py +1 -0
  181. algochains_mcp_server-22.4.0/src/algochains_mcp/byok/key_orchestrator.py +696 -0
  182. algochains_mcp_server-22.4.0/src/algochains_mcp/byok/provider_registry.py +299 -0
  183. algochains_mcp_server-22.4.0/src/algochains_mcp/cli_contract.py +29 -0
  184. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/__init__.py +14 -0
  185. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/api_gateway.py +80 -0
  186. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/billing_engine.py +552 -0
  187. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/strategy_marketplace.py +143 -0
  188. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/tenant_manager.py +235 -0
  189. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/tenant_middleware.py +386 -0
  190. algochains_mcp_server-22.4.0/src/algochains_mcp/cloud_saas/white_label_engine.py +99 -0
  191. algochains_mcp_server-22.4.0/src/algochains_mcp/community_signals/__init__.py +5 -0
  192. algochains_mcp_server-22.4.0/src/algochains_mcp/community_signals/engine.py +101 -0
  193. algochains_mcp_server-22.4.0/src/algochains_mcp/compliance/__init__.py +3 -0
  194. algochains_mcp_server-22.4.0/src/algochains_mcp/compliance/engine.py +270 -0
  195. algochains_mcp_server-22.4.0/src/algochains_mcp/config.py +210 -0
  196. algochains_mcp_server-22.4.0/src/algochains_mcp/dashboard/__init__.py +6 -0
  197. algochains_mcp_server-22.4.0/src/algochains_mcp/dashboard/live_dashboard.py +349 -0
  198. algochains_mcp_server-22.4.0/src/algochains_mcp/data_ingestion.py +593 -0
  199. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/__init__.py +22 -0
  200. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/alpha_vantage_provider.py +141 -0
  201. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/base.py +189 -0
  202. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/finnhub_provider.py +131 -0
  203. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/massive_whitelabel.py +877 -0
  204. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/polygon_provider.py +131 -0
  205. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/registry.py +89 -0
  206. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/twelve_data_provider.py +110 -0
  207. algochains_mcp_server-22.4.0/src/algochains_mcp/data_providers/yahoo_provider.py +117 -0
  208. algochains_mcp_server-22.4.0/src/algochains_mcp/datasets/__init__.py +1 -0
  209. algochains_mcp_server-22.4.0/src/algochains_mcp/datasets/builder.py +717 -0
  210. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/__init__.py +16 -0
  211. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/bridge_engine.py +62 -0
  212. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/defi_risk_engine.py +68 -0
  213. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/dex_aggregator.py +109 -0
  214. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/governance_engine.py +48 -0
  215. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/mev_protector.py +53 -0
  216. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/staking.py +363 -0
  217. algochains_mcp_server-22.4.0/src/algochains_mcp/defi_engine/yield_optimizer.py +59 -0
  218. algochains_mcp_server-22.4.0/src/algochains_mcp/developer_auth.py +149 -0
  219. algochains_mcp_server-22.4.0/src/algochains_mcp/developer_rate_limiter.py +204 -0
  220. algochains_mcp_server-22.4.0/src/algochains_mcp/developer_tools.py +158 -0
  221. algochains_mcp_server-22.4.0/src/algochains_mcp/dynamic_toolsets/__init__.py +15 -0
  222. algochains_mcp_server-22.4.0/src/algochains_mcp/dynamic_toolsets/gateway.py +363 -0
  223. algochains_mcp_server-22.4.0/src/algochains_mcp/errors.py +181 -0
  224. algochains_mcp_server-22.4.0/src/algochains_mcp/evolution/__init__.py +23 -0
  225. algochains_mcp_server-22.4.0/src/algochains_mcp/evolution/evolution_daemon.py +382 -0
  226. algochains_mcp_server-22.4.0/src/algochains_mcp/evolution/lessons_injector.py +162 -0
  227. algochains_mcp_server-22.4.0/src/algochains_mcp/evolution/reward_model.py +232 -0
  228. algochains_mcp_server-22.4.0/src/algochains_mcp/evolution/trade_memory.py +323 -0
  229. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/__init__.py +16 -0
  230. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/algo_executor.py +60 -0
  231. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/dca_engine.py +325 -0
  232. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/fix_gateway.py +55 -0
  233. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/order_manager.py +81 -0
  234. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/smart_order_router.py +55 -0
  235. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/tca_engine.py +78 -0
  236. algochains_mcp_server-22.4.0/src/algochains_mcp/execution_engine/venue_manager.py +65 -0
  237. algochains_mcp_server-22.4.0/src/algochains_mcp/graphiti_intelligence/__init__.py +17 -0
  238. algochains_mcp_server-22.4.0/src/algochains_mcp/graphiti_intelligence/client.py +128 -0
  239. algochains_mcp_server-22.4.0/src/algochains_mcp/http_bridge.py +1106 -0
  240. algochains_mcp_server-22.4.0/src/algochains_mcp/http_transport.py +361 -0
  241. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/__init__.py +41 -0
  242. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/arbitrage_detector.py +228 -0
  243. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/constraint_solver.py +434 -0
  244. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/intent_parser.py +286 -0
  245. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/plan_executor.py +147 -0
  246. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/predictive_prefetch.py +166 -0
  247. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/regime_detector.py +307 -0
  248. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/shadow_portfolio.py +300 -0
  249. algochains_mcp_server-22.4.0/src/algochains_mcp/intent_engine/strategy_evolution.py +308 -0
  250. algochains_mcp_server-22.4.0/src/algochains_mcp/learning_signals.py +328 -0
  251. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/__init__.py +50 -0
  252. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/academic_registry.py +369 -0
  253. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/bot_ops.py +533 -0
  254. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/heartbeat.py +140 -0
  255. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/metrics_parser.py +396 -0
  256. algochains_mcp_server-22.4.0/src/algochains_mcp/live_bot_intelligence/multi_account_metrics.py +500 -0
  257. algochains_mcp_server-22.4.0/src/algochains_mcp/marketplace/__init__.py +1 -0
  258. algochains_mcp_server-22.4.0/src/algochains_mcp/marketplace/bridge.py +192 -0
  259. algochains_mcp_server-22.4.0/src/algochains_mcp/marketplace/supabase_tools.py +387 -0
  260. algochains_mcp_server-22.4.0/src/algochains_mcp/marketplace/validator.py +250 -0
  261. algochains_mcp_server-22.4.0/src/algochains_mcp/memory_safety.py +251 -0
  262. algochains_mcp_server-22.4.0/src/algochains_mcp/middleware.py +471 -0
  263. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/__init__.py +16 -0
  264. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/feature_engine.py +70 -0
  265. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/gpu_dispatcher.py +116 -0
  266. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/llm_strategy_gen.py +55 -0
  267. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/model_registry.py +93 -0
  268. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/model_trainer.py +91 -0
  269. algochains_mcp_server-22.4.0/src/algochains_mcp/ml_engine/rl_agent.py +77 -0
  270. algochains_mcp_server-22.4.0/src/algochains_mcp/multi_tenant/__init__.py +3 -0
  271. algochains_mcp_server-22.4.0/src/algochains_mcp/multi_tenant/engine.py +175 -0
  272. algochains_mcp_server-22.4.0/src/algochains_mcp/notifications/__init__.py +1 -0
  273. algochains_mcp_server-22.4.0/src/algochains_mcp/notifications/ntfy_push.py +240 -0
  274. algochains_mcp_server-22.4.0/src/algochains_mcp/notifications/push.py +336 -0
  275. algochains_mcp_server-22.4.0/src/algochains_mcp/onboarding.py +845 -0
  276. algochains_mcp_server-22.4.0/src/algochains_mcp/onyx_intelligence/__init__.py +35 -0
  277. algochains_mcp_server-22.4.0/src/algochains_mcp/onyx_intelligence/onyx_client.py +292 -0
  278. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/__init__.py +12 -0
  279. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/cumulative_delta.py +264 -0
  280. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/dark_pool_volume.py +374 -0
  281. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/earnings_catalyst.py +377 -0
  282. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/footprint.py +237 -0
  283. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_ai_ensemble.py +461 -0
  284. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_category_scorer.py +238 -0
  285. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_events_scanner.py +280 -0
  286. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_pipeline.py +408 -0
  287. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_safe_compounder.py +305 -0
  288. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_signed.py +314 -0
  289. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_slack_notifier.py +277 -0
  290. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_stat_arb.py +257 -0
  291. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_strategy_engine.py +704 -0
  292. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/kalshi_websocket.py +287 -0
  293. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/macro_signals.py +391 -0
  294. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/prediction_markets.py +907 -0
  295. algochains_mcp_server-22.4.0/src/algochains_mcp/order_flow/volume_profile.py +266 -0
  296. algochains_mcp_server-22.4.0/src/algochains_mcp/otel_tracing.py +191 -0
  297. algochains_mcp_server-22.4.0/src/algochains_mcp/paths.py +120 -0
  298. algochains_mcp_server-22.4.0/src/algochains_mcp/performance_reports.py +273 -0
  299. algochains_mcp_server-22.4.0/src/algochains_mcp/platform_analytics.py +302 -0
  300. algochains_mcp_server-22.4.0/src/algochains_mcp/portfolio/__init__.py +1 -0
  301. algochains_mcp_server-22.4.0/src/algochains_mcp/portfolio/optimizer.py +274 -0
  302. algochains_mcp_server-22.4.0/src/algochains_mcp/prediction_market_metrics.py +108 -0
  303. algochains_mcp_server-22.4.0/src/algochains_mcp/quant_alpha/__init__.py +16 -0
  304. algochains_mcp_server-22.4.0/src/algochains_mcp/quant_alpha/factor_model.py +263 -0
  305. algochains_mcp_server-22.4.0/src/algochains_mcp/quant_alpha/regime_hmm.py +253 -0
  306. algochains_mcp_server-22.4.0/src/algochains_mcp/quant_alpha/volatility_surface.py +306 -0
  307. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/__init__.py +14 -0
  308. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/alert_engine.py +58 -0
  309. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/microstructure.py +211 -0
  310. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/order_flow_analyzer.py +230 -0
  311. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/pnl_streamer.py +47 -0
  312. algochains_mcp_server-22.4.0/src/algochains_mcp/realtime_analytics/regime_detector.py +252 -0
  313. algochains_mcp_server-22.4.0/src/algochains_mcp/risk_dashboard/__init__.py +3 -0
  314. algochains_mcp_server-22.4.0/src/algochains_mcp/risk_dashboard/engine.py +174 -0
  315. algochains_mcp_server-22.4.0/src/algochains_mcp/security/__init__.py +0 -0
  316. algochains_mcp_server-22.4.0/src/algochains_mcp/security/guardrail.py +232 -0
  317. algochains_mcp_server-22.4.0/src/algochains_mcp/security/per_tool_rate_limiter.py +172 -0
  318. algochains_mcp_server-22.4.0/src/algochains_mcp/security/replay_guard.py +222 -0
  319. algochains_mcp_server-22.4.0/src/algochains_mcp/server.py +11275 -0
  320. algochains_mcp_server-22.4.0/src/algochains_mcp/skills_registry.py +375 -0
  321. algochains_mcp_server-22.4.0/src/algochains_mcp/social_trading/__init__.py +5 -0
  322. algochains_mcp_server-22.4.0/src/algochains_mcp/social_trading/copy_engine.py +322 -0
  323. algochains_mcp_server-22.4.0/src/algochains_mcp/social_trading/engine.py +257 -0
  324. algochains_mcp_server-22.4.0/src/algochains_mcp/spec_compliance/__init__.py +14 -0
  325. algochains_mcp_server-22.4.0/src/algochains_mcp/spec_compliance/elicitation.py +239 -0
  326. algochains_mcp_server-22.4.0/src/algochains_mcp/spec_compliance/subscriptions.py +241 -0
  327. algochains_mcp_server-22.4.0/src/algochains_mcp/spec_compliance/tasks.py +275 -0
  328. algochains_mcp_server-22.4.0/src/algochains_mcp/sse_server.py +567 -0
  329. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/__init__.py +18 -0
  330. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/backtest_runner.py +181 -0
  331. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/deployer.py +157 -0
  332. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/optimizer.py +186 -0
  333. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/spec.py +224 -0
  334. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/template_manager.py +296 -0
  335. algochains_mcp_server-22.4.0/src/algochains_mcp/strategy_builder/walk_forward.py +211 -0
  336. algochains_mcp_server-22.4.0/src/algochains_mcp/streaming/__init__.py +1 -0
  337. algochains_mcp_server-22.4.0/src/algochains_mcp/streaming/alert_engine.py +326 -0
  338. algochains_mcp_server-22.4.0/src/algochains_mcp/streaming/earnings_calendar.py +343 -0
  339. algochains_mcp_server-22.4.0/src/algochains_mcp/streaming/manager.py +161 -0
  340. algochains_mcp_server-22.4.0/src/algochains_mcp/subscriber_auth.py +151 -0
  341. algochains_mcp_server-22.4.0/src/algochains_mcp/subscriber_tools.py +381 -0
  342. algochains_mcp_server-22.4.0/src/algochains_mcp/support_tickets.py +486 -0
  343. algochains_mcp_server-22.4.0/src/algochains_mcp/telos.py +216 -0
  344. algochains_mcp_server-22.4.0/src/algochains_mcp/tool_danger_tiers.py +487 -0
  345. algochains_mcp_server-22.4.0/src/algochains_mcp/tool_manifest.py +232 -0
  346. algochains_mcp_server-22.4.0/src/algochains_mcp/tool_policy.py +350 -0
  347. algochains_mcp_server-22.4.0/src/algochains_mcp/tools/__init__.py +1 -0
  348. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/__init__.py +1 -0
  349. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/__init__.py +35 -0
  350. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/config.py +154 -0
  351. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/download.py +192 -0
  352. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/era_utils.py +160 -0
  353. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/model_zoo.py +310 -0
  354. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/monitoring.py +266 -0
  355. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/neutralize.py +159 -0
  356. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/run_pipeline.py +341 -0
  357. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/submit.py +207 -0
  358. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/train.py +226 -0
  359. algochains_mcp_server-22.4.0/src/algochains_mcp/tournament/numerai/validate.py +145 -0
  360. algochains_mcp_server-22.4.0/src/algochains_mcp/trade_propagation.py +271 -0
  361. algochains_mcp_server-22.4.0/src/algochains_mcp/trading_guardrails.py +667 -0
  362. algochains_mcp_server-22.4.0/src/algochains_mcp/us_economics.py +463 -0
  363. algochains_mcp_server-22.4.0/src/algochains_mcp/verification.py +427 -0
  364. algochains_mcp_server-22.4.0/src/algochains_mcp/volatility_targeting.py +386 -0
  365. algochains_mcp_server-22.4.0/src/algochains_mcp/waitlist.py +347 -0
  366. algochains_mcp_server-22.4.0/src/cli/package.json +36 -0
  367. algochains_mcp_server-22.4.0/src/cli/src/auth.ts +207 -0
  368. algochains_mcp_server-22.4.0/src/cli/src/commands/auth_cmd.ts +158 -0
  369. algochains_mcp_server-22.4.0/src/cli/src/commands/completion.ts +332 -0
  370. algochains_mcp_server-22.4.0/src/cli/src/commands/daemon.ts +301 -0
  371. algochains_mcp_server-22.4.0/src/cli/src/commands/doctor.ts +340 -0
  372. algochains_mcp_server-22.4.0/src/cli/src/commands/killswitch.ts +59 -0
  373. algochains_mcp_server-22.4.0/src/cli/src/config.ts +186 -0
  374. algochains_mcp_server-22.4.0/src/cli/src/index.ts +342 -0
  375. algochains_mcp_server-22.4.0/src/cli/src/mcp_client.ts +74 -0
  376. algochains_mcp_server-22.4.0/src/cli/src/plugins/manager.ts +199 -0
  377. algochains_mcp_server-22.4.0/src/cli/src/repl/App.tsx +391 -0
  378. algochains_mcp_server-22.4.0/src/cli/src/triggers/manager.ts +208 -0
  379. algochains_mcp_server-22.4.0/src/cli/src/trust.ts +197 -0
  380. algochains_mcp_server-22.4.0/src/cli/tsconfig.json +16 -0
  381. algochains_mcp_server-22.4.0/src/stripe_app/server.py +179 -0
  382. algochains_mcp_server-22.4.0/state/guardrails_state.json +26 -0
  383. algochains_mcp_server-22.4.0/state/guardrails_state.json.bak.20260511_173139 +26 -0
  384. algochains_mcp_server-22.4.0/state/onboarding_state.json +12 -0
  385. algochains_mcp_server-22.4.0/supabase/.gitignore +8 -0
  386. algochains_mcp_server-22.4.0/supabase/config.toml +411 -0
  387. algochains_mcp_server-22.4.0/supabase/functions/_shared/waitlist_notify.ts +411 -0
  388. algochains_mcp_server-22.4.0/supabase/functions/_shared/waitlist_notify_test.ts +222 -0
  389. algochains_mcp_server-22.4.0/supabase/functions/waitlist-slack-notify/README.md +95 -0
  390. algochains_mcp_server-22.4.0/supabase/functions/waitlist-slack-notify/index.ts +3 -0
  391. algochains_mcp_server-22.4.0/supabase/migrations/20260406_platform_tables.sql +248 -0
  392. algochains_mcp_server-22.4.0/supabase/migrations/20260409_owner_bot_live_view.sql +54 -0
  393. algochains_mcp_server-22.4.0/supabase/migrations/20260512061320_waitlist_slack_constraints.sql +0 -0
  394. algochains_mcp_server-22.4.0/supabase/migrations/20260512061500_waitlist_slack_constraints.sql +24 -0
  395. algochains_mcp_server-22.4.0/supabase/migrations/20260512063500_waitlist_slack_webhook_triggers.sql +80 -0
  396. algochains_mcp_server-22.4.0/supabase/migrations/20260522_payment_tables.sql +310 -0
  397. algochains_mcp_server-22.4.0/tests/__init__.py +1 -0
  398. algochains_mcp_server-22.4.0/tests/conftest.py +210 -0
  399. algochains_mcp_server-22.4.0/tests/live/test_live_audit.py +104 -0
  400. algochains_mcp_server-22.4.0/tests/numerai/__init__.py +1 -0
  401. algochains_mcp_server-22.4.0/tests/numerai/conftest.py +124 -0
  402. algochains_mcp_server-22.4.0/tests/numerai/test_era_utils.py +126 -0
  403. algochains_mcp_server-22.4.0/tests/numerai/test_mcp_tools.py +156 -0
  404. algochains_mcp_server-22.4.0/tests/numerai/test_neutralize.py +118 -0
  405. algochains_mcp_server-22.4.0/tests/numerai/test_submit_validation.py +182 -0
  406. algochains_mcp_server-22.4.0/tests/test_account_protection.py +195 -0
  407. algochains_mcp_server-22.4.0/tests/test_bot_health_signal_slice.py +240 -0
  408. algochains_mcp_server-22.4.0/tests/test_bot_health_v22_extensions.py +278 -0
  409. algochains_mcp_server-22.4.0/tests/test_bridge.py +106 -0
  410. algochains_mcp_server-22.4.0/tests/test_builder_sdk.py +158 -0
  411. algochains_mcp_server-22.4.0/tests/test_developer_auth.py +135 -0
  412. algochains_mcp_server-22.4.0/tests/test_developer_rate_limiter.py +113 -0
  413. algochains_mcp_server-22.4.0/tests/test_developer_tools.py +81 -0
  414. algochains_mcp_server-22.4.0/tests/test_dynamic_dispatch_safety.py +269 -0
  415. algochains_mcp_server-22.4.0/tests/test_errors.py +94 -0
  416. algochains_mcp_server-22.4.0/tests/test_hidden_killer_mcp_parity.py +38 -0
  417. algochains_mcp_server-22.4.0/tests/test_http_bridge_auth.py +239 -0
  418. algochains_mcp_server-22.4.0/tests/test_http_bridge_developer_auth.py +168 -0
  419. algochains_mcp_server-22.4.0/tests/test_http_bridge_scope.py +298 -0
  420. algochains_mcp_server-22.4.0/tests/test_latency_payload.py +147 -0
  421. algochains_mcp_server-22.4.0/tests/test_live_audit.py +154 -0
  422. algochains_mcp_server-22.4.0/tests/test_memory_safety.py +77 -0
  423. algochains_mcp_server-22.4.0/tests/test_middleware.py +161 -0
  424. algochains_mcp_server-22.4.0/tests/test_quant_regime_state.py +160 -0
  425. algochains_mcp_server-22.4.0/tests/test_tool_danger_contract.py +148 -0
  426. algochains_mcp_server-22.4.0/tests/test_tool_manifest.py +79 -0
  427. algochains_mcp_server-22.4.0/tests/test_tool_policy.py +124 -0
  428. algochains_mcp_server-22.4.0/tests/test_tool_registration.py +229 -0
  429. algochains_mcp_server-22.4.0/tests/test_traceability_contract.py +116 -0
  430. algochains_mcp_server-22.4.0/tests/test_tradovate_governance.py +132 -0
  431. algochains_mcp_server-22.4.0/tests/test_v10_v16_modules.py +1110 -0
  432. algochains_mcp_server-22.4.0/tests/test_v8_v9_modules.py +440 -0
  433. algochains_mcp_server-22.4.0/tests/test_validator.py +140 -0
  434. algochains_mcp_server-22.4.0/tests/test_waitlist_env.py +16 -0
@@ -0,0 +1,245 @@
1
+ # ═══════════════════════════════════════════════════════════════
2
+ # AlgoChains MCP Server v20 — Environment Configuration
3
+ # Copy to .env and fill in your credentials
4
+ # Run "python scripts/startup_health_check.py" to verify setup
5
+ #
6
+ # Tier structure:
7
+ # Free → Yahoo Finance data, backtest templates
8
+ # $49/mo → Polygon, Alpha Vantage, full strategy builder
9
+ # $199/mo → Builder SDK, Supabase data warehouse, marketplace submission
10
+ # $499/mo → Institutional execution, FIX gateway, white-label
11
+ # ═══════════════════════════════════════════════════════════════
12
+
13
+ # ── AlgoChains Platform ─────────────────────────────────────────
14
+ # Get your API key from https://algochains.ai/dashboard
15
+ ALGOCHAINS_API_KEY=
16
+ ALGOCHAINS_DJANGO_URL=https://algochains.ai
17
+
18
+ # ── Builder SDK ($199/mo tier) ───────────────────────────────────
19
+ # Enables: Supabase data warehouse, marketplace submission, paper trading monitor
20
+ # Get from: https://algochains.ai/dashboard/builder
21
+ ALGOCHAINS_BUILDER_KEY=
22
+
23
+ # ── Signal HMAC Security (Django trade propagation — Roo architecture) ──
24
+ # REQUIRED for paper trading and live mode signal propagation.
25
+ # Minimum 32 characters. Generate with: python3 -c "import secrets; print(secrets.token_hex(32))"
26
+ # This secret signs every signal so Django can verify authenticity.
27
+ ALGOCHAINS_SIGNAL_SECRET=
28
+ # Full ingest URL (HTTPS). MCP tool: propagate_trade_signal
29
+ ALGOCHAINS_SIGNAL_URL=
30
+ # Legacy aliases (also accepted by trade_propagation.py and examples/trade_propagation/send_signal.py)
31
+ SIGNAL_SECRET=
32
+ SIGNAL_URL=
33
+
34
+ # ── AlgoChains Marketplace API Keys ──────────────────────────────
35
+ # For publishing and updating strategy listings.
36
+ LISTING_API_KEY=
37
+ METRICS_INGEST_API_KEY=
38
+ # CI / production: require both keys in startup_health_check.py
39
+ # ALGOCHAINS_MARKETPLACE_STRICT=1
40
+ # Local dev only (disables fail-fast in MarketplaceBridge — do not use in prod):
41
+ # ALGOCHAINS_SKIP_MARKETPLACE_KEY_CHECK=1
42
+
43
+ # ── Supabase (Marketplace DB + Platform Tables) ───────────────────
44
+ # Main project: trkpzsnwjtmvgppuzlwu (marketplace listings, subscriptions)
45
+ SUPABASE_URL=
46
+ SUPABASE_ANON_KEY=
47
+ SUPABASE_SERVICE_KEY= # Service role key for server-side writes (tickets, oauth tokens, analytics)
48
+ SUPABASE_SERVICE_ROLE_KEY= # Alias used by waitlist.py; set to the same value as SUPABASE_SERVICE_KEY
49
+ SUPABASE_RESET_REDIRECT_URL=https://algochains.ai/auth/reset-password
50
+
51
+ # ── Email (Resend) ────────────────────────────────────────────────
52
+ # https://resend.com — used for support tickets, waitlist, verification codes
53
+ RESEND_API_KEY=
54
+ SUPPORT_FROM_EMAIL=support@algochains.ai
55
+ WAITLIST_FROM_EMAIL=waitlist@algochains.ai
56
+ VERIFICATION_FROM_EMAIL=noreply@algochains.ai
57
+ SUPPORT_EMAIL=support@algochains.ai
58
+
59
+ # ── SMS (Twilio) — optional, enables SMS verification codes ───────
60
+ # https://console.twilio.com
61
+ TWILIO_ACCOUNT_SID=
62
+ TWILIO_AUTH_TOKEN=
63
+ TWILIO_FROM_NUMBER= # E.164 format: +15551234567
64
+
65
+ # ── Notion Integration — optional, syncs support tickets ─────────
66
+ NOTION_API_KEY=
67
+ NOTION_SUPPORT_DB_ID= # Notion database ID for support tickets
68
+
69
+ # ── Charles Schwab (TD Ameritrade successor) ──────────────────────
70
+ # https://developer.schwab.com/products/trader-api--individual-
71
+ SCHWAB_CLIENT_ID=
72
+ SCHWAB_CLIENT_SECRET=
73
+ SCHWAB_ACCESS_TOKEN= # Set after completing OAuth flow
74
+ SCHWAB_ACCOUNT_HASH= # Auto-populated on first connect
75
+ SCHWAB_PAPER=false
76
+
77
+ # ── Kalshi (prediction markets — RSA signed REST) ────────────────
78
+ # https://docs.kalshi.com/getting_started/api_keys
79
+ KALSHI_ACCESS_KEY=
80
+ KALSHI_PRIVATE_KEY_PATH= # Path to PEM private key (chmod 600)
81
+ # Or inline PEM for containers (avoid in production):
82
+ # KALSHI_PRIVATE_KEY_PEM=
83
+ # Production default: https://api.elections.kalshi.com — override for demo:
84
+ # KALSHI_API_HOST=https://demo-api.kalshi.co
85
+
86
+ # ── Polymarket CLOB (optional — for authenticated trading only) ───
87
+ POLYMARKET_API_KEY=
88
+ POLYMARKET_API_SECRET=
89
+ POLYMARKET_PASSPHRASE=
90
+
91
+ # ── OAuth General Settings ────────────────────────────────────────
92
+ ALGOCHAINS_OAUTH_REDIRECT_URI=https://algochains.ai/oauth/callback
93
+
94
+ # ── HTTP Transport Security ───────────────────────────────────────
95
+ # Bearer token for the HTTP/SSE transport (algochains-mcp-http).
96
+ # Set this to secure remote agent connections.
97
+ # Generate with: python3 -c "import secrets; print(secrets.token_hex(32))"
98
+ ALGOCHAINS_HTTP_TRANSPORT_SECRET=
99
+ # Allowed CORS origins for HTTP transport (comma-separated, * = all)
100
+ ALGOCHAINS_HTTP_CORS_ORIGINS=*
101
+
102
+ # ── Account Protection Preset ────────────────────────────────────
103
+ # Options: conservative | moderate | aggressive
104
+ # conservative: VIX>25 kill, daily loss $200, drawdown 8%
105
+ # moderate: VIX>35 kill, daily loss $500, drawdown 15% ← recommended
106
+ # aggressive: VIX>45 kill, daily loss $2000, drawdown 25%
107
+ ALGOCHAINS_PROTECTION_PRESET=moderate
108
+
109
+ # ═══════════════════════════════════════════════════════════════
110
+ # BROKERS — Fill in at least one for live trading
111
+ # ═══════════════════════════════════════════════════════════════
112
+
113
+ # ── Tradovate (Futures — MNQ, CL, MES, NQ, ES) ────────────────
114
+ TRADOVATE_USERNAME=
115
+ TRADOVATE_PASSWORD=
116
+ TRADOVATE_APP_ID=
117
+ TRADOVATE_CID=
118
+ TRADOVATE_SECRET=
119
+ TRADOVATE_DEVICE_ID=
120
+ # Environment: demo | live
121
+ TRADOVATE_ENVIRONMENT=demo
122
+
123
+ # ── Alpaca (Equities — stocks, ETFs) ─────────────────────────
124
+ ALPACA_API_KEY=
125
+ ALPACA_SECRET_KEY=
126
+ # https://paper-api.alpaca.markets (paper) | https://api.alpaca.markets (live)
127
+ ALPACA_BASE_URL=https://paper-api.alpaca.markets
128
+
129
+ # ── Interactive Brokers (TWS must be running) ────────────────
130
+ IBKR_HOST=127.0.0.1
131
+ IBKR_PORT=7497
132
+ IBKR_CLIENT_ID=1
133
+
134
+ # ── OANDA (Forex) ────────────────────────────────────────────
135
+ OANDA_ACCOUNT_ID=
136
+ OANDA_ACCESS_TOKEN=
137
+ # practice | live
138
+ OANDA_ENVIRONMENT=practice
139
+
140
+ # ── TradersPost.io (Webhook Meta-Router) ─────────────────────
141
+ # Routes signals to: Schwab, Robinhood, Tastytrade, TradeStation,
142
+ # Tradier, Coinbase, Kraken, Bitget, ByBit
143
+ TRADERSPOST_WEBHOOK_URL=
144
+ TRADERSPOST_API_KEY=
145
+
146
+ # ── QuantConnect (LEAN Algorithm Platform) ───────────────────
147
+ QUANTCONNECT_USER_ID=
148
+ QUANTCONNECT_API_TOKEN=
149
+
150
+ # ═══════════════════════════════════════════════════════════════
151
+ # DATA PROVIDERS — Pick any you want (Yahoo Finance = free, no key)
152
+ # ═══════════════════════════════════════════════════════════════
153
+
154
+ # ── Polygon.io (Stocks, Options, Forex, Crypto) ─────────────────
155
+ # Free: 5/min | $29/mo: unlimited | https://polygon.io
156
+ POLYGON_API_KEY=
157
+
158
+ # ── Alpha Vantage (Stocks, Forex, Crypto, 110+ technicals) ─────
159
+ # Free: 25/day | $49.99/mo: 75/min | https://alphavantage.co
160
+ ALPHA_VANTAGE_API_KEY=
161
+
162
+ # ── Finnhub (Quotes, news, earnings, insider trades, SEC) ───────
163
+ # Free: 60/min | $49/mo: 300/min | https://finnhub.io
164
+ FINNHUB_API_KEY=
165
+
166
+ # ── Twelve Data (800+ exchanges, stocks/forex/crypto) ───────────
167
+ # Free: 800 credits/day | $29/mo | https://twelvedata.com
168
+ TWELVE_DATA_API_KEY=
169
+
170
+ # ── Databento (Tick Data / L2 Book — institutional) ─────────────
171
+ # Professional-grade tick data, L2 order book, futures
172
+ # No free tier | https://databento.com
173
+ DATABENTO_API_KEY=
174
+
175
+ # ── Unusual Whales (Options Flow / Dark Pool) ────────────────────
176
+ # Options flow, dark pool prints, GEX, DIX
177
+ # $57/mo | https://unusualwhales.com
178
+ UNUSUAL_WHALES_API_KEY=
179
+
180
+ # ── Intrinio (Fundamentals / Options Data) ───────────────────────
181
+ # Company fundamentals, options chains, institutional holdings
182
+ # Free trial | https://intrinio.com
183
+ INTRINIO_API_KEY=
184
+
185
+ # ── Nasdaq Data Link / Quandl (Economic / Macro) ────────────────
186
+ QUANDL_API_KEY=
187
+
188
+ # ── OpenBB (Aggregated Multi-Source) ─────────────────────────────
189
+ OPENBB_PAT=
190
+
191
+ # ═══════════════════════════════════════════════════════════════
192
+ # NOTIFICATIONS (Optional — get alerts on your phone/Slack)
193
+ # ═══════════════════════════════════════════════════════════════
194
+
195
+ # ── Slack ──────────────────────────────────────────────────────
196
+ SLACK_BOT_TOKEN=
197
+ SLACK_CHANNEL_ID=C0A075W6D4H
198
+ WAITLIST_NOTIFY_SECRET= # Generate with: python3 -c "import secrets; print(secrets.token_hex(24))"
199
+ SLACK_WEBHOOK_URL=
200
+ # For signal routing alerts to #tradovate-futures-bot-changelog
201
+ SLACK_CHANNEL_SIGNAL_ALERTS=#tradovate-futures-bot-changelog
202
+
203
+ # ── Discord ────────────────────────────────────────────────────
204
+ DISCORD_WEBHOOK_URL=
205
+
206
+ # ── Telegram ───────────────────────────────────────────────────
207
+ TELEGRAM_BOT_TOKEN=
208
+ TELEGRAM_CHAT_ID=
209
+
210
+ # ── Firebase Cloud Messaging (Mobile Push) ─────────────────────
211
+ FCM_SERVER_KEY=
212
+
213
+ # ── Email (SendGrid / Resend) ──────────────────────────────────
214
+ EMAIL_API_KEY=
215
+
216
+ # ═══════════════════════════════════════════════════════════════
217
+ # ADVANCED — Only needed for institutional/V14+ features
218
+ # ═══════════════════════════════════════════════════════════════
219
+
220
+ # ── OpenAI (LLM Strategy Generator, Intent Engine) ─────────────
221
+ OPENAI_API_KEY=
222
+
223
+ # ── Anthropic (Claude for strategy analysis) ───────────────────
224
+ ANTHROPIC_API_KEY=
225
+
226
+ # ── Onyx Knowledge Base ─────────────────────────────────────────
227
+ # Self-hosted RAG over AlgoChains docs, strategies, Slack archives
228
+ ONYX_API_KEY=
229
+ ONYX_API_URL=http://100.89.114.31:8080
230
+
231
+ # ── PostgreSQL (Moltbook debate engine) ─────────────────────────
232
+ MOLTBOOK_DB_URL=postgresql://algochains:@127.0.0.1:5434/moltbook
233
+
234
+ # ── Redis ────────────────────────────────────────────────────────
235
+ REDIS_URL=redis://127.0.0.1:6380
236
+
237
+ # ── AWS (S3 tick data backup) ────────────────────────────────────
238
+ AWS_ACCESS_KEY_ID=
239
+ AWS_SECRET_ACCESS_KEY=
240
+ AWS_REGION=us-east-1
241
+
242
+ # ── BYOK Tool Mode ───────────────────────────────────────────────
243
+ # smart (default) = 25 Tier-1 tools exposed
244
+ # full = all 275+ tools exposed (use with Claude Code, not Cursor)
245
+ ALGOCHAINS_TOOL_MODE=smart
@@ -0,0 +1,7 @@
1
+ # Enforce LF for shell scripts + hooks: CRLF breaks bash ("fi\r" -> unexpected EOF)
2
+ # Root cause: core.autocrlf=true smudging .sh to CRLF on Windows checkouts.
3
+ *.sh text eol=lf
4
+ *.bash text eol=lf
5
+ *.zsh text eol=lf
6
+ hooks/** text eol=lf
7
+ .husky/** text eol=lf
@@ -0,0 +1,266 @@
1
+ name: MCP Tool Regression Gate
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ tool-schema-validation:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v4
9
+ - uses: actions/setup-node@v4
10
+ with:
11
+ node-version: 22
12
+ - uses: actions/setup-python@v5
13
+ with:
14
+ python-version: '3.12'
15
+
16
+ - name: Install AlgoChains MCP + MCPorter
17
+ run: |
18
+ pip install -e ".[dev]"
19
+ npm install -g mcporter
20
+
21
+ - name: Configure MCPorter
22
+ run: |
23
+ mkdir -p config
24
+ cat > config/mcporter.json << 'EOF'
25
+ {
26
+ "mcpServers": {
27
+ "algochains": {
28
+ "command": "algochains-mcp",
29
+ "env": {
30
+ "ALGOCHAINS_TOOL_MODE": "full"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ EOF
36
+
37
+ # Gate 1: Tool count must not decrease.
38
+ # Floor is conservatively below the current ground-truth (476 full, 150 smart).
39
+ # Bump both together when intentionally adding or removing tool families.
40
+ - name: "Gate 1: Full-Mode Tool Count (≥460)"
41
+ run: |
42
+ TOOLS=$(npx mcporter list algochains --json | jq '.tools | length')
43
+ echo "Tool count (full mode): $TOOLS"
44
+ [ "$TOOLS" -ge 460 ] || (echo "❌ FAIL: Expected ≥460 full-mode tools, got $TOOLS" && exit 1)
45
+ echo "✅ Full-mode tool count: $TOOLS"
46
+
47
+ # Gate 1b: Smart-mode Tier-1 count must stay in band.
48
+ - name: "Gate 1b: Smart-Mode Tier-1 Count (100–200)"
49
+ run: |
50
+ python3 - << 'PYEOF'
51
+ import sys
52
+ sys.path.insert(0, 'src')
53
+ import algochains_mcp.server as srv
54
+ count = len(srv.TOOLS_TIER1)
55
+ print(f"Smart-mode Tier-1 count: {count}")
56
+ assert 100 <= count <= 200, (
57
+ f"Smart-mode Tier-1 count {count} out of range [100, 200]. "
58
+ "Review TIER1_TOOL_NAMES in server.py."
59
+ )
60
+ print(f"✅ Smart-mode Tier-1 count: {count}")
61
+ PYEOF
62
+
63
+ # Gate 2: All Tier 1 tools must be present in smart mode
64
+ - name: "Gate 2: Tier 1 Tools Present"
65
+ env:
66
+ ALGOCHAINS_TOOL_MODE: smart
67
+ run: |
68
+ TIER1_EXPECTED="discover_tools get_tool_details execute_dynamic_tool massive_search_endpoints massive_call_api massive_query_data massive_run_pipeline get_positions get_account get_orders get_bot_health get_quant_regime_state portfolio_summary connect_broker run_backtest validate_strategy validate_strategy_metrics optimize_strategy browse_strategy_marketplace execute_intent approve_intent create_shadow_portfolio detect_market_regime"
69
+ TOOLS_JSON=$(npx mcporter list algochains --json)
70
+ for tool in $TIER1_EXPECTED; do
71
+ echo "$TOOLS_JSON" | jq -e ".tools[] | select(.name == \"$tool\")" > /dev/null 2>&1 \
72
+ || (echo "❌ Missing Tier 1 tool: $tool" && exit 1)
73
+ done
74
+ echo "✅ All Tier 1 tools present (v22 smart mode)"
75
+
76
+ # Gate 3: BM25 Smart Discovery returns relevant results (Python direct test — no mcporter call needed)
77
+ - name: "Gate 3: Smart Discovery BM25"
78
+ run: |
79
+ python3 - << 'PYEOF'
80
+ import sys
81
+ sys.path.insert(0, 'src')
82
+ from algochains_mcp.dynamic_toolsets.gateway import DynamicToolsetGateway
83
+ from algochains_mcp.server import TOOLS
84
+
85
+ gw = DynamicToolsetGateway()
86
+ gw.register_tools_from_list(
87
+ [{"name": t.name, "description": t.description, "inputSchema": t.inputSchema}
88
+ for t in TOOLS],
89
+ category="core", version="v20"
90
+ )
91
+ gw.build_index()
92
+
93
+ # Test 1: sentiment query
94
+ results = gw.discover("sentiment analysis", top_k=10)
95
+ sentiment_hits = [r for r in results if "sentiment" in r["name"].lower()]
96
+ assert sentiment_hits, f"BM25 'sentiment analysis' returned no sentiment tools. Got: {[r['name'] for r in results]}"
97
+ print(f"✅ BM25 sentiment: {[r['name'] for r in sentiment_hits]}")
98
+
99
+ # Test 2: portfolio query
100
+ results = gw.discover("portfolio positions", top_k=10)
101
+ portfolio_hits = [r for r in results if "portfolio" in r["name"].lower() or "position" in r["name"].lower()]
102
+ assert portfolio_hits, f"BM25 'portfolio positions' returned no portfolio/position tools. Got: {[r['name'] for r in results]}"
103
+ print(f"✅ BM25 portfolio: {[r['name'] for r in portfolio_hits]}")
104
+
105
+ print("✅ BM25 index returning relevant results")
106
+ PYEOF
107
+
108
+ # Gate 4: V18 Intent Engine tools present and callable
109
+ - name: "Gate 4: V18 Intent Engine Tools"
110
+ run: |
111
+ V18_TOOLS="execute_intent get_intent_plan approve_intent get_intent_history create_shadow_portfolio get_shadow_results evolve_strategies detect_arbitrage detect_market_regime prefetch_context"
112
+ TOOLS_JSON=$(npx mcporter list algochains --json)
113
+ COUNT=0
114
+ for tool in $V18_TOOLS; do
115
+ if echo "$TOOLS_JSON" | jq -e ".tools[] | select(.name == \"$tool\")" > /dev/null 2>&1; then
116
+ COUNT=$((COUNT + 1))
117
+ else
118
+ echo "❌ Missing V18 tool: $tool"
119
+ exit 1
120
+ fi
121
+ done
122
+ echo "✅ All $COUNT V18 Intent Engine + Genius Layer tools present"
123
+
124
+ # Gate 5: detect_market_regime returns valid regime output (Python direct test)
125
+ - name: "Gate 5: V18 Smoke Test"
126
+ run: |
127
+ python3 - << 'PYEOF'
128
+ import sys, asyncio
129
+ sys.path.insert(0, 'src')
130
+ from algochains_mcp.intent_engine.regime_detector import RegimeDetector, RegimeSignals
131
+
132
+ async def run():
133
+ eng = RegimeDetector()
134
+ result = await eng.detect(RegimeSignals())
135
+ data = result.to_dict()
136
+ assert "regime" in data, f"detect_market_regime missing 'regime' key: {data}"
137
+ print(f"✅ V18 detect_market_regime returns valid regime: {data['regime']}")
138
+
139
+ asyncio.run(run())
140
+ PYEOF
141
+
142
+ # Gate 6: Python AST parse (no syntax errors in server.py)
143
+ - name: "Gate 6: Python AST Validation"
144
+ run: |
145
+ python3 -c "
146
+ import ast
147
+ with open('src/algochains_mcp/server.py') as f:
148
+ tree = ast.parse(f.read())
149
+ print('✅ server.py AST parse OK')
150
+ "
151
+ python3 -c "
152
+ import ast, glob
153
+ for f in glob.glob('src/algochains_mcp/intent_engine/*.py'):
154
+ with open(f) as fh:
155
+ ast.parse(fh.read())
156
+ print(f'✅ {f} OK')
157
+ "
158
+
159
+ # Gate 7: Massive white-label provider imports cleanly and the 4 composable
160
+ # tool methods are addressable. When a MASSIVE_API_KEY is available in CI
161
+ # (encrypted secret), build the BM25 index and run a read-only search so we
162
+ # catch upstream `llms.txt` drift before it hits the Tyler account.
163
+ - name: "Gate 7: Massive Provider Import + Optional Mocked API"
164
+ env:
165
+ MASSIVE_API_KEY: ${{ secrets.MASSIVE_API_KEY }}
166
+ run: |
167
+ python3 - << 'PYEOF'
168
+ import asyncio
169
+ import os
170
+ import sys
171
+ sys.path.insert(0, 'src')
172
+
173
+ from algochains_mcp.data_providers.massive_whitelabel import (
174
+ MassiveWhiteLabelProvider,
175
+ )
176
+ from algochains_mcp.config import MassiveConfig
177
+
178
+ required = {"search_endpoints", "get_endpoint_docs", "call_api", "query_data", "startup"}
179
+ missing = [m for m in required if not hasattr(MassiveWhiteLabelProvider, m)]
180
+ assert not missing, f"MassiveWhiteLabelProvider missing methods: {missing}"
181
+ print(f"✅ Massive provider exposes composable tool surface: {sorted(required)}")
182
+
183
+ if not os.environ.get("MASSIVE_API_KEY"):
184
+ print("ℹ️ MASSIVE_API_KEY absent in this CI context — skipping live BM25 smoke")
185
+ sys.exit(0)
186
+
187
+ async def _smoke():
188
+ cfg = MassiveConfig(api_key=os.environ["MASSIVE_API_KEY"])
189
+ prov = MassiveWhiteLabelProvider(cfg)
190
+ await prov.startup()
191
+ hits = prov.search_endpoints(query="aggregates", top_k=3)
192
+ assert isinstance(hits, list) and hits, f"search_endpoints returned nothing: {hits!r}"
193
+ print(f"✅ Massive BM25 returned {len(hits)} hits (top: {hits[0].get('path', '?')})")
194
+
195
+ asyncio.run(_smoke())
196
+ PYEOF
197
+
198
+ # Gate 8: server.py non-empty — catches accidental zeroing
199
+ - name: "Gate 8: server.py Non-Empty"
200
+ run: |
201
+ SIZE=$(wc -c < src/algochains_mcp/server.py)
202
+ echo "server.py size: $SIZE bytes"
203
+ [ "$SIZE" -gt 10000 ] || (echo "❌ FAIL: server.py is only $SIZE bytes — likely accidental deletion" && exit 1)
204
+ echo "✅ server.py size: $SIZE bytes"
205
+
206
+ # Gate 9: Secret scan — no hardcoded API keys in src/ or tests/
207
+ - name: "Gate 9: Secret Scan"
208
+ run: |
209
+ python3 scripts/secret_scan.py --ci
210
+ echo "✅ Secret scan clean"
211
+
212
+ # Gate 10: Docs drift check — README/pyproject must agree on major version
213
+ - name: "Gate 10: Docs Version Drift"
214
+ run: |
215
+ python3 - << 'PYEOF'
216
+ import re
217
+ from pathlib import Path
218
+
219
+ root = Path(".")
220
+ pyproject = (root / "pyproject.toml").read_text()
221
+ readme = (root / "README.md").read_text()
222
+
223
+ # Extract version from pyproject.toml
224
+ m = re.search(r'^version\s*=\s*["\']([^"\']+)["\']', pyproject, re.MULTILINE)
225
+ assert m, "Could not find version in pyproject.toml"
226
+ pyproject_version = m.group(1) # e.g. "22.2.0"
227
+ major = pyproject_version.split(".")[0] # "22"
228
+
229
+ # README should reference same major version in badge or changelog
230
+ assert f"v{major}" in readme or f"version-{major}" in readme.lower() or major in readme, (
231
+ f"README does not reference major version v{major} from pyproject.toml. "
232
+ "Update README badge or changelog header."
233
+ )
234
+ print(f"✅ Version consistency: pyproject={pyproject_version}, README references v{major}")
235
+ PYEOF
236
+
237
+ # Gate 11: algochains.ts description must not say v18 (stale wrapper check)
238
+ - name: "Gate 11: Generated Wrapper Freshness"
239
+ run: |
240
+ python3 - << 'PYEOF'
241
+ from pathlib import Path
242
+ ts = Path("algochains.ts")
243
+ if not ts.exists():
244
+ print("ℹ️ algochains.ts not found — skipping wrapper freshness check")
245
+ import sys; sys.exit(0)
246
+ content = ts.read_text(errors="replace")
247
+ stale_markers = ["v18 ", "v18—", "167+ tools", "167+", "~25 core tools"]
248
+ found = [m for m in stale_markers if m.lower() in content.lower()]
249
+ assert not found, (
250
+ f"algochains.ts contains stale version markers: {found}. "
251
+ "Run: npx mcporter generate algochains --out algochains.ts to regenerate."
252
+ )
253
+ print("✅ algochains.ts has no stale v18/167+ markers")
254
+ PYEOF
255
+
256
+ # Gate 12: No zero-byte non-init source files
257
+ - name: "Gate 12: No Zero-Byte Source Files"
258
+ run: |
259
+ # __init__.py files may be intentionally empty as package markers
260
+ ZEROED=$(find src/algochains_mcp -name "*.py" ! -name "__init__.py" -empty 2>/dev/null | head -20)
261
+ if [ -n "$ZEROED" ]; then
262
+ echo "❌ Zero-byte source files detected (excluding __init__.py):"
263
+ echo "$ZEROED"
264
+ exit 1
265
+ fi
266
+ echo "✅ No zero-byte source files"