Pay-per-call crypto backtests, signals, token risk checks and universes (x402, USDC on Base).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Backtest any crypto strategy on 399 Coinbase coins, bias-free. Breakout, momentum, dip-buy or MA trend rules on Coinbase daily data with fees, slippage, H1/H2 split, luck flag and survivorship-bias-free universe. Price: $0.05 USDC per call (x402, Base mainnet). Free pre-check: validate_backtest.
YYYY-MM-DD
Fee per side (0.009 = 0.9%)
YYYY-MM-DD
Slippage per side
Starting capital in USD
Backtest any crypto strategy on 399 Coinbase coins, bias-free. Breakout, momentum, dip-buy or MA trend rules on Coinbase daily data with fees, slippage, H1/H2 split, luck flag and survivorship-bias-free universe. Price: $0.05 USDC per call (x402, Base mainnet). Free pre-check: validate_backtest.
| Argument | Type | Description |
|---|---|---|
| end | any | YYYY-MM-DD |
| fee | number | Fee per side (0.009 = 0.9%) |
| start | any | YYYY-MM-DD |
| slippage | number | Slippage per side |
| strategy* | any | |
| universe | any | |
| include_trades | boolean | |
| initial_capital | number | Starting capital in USD |
{
"type": "object",
"$defs": {
"Dip": {
"type": "object",
"title": "Dip",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "dip",
"title": "Type"
},
"params": {
"$ref": "#/$defs/DipParams",
"default": {
"days": 1,
"drop_pct": 0.15,
"trend_filter": "ma50",
"hard_stop_pct": 0.15,
"max_hold_days": 5,
"max_positions": 3
}
}
},
"additionalProperties": false
},
"MATrend": {
"type": "object",
"title": "MATrend",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "ma_trend",
"title": "Type"
},
"params": {
"$ref": "#/$defs/MATrendParams",
"default": {
"coins": [
"ETH-USD"
],
"ma_days": 50
}
}
},
"additionalProperties": false
},
"Breakout": {
"type": "object",
"title": "Breakout",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "breakout",
"title": "Type"
},
"params": {
"$ref": "#/$defs/BreakoutParams",
"default": {
"gate": "btc_ma50",
"atr_mult": 2,
"lookback": 20,
"max_stop_pct": 0.4,
"min_stop_pct": 0.06,
"max_positions": 3,
"risk_per_trade": 0.05,
"max_position_pct": 0.5
}
}
},
"additionalProperties": false
},
"Momentum": {
"type": "object",
"title": "Momentum",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "momentum",
"title": "Type"
},
"params": {
"$ref": "#/$defs/MomentumParams",
"default": {
"gate": "btc_ma50",
"top_n": 2,
"lookback": 14,
"trail_pct": null,
"rebalance_days": 7
}
}
},
"additionalProperties": false
},
"Universe": {
"type": "object",
"title": "Universe",
"properties": {
"mode": {
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"type": "string",
"title": "Mode",
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list"
},
"coins": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200
},
{
"type": "null"
}
],
"title": "Coins",
"default": null
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 5
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0,
"description": "Days a coin must have traded before it is eligible"
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0,
"description": "Min 20-day avg Coinbase $ volume"
}
},
"additionalProperties": false
},
"DipParams": {
"type": "object",
"title": "DipParams",
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 1,
"maximum": 10,
"minimum": 1
},
"drop_pct": {
"type": "number",
"title": "Drop Pct",
"default": 0.15,
"description": "Buy after a fall of at least this fraction over `days`",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01
},
"trend_filter": {
"enum": [
"ma50",
"none"
],
"type": "string",
"title": "Trend Filter",
"default": "ma50"
},
"hard_stop_pct": {
"type": "number",
"title": "Hard Stop Pct",
"default": 0.15,
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01
},
"max_hold_days": {
"type": "integer",
"title": "Max Hold Days",
"default": 5,
"maximum": 60,
"minimum": 1
},
"max_positions": {
"type": "integer",
"title": "Max Positions",
"default": 3,
"maximum": 10,
"minimum": 1
}
},
"additionalProperties": false
},
"MATrendParams": {
"type": "object",
"title": "MATrendParams",
"properties": {
"coins": {
"type": "array",
"items": {
"type": "string"
},
"title": "Coins",
"default": [
"ETH-USD"
],
"maxItems": 10,
"minItems": 1,
"description": "Coinbase product ids, e.g. ETH-USD"
},
"ma_days": {
"type": "integer",
"title": "Ma Days",
"default": 50,
"maximum": 60,
"minimum": 5
}
},
"additionalProperties": false
},
"BreakoutParams": {
"type": "object",
"title": "BreakoutParams",
"properties": {
"gate": {
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"type": "string",
"title": "Gate",
"default": "btc_ma50",
"description": "Only open trades when BTC > 50-day SMA (btc_ma50) or >=50% of universe above 20d SMA (breadth50)"
},
"atr_mult": {
"type": "number",
"title": "Atr Mult",
"default": 2,
"maximum": 6,
"minimum": 0.5,
"description": "Trailing stop = highest close - k*ATR14"
},
"lookback": {
"type": "integer",
"title": "Lookback",
"default": 20,
"maximum": 60,
"minimum": 5,
"description": "Buy when close > highest high of prior N days"
},
"max_stop_pct": {
"type": "number",
"title": "Max Stop Pct",
"default": 0.4,
"maximum": 0.9,
"exclusiveMinimum": 0
},
"min_stop_pct": {
"type": "number",
"title": "Min Stop Pct",
"default": 0.06,
"maximum": 0.5,
"exclusiveMinimum": 0
},
"max_positions": {
"type": "integer",
"title": "Max Positions",
"default": 3,
"maximum": 10,
"minimum": 1
},
"risk_per_trade": {
"type": "number",
"title": "Risk Per Trade",
"default": 0.05,
"maximum": 0.25,
"description": "Fraction of equity risked to the initial stop",
"exclusiveMinimum": 0
},
"max_position_pct": {
"type": "number",
"title": "Max Position Pct",
"default": 0.5,
"maximum": 1,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"MomentumParams": {
"type": "object",
"title": "MomentumParams",
"properties": {
"gate": {
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"type": "string",
"title": "Gate",
"default": "btc_ma50"
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 2,
"maximum": 10,
"minimum": 1
},
"lookback": {
"type": "integer",
"title": "Lookback",
"default": 14,
"maximum": 60,
"minimum": 3,
"description": "Rank by N-day return"
},
"trail_pct": {
"anyOf": [
{
"type": "number",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"title": "Trail Pct",
"default": null,
"description": "Optional % trailing stop from highest close"
},
"rebalance_days": {
"type": "integer",
"title": "Rebalance Days",
"default": 7,
"maximum": 30,
"minimum": 1
}
},
"additionalProperties": false
}
},
"title": "backtestArguments",
"required": [
"strategy"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End",
"default": null,
"description": "YYYY-MM-DD"
},
"fee": {
"type": "number",
"title": "Fee",
"default": 0.009,
"maximum": 0.05,
"minimum": 0,
"description": "Fee per side (0.009 = 0.9%)"
},
"start": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start",
"default": null,
"description": "YYYY-MM-DD"
},
"slippage": {
"type": "number",
"title": "Slippage",
"default": 0.002,
"maximum": 0.05,
"minimum": 0,
"description": "Slippage per side"
},
"strategy": {
"oneOf": [
{
"$ref": "#/$defs/Breakout"
},
{
"$ref": "#/$defs/Momentum"
},
{
"$ref": "#/$defs/Dip"
},
{
"$ref": "#/$defs/MATrend"
}
],
"title": "Strategy",
"discriminator": {
"mapping": {
"dip": "#/$defs/Dip",
"breakout": "#/$defs/Breakout",
"ma_trend": "#/$defs/MATrend",
"momentum": "#/$defs/Momentum"
},
"propertyName": "type"
}
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"include_trades": {
"type": "boolean",
"title": "Include Trades",
"default": true
},
"initial_capital": {
"type": "number",
"title": "Initial Capital",
"default": 150,
"maximum": 1000000000,
"description": "Starting capital in USD",
"exclusiveMinimum": 0
}
}
}Free: request schemas, examples, prices and limits for every paid tool/endpoint.
No arguments.
{
"type": "object",
"title": "get_schemaArguments",
"properties": {}
}Free: service status, prices, network and data range.
No arguments.
{
"type": "object",
"title": "healthArguments",
"properties": {}
}Daily crypto market regime: BTC/ETH trend, breadth, breakout watchlist. BTC/ETH vs 20/50-day MAs, market breadth (% of point-in-time top-N above 20DMA), coins nearest a 20-day breakout, and the R1 breakout strategy's gate and entry signals. Completed UTC daily closes only. Price: $0.01 USDC per call (x402, Base mainnet).
| Argument | Type | Description |
|---|---|---|
| top_n | integer | Universe size for breadth / breakout scan |
{
"type": "object",
"title": "market_signalsArguments",
"properties": {
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 5,
"description": "Universe size for breadth / breakout scan"
}
}
}Find robust strategy params, not lucky ones: tests up to 50 combos of a backtest strategy; ranks by worst-half (H1/H2) return with neighbourhood smoothing, flags overfitting, and recommends the most robust parameters rather than the best-fit ones. Price: $0.50 USDC per call (x402, Base mainnet). Free pre-check: validate_optimize.
| Argument | Type | Description |
|---|---|---|
| end | any | YYYY-MM-DD |
| fee | number | Fee per side (0.009 = 0.9%) |
| grid* | object | param -> values to try; <= 50 combos total, <= 10 values per param |
| start | any | YYYY-MM-DD |
| rank_by | string | |
| slippage | number | Slippage per side |
| strategy* | any | |
| universe | any | |
| initial_capital | number | Starting capital in USD |
Token scam check: honeypot, mint/pause/blacklist, fake-USDC lookalikes. Scam/honeypot/rug risk check for a Base, Ethereum or Solana token: unverified code, sell restrictions, mint/pause/blacklist powers, taxes, upgradeable proxy, age, liquidity, fake major-token impersonation and spam-airdrop patterns. Never visits metadata URLs. Price: $0.02 USDC per call (x402, Base mainnet). Free pre-check: validate_token_check.
| Argument | Type | Description |
|---|---|---|
| chain* | string | base, ethereum or solana |
| address* | string | Token contract / mint address |
{
"type": "object",
"title": "token_checkArguments",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"solana"
],
"type": "string",
"title": "Chain",
"description": "base, ethereum or solana"
},
"address": {
"type": "string",
"title": "Address",
"maxLength": 44,
"minLength": 32,
"description": "Token contract / mint address"
}
}
}Survivorship-free top-N coin list for any past date. Top-N Coinbase USD pairs by trailing 20-day dollar volume as of a past date, using only data available that day (survivorship-bias-free universe for backtests). Price: $0.05 USDC per call (x402, Base mainnet). Free pre-check: validate_universe.
| Argument | Type | Description |
|---|---|---|
| date | any | YYYY-MM-DD |
| top_n | integer | |
| min_age_days | integer | |
| min_avg_dollar_volume | number |
{
"type": "object",
"title": "universe_snapshotArguments",
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "YYYY-MM-DD"
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 1
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0
}
}
}Free: check backtest arguments (same as the paid `backtest` tool) before paying.
| Argument | Type | Description |
|---|---|---|
| end | any | YYYY-MM-DD |
| fee | number | Fee per side (0.009 = 0.9%) |
| start | any | YYYY-MM-DD |
| slippage | number | Slippage per side |
| strategy* | any | |
| universe | any | |
| include_trades | boolean | |
| initial_capital | number | Starting capital in USD |
{
"type": "object",
"$defs": {
"Dip": {
"type": "object",
"title": "Dip",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "dip",
"title": "Type"
},
"params": {
"$ref": "#/$defs/DipParams",
"default": {
"days": 1,
"drop_pct": 0.15,
"trend_filter": "ma50",
"hard_stop_pct": 0.15,
"max_hold_days": 5,
"max_positions": 3
}
}
},
"additionalProperties": false
},
"MATrend": {
"type": "object",
"title": "MATrend",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "ma_trend",
"title": "Type"
},
"params": {
"$ref": "#/$defs/MATrendParams",
"default": {
"coins": [
"ETH-USD"
],
"ma_days": 50
}
}
},
"additionalProperties": false
},
"Breakout": {
"type": "object",
"title": "Breakout",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "breakout",
"title": "Type"
},
"params": {
"$ref": "#/$defs/BreakoutParams",
"default": {
"gate": "btc_ma50",
"atr_mult": 2,
"lookback": 20,
"max_stop_pct": 0.4,
"min_stop_pct": 0.06,
"max_positions": 3,
"risk_per_trade": 0.05,
"max_position_pct": 0.5
}
}
},
"additionalProperties": false
},
"Momentum": {
"type": "object",
"title": "Momentum",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "momentum",
"title": "Type"
},
"params": {
"$ref": "#/$defs/MomentumParams",
"default": {
"gate": "btc_ma50",
"top_n": 2,
"lookback": 14,
"trail_pct": null,
"rebalance_days": 7
}
}
},
"additionalProperties": false
},
"Universe": {
"type": "object",
"title": "Universe",
"properties": {
"mode": {
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"type": "string",
"title": "Mode",
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list"
},
"coins": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200
},
{
"type": "null"
}
],
"title": "Coins",
"default": null
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 5
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0,
"description": "Days a coin must have traded before it is eligible"
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0,
"description": "Min 20-day avg Coinbase $ volume"
}
},
"additionalProperties": false
},
"DipParams": {
"type": "object",
"title": "DipParams",
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 1,
"maximum": 10,
"minimum": 1
},
"drop_pct": {
"type": "number",
"title": "Drop Pct",
"default": 0.15,
"description": "Buy after a fall of at least this fraction over `days`",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01
},
"trend_filter": {
"enum": [
"ma50",
"none"
],
"type": "string",
"title": "Trend Filter",
"default": "ma50"
},
"hard_stop_pct": {
"type": "number",
"title": "Hard Stop Pct",
"default": 0.15,
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01
},
"max_hold_days": {
"type": "integer",
"title": "Max Hold Days",
"default": 5,
"maximum": 60,
"minimum": 1
},
"max_positions": {
"type": "integer",
"title": "Max Positions",
"default": 3,
"maximum": 10,
"minimum": 1
}
},
"additionalProperties": false
},
"MATrendParams": {
"type": "object",
"title": "MATrendParams",
"properties": {
"coins": {
"type": "array",
"items": {
"type": "string"
},
"title": "Coins",
"default": [
"ETH-USD"
],
"maxItems": 10,
"minItems": 1,
"description": "Coinbase product ids, e.g. ETH-USD"
},
"ma_days": {
"type": "integer",
"title": "Ma Days",
"default": 50,
"maximum": 60,
"minimum": 5
}
},
"additionalProperties": false
},
"BreakoutParams": {
"type": "object",
"title": "BreakoutParams",
"properties": {
"gate": {
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"type": "string",
"title": "Gate",
"default": "btc_ma50",
"description": "Only open trades when BTC > 50-day SMA (btc_ma50) or >=50% of universe above 20d SMA (breadth50)"
},
"atr_mult": {
"type": "number",
"title": "Atr Mult",
"default": 2,
"maximum": 6,
"minimum": 0.5,
"description": "Trailing stop = highest close - k*ATR14"
},
"lookback": {
"type": "integer",
"title": "Lookback",
"default": 20,
"maximum": 60,
"minimum": 5,
"description": "Buy when close > highest high of prior N days"
},
"max_stop_pct": {
"type": "number",
"title": "Max Stop Pct",
"default": 0.4,
"maximum": 0.9,
"exclusiveMinimum": 0
},
"min_stop_pct": {
"type": "number",
"title": "Min Stop Pct",
"default": 0.06,
"maximum": 0.5,
"exclusiveMinimum": 0
},
"max_positions": {
"type": "integer",
"title": "Max Positions",
"default": 3,
"maximum": 10,
"minimum": 1
},
"risk_per_trade": {
"type": "number",
"title": "Risk Per Trade",
"default": 0.05,
"maximum": 0.25,
"description": "Fraction of equity risked to the initial stop",
"exclusiveMinimum": 0
},
"max_position_pct": {
"type": "number",
"title": "Max Position Pct",
"default": 0.5,
"maximum": 1,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"MomentumParams": {
"type": "object",
"title": "MomentumParams",
"properties": {
"gate": {
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"type": "string",
"title": "Gate",
"default": "btc_ma50"
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 2,
"maximum": 10,
"minimum": 1
},
"lookback": {
"type": "integer",
"title": "Lookback",
"default": 14,
"maximum": 60,
"minimum": 3,
"description": "Rank by N-day return"
},
"trail_pct": {
"anyOf": [
{
"type": "number",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"title": "Trail Pct",
"default": null,
"description": "Optional % trailing stop from highest close"
},
"rebalance_days": {
"type": "integer",
"title": "Rebalance Days",
"default": 7,
"maximum": 30,
"minimum": 1
}
},
"additionalProperties": false
}
},
"title": "validate_backtestArguments",
"required": [
"strategy"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End",
"default": null,
"description": "YYYY-MM-DD"
},
"fee": {
"type": "number",
"title": "Fee",
"default": 0.009,
"maximum": 0.05,
"minimum": 0,
"description": "Fee per side (0.009 = 0.9%)"
},
"start": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start",
"default": null,
"description": "YYYY-MM-DD"
},
"slippage": {
"type": "number",
"title": "Slippage",
"default": 0.002,
"maximum": 0.05,
"minimum": 0,
"description": "Slippage per side"
},
"strategy": {
"oneOf": [
{
"$ref": "#/$defs/Breakout"
},
{
"$ref": "#/$defs/Momentum"
},
{
"$ref": "#/$defs/Dip"
},
{
"$ref": "#/$defs/MATrend"
}
],
"title": "Strategy",
"discriminator": {
"mapping": {
"dip": "#/$defs/Dip",
"breakout": "#/$defs/Breakout",
"ma_trend": "#/$defs/MATrend",
"momentum": "#/$defs/Momentum"
},
"propertyName": "type"
}
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"include_trades": {
"type": "boolean",
"title": "Include Trades",
"default": true
},
"initial_capital": {
"type": "number",
"title": "Initial Capital",
"default": 150,
"maximum": 1000000000,
"description": "Starting capital in USD",
"exclusiveMinimum": 0
}
}
}Free: check optimize_strategy arguments and count grid combos before paying.
| Argument | Type | Description |
|---|---|---|
| end | any | YYYY-MM-DD |
| fee | number | Fee per side (0.009 = 0.9%) |
| grid* | object | param -> values to try |
| start | any | YYYY-MM-DD |
| rank_by | string | |
| slippage | number | Slippage per side |
| strategy* | any | |
| universe | any | |
| initial_capital | number | Starting capital in USD |
{
"type": "object",
"$defs": {
"Universe": {
"type": "object",
"title": "Universe",
"properties": {
"mode": {
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"type": "string",
"title": "Mode",
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list"
},
"coins": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200
},
{
"type": "null"
}
],
"title": "Coins",
"default": null
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 5
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0,
"description": "Days a coin must have traded before it is eligible"
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0,
"description": "Min 20-day avg Coinbase $ volume"
}
},
"additionalProperties": false
},
"OptimizeStrategy": {
"type": "object",
"title": "OptimizeStrategy",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"breakout",
"momentum",
"dip",
"ma_trend"
],
"type": "string",
"title": "Type"
},
"params": {
"type": "object",
"title": "Params",
"default": {},
"description": "Fixed (non-grid) params; same fields as /backtest strategy params",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"title": "validate_optimizeArguments",
"required": [
"strategy",
"grid"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End",
"default": null,
"description": "YYYY-MM-DD"
},
"fee": {
"type": "number",
"title": "Fee",
"default": 0.009,
"maximum": 0.05,
"minimum": 0,
"description": "Fee per side (0.009 = 0.9%)"
},
"grid": {
"type": "object",
"title": "Grid",
"description": "param -> values to try",
"additionalProperties": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "null"
}
]
}
}
},
"start": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start",
"default": null,
"description": "YYYY-MM-DD"
},
"rank_by": {
"enum": [
"robust",
"return"
],
"type": "string",
"title": "Rank By",
"default": "robust"
},
"slippage": {
"type": "number",
"title": "Slippage",
"default": 0.002,
"maximum": 0.05,
"minimum": 0,
"description": "Slippage per side"
},
"strategy": {
"$ref": "#/$defs/OptimizeStrategy"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"initial_capital": {
"type": "number",
"title": "Initial Capital",
"default": 150,
"maximum": 1000000000,
"description": "Starting capital in USD",
"exclusiveMinimum": 0
}
}
}Free: format-check a token_check request (no on-chain lookups).
| Argument | Type | Description |
|---|---|---|
| chain* | string | |
| address* | string |
{
"type": "object",
"title": "validate_token_checkArguments",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"solana"
],
"type": "string",
"title": "Chain"
},
"address": {
"type": "string",
"title": "Address"
}
}
}Free: check universe_snapshot arguments (date in range, enough history) before paying.
| Argument | Type | Description |
|---|---|---|
| date | any | YYYY-MM-DD |
| top_n | integer | |
| min_age_days | integer | |
| min_avg_dollar_volume | number |
{
"type": "object",
"title": "validate_universeArguments",
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "YYYY-MM-DD"
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 1
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0
}
}
}{
"type": "object",
"$defs": {
"Universe": {
"type": "object",
"title": "Universe",
"properties": {
"mode": {
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"type": "string",
"title": "Mode",
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list"
},
"coins": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 200
},
{
"type": "null"
}
],
"title": "Coins",
"default": null
},
"top_n": {
"type": "integer",
"title": "Top N",
"default": 30,
"maximum": 200,
"minimum": 5
},
"min_age_days": {
"type": "integer",
"title": "Min Age Days",
"default": 35,
"maximum": 120,
"minimum": 0,
"description": "Days a coin must have traded before it is eligible"
},
"min_avg_dollar_volume": {
"type": "number",
"title": "Min Avg Dollar Volume",
"default": 1000000,
"minimum": 0,
"description": "Min 20-day avg Coinbase $ volume"
}
},
"additionalProperties": false
},
"OptimizeStrategy": {
"type": "object",
"title": "OptimizeStrategy",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"breakout",
"momentum",
"dip",
"ma_trend"
],
"type": "string",
"title": "Type"
},
"params": {
"type": "object",
"title": "Params",
"default": {},
"description": "Fixed (non-grid) params; same fields as /backtest strategy params",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"title": "optimize_strategyArguments",
"required": [
"strategy",
"grid"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "End",
"default": null,
"description": "YYYY-MM-DD"
},
"fee": {
"type": "number",
"title": "Fee",
"default": 0.009,
"maximum": 0.05,
"minimum": 0,
"description": "Fee per side (0.009 = 0.9%)"
},
"grid": {
"type": "object",
"title": "Grid",
"description": "param -> values to try; <= 50 combos total, <= 10 values per param",
"additionalProperties": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "null"
}
]
}
}
},
"start": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
],
"title": "Start",
"default": null,
"description": "YYYY-MM-DD"
},
"rank_by": {
"enum": [
"robust",
"return"
],
"type": "string",
"title": "Rank By",
"default": "robust"
},
"slippage": {
"type": "number",
"title": "Slippage",
"default": 0.002,
"maximum": 0.05,
"minimum": 0,
"description": "Slippage per side"
},
"strategy": {
"$ref": "#/$defs/OptimizeStrategy"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"initial_capital": {
"type": "number",
"title": "Initial Capital",
"default": 150,
"maximum": 1000000000,
"description": "Starting capital in USD",
"exclusiveMinimum": 0
}
}
}