Premiss
What this MCP does
Creates, edits, and backtests Python trading strategies for supported crypto, stock, and ETF markets, with access to strategy code and run reports.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_key', 'name', 'symbol', 'interval'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'rules': {'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, 'symbol': {'type': 'string', 'maxLength': 20, 'minLength': 1}, 'interval': {'enum': ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1M'], 'type': 'string'}, 'template': {'oneOf': [{'type': 'object', 'required': ['family', 'fast', 'slow'], 'properties': {'fast': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'slow': {'type': 'integer', 'maximum': 300, 'minimum': 3}, 'family': {'type': 'string', 'const': 'sma_crossover'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'period', 'enter_below', 'exit_above'], 'properties': {'family': {'type': 'string', 'const': 'rsi_threshold'}, 'period': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'exit_above': {'type': 'number', 'maximum': 95, 'minimum': 55}, 'enter_below': {'type': 'number', 'maximum': 45, 'minimum': 5}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'entry_bars', 'exit_bars'], 'properties': {'family': {'type': 'string', 'const': 'price_channel'}, 'exit_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}, 'entry_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}}, 'additionalProperties': False}]}, 'request_key': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Idempotency UUID identifying one requested write and its unchanged arguments.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'name', 'symbol', 'interval', 'revision', 'version', 'rules', 'template', 'app_url'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'name': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'rules': {'anyOf': [{'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'null'}]}, 'venue': {'type': 'string'}, 'symbol': {'type': 'string'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'interval': {'type': 'string'}, 'revision': {'type': 'string'}, 'template': {'anyOf': [{'oneOf': [{'type': 'object', 'required': ['family', 'fast', 'slow'], 'properties': {'fast': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'slow': {'type': 'integer', 'maximum': 300, 'minimum': 3}, 'family': {'type': 'string', 'const': 'sma_crossover'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'period', 'enter_below', 'exit_above'], 'properties': {'family': {'type': 'string', 'const': 'rsi_threshold'}, 'period': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'exit_above': {'type': 'number', 'maximum': 95, 'minimum': 55}, 'enter_below': {'type': 'number', 'maximum': 45, 'minimum': 5}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'entry_bars', 'exit_bars'], 'properties': {'family': {'type': 'string', 'const': 'price_channel'}, 'exit_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}, 'entry_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}}, 'additionalProperties': False}]}, {'type': 'null'}]}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['market'], 'properties': {'market': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['market', 'symbol', 'name', 'assetClass', 'exchange', 'currency', 'active', 'intervals', 'availableFrom', 'availableTo', 'availability', 'notes'], 'properties': {'name': {'type': 'string'}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'active': {'type': 'boolean'}, 'market': {'type': 'string'}, 'symbol': {'type': 'string'}, 'currency': {'type': 'string'}, 'exchange': {'type': 'string'}, 'intervals': {'type': 'array', 'items': {'type': 'string'}}, 'assetClass': {'enum': ['crypto', 'stock', 'etf'], 'type': 'string'}, 'availableTo': {'type': ['string', 'null']}, 'availability': {'type': 'array', 'items': {'type': 'object', 'required': ['intervals', 'availableFrom', 'availableTo'], 'properties': {'intervals': {'type': 'array', 'items': {'type': 'string'}}, 'availableTo': {'type': ['string', 'null']}, 'availableFrom': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'availableFrom': {'type': ['string', 'null']}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['schema_version', 'release_stage', 'available_tools', 'available', 'research_scope', 'unavailable_operations'], 'properties': {'available': {'type': 'object', 'required': ['account_linking', 'historical_simulations', 'saved_research', 'paper_reports'], 'properties': {'paper_reports': {'type': 'boolean'}, 'saved_research': {'type': 'boolean'}, 'account_linking': {'type': 'boolean'}, 'historical_simulations': {'type': 'boolean'}}, 'additionalProperties': False}, 'release_stage': {'enum': ['transport_prototype', 'research'], 'type': 'string'}, 'research_scope': {'type': 'object', 'required': ['markets', 'intervals', 'exposure', 'custom_python', 'equity_intervals', 'market_discovery_tool', 'template_shortcuts'], 'properties': {'markets': {'type': 'array', 'items': {'type': 'string'}}, 'exposure': {'type': 'string', 'const': 'long_short_or_flat'}, 'intervals': {'type': 'array', 'items': {'type': 'string'}}, 'custom_python': {'type': 'boolean', 'const': True}, 'equity_intervals': {'type': 'array', 'items': {'type': 'string'}}, 'template_shortcuts': {'type': 'array', 'items': {'enum': ['sma_crossover', 'rsi_threshold', 'price_channel'], 'type': 'string'}}, 'market_discovery_tool': {'type': 'string', 'const': 'search_markets'}}, 'additionalProperties': False}, 'schema_version': {'type': 'number', 'const': 2}, 'available_tools': {'type': 'array', 'items': {'type': 'string'}}, 'unavailable_operations': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'workspace', 'permissions', 'app_url'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'app_url': {'type': 'string', 'format': 'uri'}, 'workspace': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'permissions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_id', 'kind', 'limit'], 'properties': {'kind': {'enum': ['code', 'trades', 'equity'], 'type': 'string'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1}, 'cursor': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_id', 'kind', 'revision', 'next_cursor'], 'properties': {'kind': {'enum': ['code', 'trades', 'equity'], 'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'equity': {'type': 'array', 'items': {'type': 'object', 'required': ['ts', 'equity'], 'properties': {'ts': {'type': 'number'}, 'equity': {'type': 'number'}}, 'additionalProperties': False}}, 'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'trades': {'type': 'array', 'items': {'type': 'object', 'required': ['seq', 'ts', 'side', 'qty', 'price', 'fee', 'notional', 'pnl', 'equity_after'], 'properties': {'ts': {'type': 'number'}, 'fee': {'type': 'number'}, 'pnl': {'type': ['number', 'null']}, 'qty': {'type': 'number'}, 'seq': {'type': 'number'}, 'side': {'type': 'string'}, 'price': {'type': 'number'}, 'notional': {'type': 'number'}, 'equity_after': {'type': 'number'}}, 'additionalProperties': False}}, 'revision': {'type': 'string'}, 'next_cursor': {'type': ['number', 'null']}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_id', 'strategy_id', 'mode', 'status', 'symbol', 'interval', 'venue', 'engine_version', 'strategy_version', 'tested_rules', 'revision', 'start_ts', 'end_ts', 'last_ts', 'metrics', 'assumptions', 'baseline', 'limitations', 'app_url'], 'properties': {'mode': {'enum': ['backtest', 'paper'], 'type': 'string'}, 'error': {'type': ['string', 'null']}, 'venue': {'type': 'string'}, 'end_ts': {'type': ['number', 'null']}, 'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'status': {'type': 'string'}, 'symbol': {'type': 'string'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'last_ts': {'type': ['number', 'null']}, 'metrics': {'anyOf': [{'type': 'object', 'required': ['initial_capital', 'final_equity', 'total_return_pct', 'cagr_pct', 'max_drawdown_pct', 'sharpe', 'num_trades', 'win_rate_pct', 'profit_factor', 'exposure_pct', 'bars_processed', 'first_ts', 'last_ts'], 'properties': {'sharpe': {'type': ['number', 'null']}, 'last_ts': {'type': ['number', 'null']}, 'cagr_pct': {'type': ['number', 'null']}, 'first_ts': {'type': ['number', 'null']}, 'num_trades': {'type': 'number'}, 'exposure_pct': {'type': 'number'}, 'final_equity': {'type': 'number'}, 'win_rate_pct': {'type': ['number', 'null']}, 'profit_factor': {'type': ['number', 'null']}, 'bars_processed': {'type': 'number'}, 'initial_capital': {'type': 'number'}, 'max_drawdown_pct': {'type': 'number'}, 'total_return_pct': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'baseline': {'anyOf': [{'type': 'object', 'required': ['run_id', 'status', 'metrics', 'comparable'], 'properties': {'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'status': {'type': 'string'}, 'metrics': {'anyOf': [{'type': 'object', 'required': ['initial_capital', 'final_equity', 'total_return_pct', 'cagr_pct', 'max_drawdown_pct', 'sharpe', 'num_trades', 'win_rate_pct', 'profit_factor', 'exposure_pct', 'bars_processed', 'first_ts', 'last_ts'], 'properties': {'sharpe': {'type': ['number', 'null']}, 'last_ts': {'type': ['number', 'null']}, 'cagr_pct': {'type': ['number', 'null']}, 'first_ts': {'type': ['number', 'null']}, 'num_trades': {'type': 'number'}, 'exposure_pct': {'type': 'number'}, 'final_equity': {'type': 'number'}, 'win_rate_pct': {'type': ['number', 'null']}, 'profit_factor': {'type': ['number', 'null']}, 'bars_processed': {'type': 'number'}, 'initial_capital': {'type': 'number'}, 'max_drawdown_pct': {'type': 'number'}, 'total_return_pct': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'comparable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'interval': {'type': 'string'}, 'revision': {'type': 'string'}, 'start_ts': {'type': 'number'}, 'assumptions': {'anyOf': [{'type': 'object', 'required': ['version', 'initial_capital', 'fee_bps', 'slippage_bps'], 'properties': {'fee_bps': {'type': 'number', 'const': 10}, 'version': {'type': 'number', 'const': 1}, 'slippage_bps': {'type': 'number', 'const': 1}, 'initial_capital': {'type': 'number', 'const': 10000}}, 'additionalProperties': False}, {'type': 'null'}]}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'tested_rules': {'anyOf': [{'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'null'}]}, 'engine_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'strategy_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['strategy_id'], 'properties': {'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'name', 'symbol', 'interval', 'revision', 'version', 'rules', 'template', 'app_url'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'name': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'rules': {'anyOf': [{'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'null'}]}, 'venue': {'type': 'string'}, 'symbol': {'type': 'string'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'interval': {'type': 'string'}, 'revision': {'type': 'string'}, 'template': {'anyOf': [{'oneOf': [{'type': 'object', 'required': ['family', 'fast', 'slow'], 'properties': {'fast': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'slow': {'type': 'integer', 'maximum': 300, 'minimum': 3}, 'family': {'type': 'string', 'const': 'sma_crossover'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'period', 'enter_below', 'exit_above'], 'properties': {'family': {'type': 'string', 'const': 'rsi_threshold'}, 'period': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'exit_above': {'type': 'number', 'maximum': 95, 'minimum': 55}, 'enter_below': {'type': 'number', 'maximum': 45, 'minimum': 5}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'entry_bars', 'exit_bars'], 'properties': {'family': {'type': 'string', 'const': 'price_channel'}, 'exit_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}, 'entry_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}}, 'additionalProperties': False}]}, {'type': 'null'}]}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['guide'], 'properties': {'guide': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['kind', 'limit'], 'properties': {'kind': {'enum': ['strategies', 'runs', 'notes'], 'type': 'string'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 80}, 'cursor': {'type': 'string', 'maxLength': 240}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['kind', 'items', 'next_cursor'], 'properties': {'kind': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'updated_at', 'type'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'type': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'type': 'string'}, 'excerpt': {'type': 'string', 'maxLength': 1000}, 'revision': {'type': 'string'}, 'updated_at': {'type': 'number'}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'content_truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 20}, 'next_cursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_key', 'title', 'note'], 'properties': {'note': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'revision': {'type': 'string', 'maxLength': 128}, 'request_key': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Idempotency UUID identifying one requested write and its unchanged arguments.'}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['note_id', 'title', 'saved', 'app_url'], 'properties': {'saved': {'type': 'boolean', 'const': True}, 'title': {'type': 'string'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'note_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'limit'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'default': '', 'maxLength': 120}, 'asset_class': {'enum': ['crypto', 'stock', 'etf'], 'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['markets'], 'properties': {'markets': {'type': 'array', 'items': {'type': 'object', 'required': ['market', 'symbol', 'name', 'assetClass', 'exchange', 'currency', 'active'], 'properties': {'name': {'type': 'string'}, 'active': {'type': 'boolean'}, 'market': {'type': 'string'}, 'symbol': {'type': 'string'}, 'currency': {'type': 'string'}, 'exchange': {'type': 'string'}, 'assetClass': {'enum': ['crypto', 'stock', 'etf'], 'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_key', 'strategy_id', 'revision', 'start_date'], 'properties': {'end_date': {'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, 'revision': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'start_date': {'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, 'request_key': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Idempotency UUID identifying one requested write and its unchanged arguments.'}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['run_id', 'baseline_run_id', 'strategy_id', 'revision', 'start_ts', 'end_ts', 'total_bars', 'status', 'app_url', 'poll_after_seconds', 'request_key'], 'properties': {'end_ts': {'type': 'number'}, 'run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'status': {'type': 'string', 'const': 'accepted'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'revision': {'type': 'string'}, 'start_ts': {'type': 'number'}, 'total_bars': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'request_key': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'tested_rules': {'anyOf': [{'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'null'}]}, 'baseline_run_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'poll_after_seconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_key', 'strategy_id', 'revision', 'symbol', 'interval', 'files', 'rules'], 'properties': {'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'rules': {'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, 'symbol': {'type': 'string', 'maxLength': 20, 'minLength': 1}, 'interval': {'enum': ['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', '1M'], 'type': 'string'}, 'revision': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'request_key': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Idempotency UUID identifying one requested write and its unchanged arguments.'}, 'strategy_id': {'type': 'string', 'maxLength': 128, 'minLength': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'name', 'symbol', 'interval', 'revision', 'version', 'rules', 'template', 'app_url'], 'properties': {'id': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'name': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'content': {'type': 'string', 'maxLength': 65536}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'rules': {'anyOf': [{'type': 'object', 'required': ['watches', 'buys', 'sells', 'safety'], 'properties': {'buys': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'sells': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'safety': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'watches': {'type': 'string', 'maxLength': 1000, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'null'}]}, 'venue': {'type': 'string'}, 'symbol': {'type': 'string'}, 'app_url': {'type': 'string', 'format': 'uri'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'interval': {'type': 'string'}, 'revision': {'type': 'string'}, 'template': {'anyOf': [{'oneOf': [{'type': 'object', 'required': ['family', 'fast', 'slow'], 'properties': {'fast': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'slow': {'type': 'integer', 'maximum': 300, 'minimum': 3}, 'family': {'type': 'string', 'const': 'sma_crossover'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'period', 'enter_below', 'exit_above'], 'properties': {'family': {'type': 'string', 'const': 'rsi_threshold'}, 'period': {'type': 'integer', 'maximum': 100, 'minimum': 2}, 'exit_above': {'type': 'number', 'maximum': 95, 'minimum': 55}, 'enter_below': {'type': 'number', 'maximum': 45, 'minimum': 5}}, 'additionalProperties': False}, {'type': 'object', 'required': ['family', 'entry_bars', 'exit_bars'], 'properties': {'family': {'type': 'string', 'const': 'price_channel'}, 'exit_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}, 'entry_bars': {'type': 'integer', 'maximum': 300, 'minimum': 2}}, 'additionalProperties': False}]}, {'type': 'null'}]}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
gateway
Aggregates tools for web accessibility, AI compliance, financial analysis, API migration, software security, payment operations, …
mcp
Offers deterministic developer and data utilities for formatting, encoding, conversion, scheduling, text processing, and financia…
Openfigi
Maps financial instrument identifiers such as tickers, ISINs, CUSIPs, SEDOLs, and CIKs to OpenFIGI identifiers and instrument met…
SODAX Builders MCP
Exposes cross-chain DeFi and AMM analytics, money-market positions, token and chain data, order books, swap quotes, and SDK docum…
aeX402 — Cross-Chain DeFi MCP: LINQ, AMM, Bridge, AI
Provides cross-chain blockchain and DeFi access, including AMM quotes and swaps, bridging, token and contract discovery, RPC call…
BIC 11-char shape, value discarded
Checks the shape of an 11-character BIC banking identifier.
BIC 8-char shape, value discarded
Checks the shape of an 8-character BIC banking identifier.
BIC/SWIFT shape, value discarded
Checks the format of a BIC or SWIFT banking identifier.