BenAwf

BenAwf remote MCP for Strategy Lab. Streamable HTTP. Paper GA; live venue beta.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
90%
Vollständigkeit des Schemas
94%
Qualität der Benennung
93%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (4)

  • LOWTool 'get_lineage' description lacks action verbin get_lineage
  • LOWTool 'list_trades' description lacks action verbin list_trades
  • LOWTool 'diff_dsl' description lacks action verbin diff_dsl
  • LOWTool 'get_market_context_by_date' description lacks action verbin get_market_context_by_date

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~10,611Tokens (Tool-Definitionen)
~6.7 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (8.29% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://api.benawf.com/mcp"
    }
  }
}

Remote-Endpunkte

https://api.benawf.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (16)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢list_iterations(strategy_id)

Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_lineage(strategy_id)

Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡select_iteration(ref, strategy_id)

Load an @R# onto the live canvas so mutate tools edit that iteration.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "@R# to load onto the canvas (usually champion)."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_entry_gate(side, condition, strategy_id)

Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenAwf does not call an LLM. No prose text.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "side": {
      "type": "string",
      "enum": [
        "long",
        "short"
      ],
      "description": "entry.long or entry.short."
    },
    "condition": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "comparison"
            },
            "left": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "price"
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "open",
                        "high",
                        "low",
                        "close"
                      ],
                      "description": "Bar field: open, high, low, or close (default close). Ignored at `lookback: 0` (live ticker). At `lookback >= 1` returns this OHLC field of bar N back — enables wick/rejection patterns (e.g. high pierced a level then close reclaimed)."
                    },
                    "timeframeMinutes": {
                      "type": "integer",
                      "description": "Chart timeframe (5, 15, 60, 240, or 1440 minutes) the lookback resolves against. `lookback: 0` returns the live ticker price (timeframe-independent); `lookback >= 1` returns the chosen `field` of bar N back on this timeframe."
                    },
                    "lookback": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 20,
                      "description": "How many bars back to look. 0 = latest bar, 1 = one bar ago, etc. Max 20."
                    }
                  },
                  "required": [
                    "kind",
                    "field",
                    "timeframeMinutes",
                    "lookback"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "constant"
                    },
                    "value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "kind",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "indicator"
                    },
                    "name": {
                      "type": "string",
                      "description": "Indicator name. One of: SMA20, SMA50, EMA, RSI, ADX, MACD, BBANDS, ATR, ATR_PCT, VWAP, OBV, OBV_CHANGE, LAST_DAY_HIGH, LAST_DAY_LOW, LAST_WEEK_HIGH, LAST_WEEK_LOW, SWING_HIGH, SWING_LOW, BOS, CHOCH, DISPLACEMENT, VOLUME_PROFILE, DEALING_RANGE."
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "value",
                        "signal",
                        "histogram",
                        "upper",
                        "middle",
                        "lower",
                        "poc",
                        "vah",
                        "val",
                        "equilibrium",
                        "premium_pct"
                      ],
                      "description": "Sub-field for composite indicators: MACD uses signal/histogram, BBANDS uses upper/middle/lower, VOLUME_PROFILE uses poc/vah/val, DEALING_RANGE uses equilibrium/premium_pct. Use value for scalar indicators."
                    },
                    "timeframeMinutes": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
                      "description": "Chart timeframe: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                    },
                    "lookback": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/lookback"
                    },
                    "params": {
                      "type": "object",
                      "properties": {
                        "wing": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 10
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Pivot wing for SWING_HIGH/SWING_LOW/BOS/CHOCH/DEALING_RANGE: bars required on each side to confirm a pivot. Default 3. Smaller (1–2) = short-term structure, larger (4–10) = major swings only."
                        },
                        "atrMult": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0.5,
                              "maximum": 5
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "ATR(14) multiplier for DISPLACEMENT: bar range must exceed atrMult × ATR to count as displacement. Default 1.5."
                        },
                        "lookbackBars": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 10,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Rolling window length for VOLUME_PROFILE (bars ending at the current closed bar). Default 48. Must fit the entry-rules indicator window (≤100)."
                        }
                      },
                      "required": [
                        "wing",
                        "atrMult",
                        "lookbackBars"
                      ],
                      "additionalProperties": false,
                      "description": "Optional indicator parameters (e.g. swing pivot wing, VOLUME_PROFILE lookbackBars). Empty object = defaults."
                    }
                  },
                  "required": [
                    "kind",
                    "name",
                    "field",
                    "timeframeMinutes",
                    "lookback",
                    "params"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "zone"
                    },
                    "zoneType": {
                      "type": "string",
                      "enum": [
                        "fvg_bull",
                        "fvg_bear",
                        "ob_bull",
                        "ob_bear"
                      ],
                      "description": "fvg_bull/fvg_bear = 3-candle fair value gap (imbalance). ob_bull/ob_bear = last opposite-close candle before a displacement bar (order block)."
                    },
                    "state": {
                      "type": "string",
                      "enum": [
                        "open",
                        "tapped",
                        "mitigated"
                      ],
                      "description": "Which zones to consider: open = untouched, tapped = wick entered but no close through, mitigated = closed beyond the far edge. Default open."
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "top",
                        "bottom",
                        "mid"
                      ],
                      "description": "Zone price level: top or bottom edge, or mid (midpoint — the FVG 'consequent encroachment'). Default mid."
                    },
                    "timeframeMinutes": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
                      "description": "Chart timeframe the zone detection runs on: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                    },
                    "lookback": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/lookback"
                    }
                  },
                  "required": [
                    "kind",
                    "zoneType",
                    "state",
                    "field",
                    "timeframeMinutes",
                    "lookback"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "derived"
                    },
                    "fn": {
                      "type": "string",
                      "enum": [
                        "spread",
                        "ratio",
                        "abs_distance_pct"
                      ],
                      "description": "spread = a - b (same units as inputs). ratio = a / b (fails when b is 0). abs_distance_pct = |a - b| / |b| * 100 (percent points — same scale as ATR_PCT and SL/TP)."
                    },
                    "a": {
                      "anyOf": [
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/1"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/2"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/3"
                        }
                      ],
                      "description": "First input — a primitive operand (price, indicator, or constant). No nesting."
                    },
                    "b": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/4/properties/a",
                      "description": "Second input — a primitive operand (price, indicator, or constant). No nesting."
                    }
                  },
                  "required": [
                    "kind",
                    "fn",
                    "a",
                    "b"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "op": {
              "type": "string",
              "enum": [
                "gt",
                "lt",
                "gte",
                "lte",
                "crosses_above",
                "crosses_below"
              ],
              "description": "Comparison operator. crosses_above/crosses_below require previous bar context."
            },
            "right": {
              "$ref": "#/properties/condition/anyOf/0/properties/left"
            }
          },
          "required": [
            "kind",
            "left",
            "op",
            "right"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "time_window"
            },
            "startUtc": {
              "type": "string",
              "description": "Window start, inclusive (e.g. \"09:30\" for the New York killzone open)."
            },
            "endUtc": {
              "$ref": "#/properties/condition/anyOf/1/properties/startUtc",
              "description": "Window end, exclusive. Earlier than startUtc = overnight window (e.g. \"02:00\" with start \"22:00\"). Equal to startUtc = always in window."
            },
            "timeframeMinutes": {
              "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
              "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for killzone precision."
            }
          },
          "required": [
            "kind",
            "startUtc",
            "endUtc",
            "timeframeMinutes"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "day_of_week"
            },
            "days": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "sun",
                  "mon",
                  "tue",
                  "wed",
                  "thu",
                  "fri",
                  "sat"
                ]
              },
              "minItems": 1,
              "maxItems": 7,
              "description": "Allowed UTC weekdays (e.g. omit \"fri\" to skip Friday)."
            },
            "timeframeMinutes": {
              "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
              "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for precision."
            }
          },
          "required": [
            "kind",
            "days",
            "timeframeMinutes"
          ],
          "additionalProperties": false
        }
      ],
      "description": "Translator-shaped entry gate condition."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "side",
    "condition"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡patch_entry_gate(id, condition, strategy_id)

Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenAwf does not call an LLM. No prose text.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Gate id from get_experiment.rules.entry."
    },
    "condition": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "comparison"
            },
            "left": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "price"
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "open",
                        "high",
                        "low",
                        "close"
                      ],
                      "description": "Bar field: open, high, low, or close (default close). Ignored at `lookback: 0` (live ticker). At `lookback >= 1` returns this OHLC field of bar N back — enables wick/rejection patterns (e.g. high pierced a level then close reclaimed)."
                    },
                    "timeframeMinutes": {
                      "type": "integer",
                      "description": "Chart timeframe (5, 15, 60, 240, or 1440 minutes) the lookback resolves against. `lookback: 0` returns the live ticker price (timeframe-independent); `lookback >= 1` returns the chosen `field` of bar N back on this timeframe."
                    },
                    "lookback": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 20,
                      "description": "How many bars back to look. 0 = latest bar, 1 = one bar ago, etc. Max 20."
                    }
                  },
                  "required": [
                    "kind",
                    "field",
                    "timeframeMinutes",
                    "lookback"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "constant"
                    },
                    "value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "kind",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "indicator"
                    },
                    "name": {
                      "type": "string",
                      "description": "Indicator name. One of: SMA20, SMA50, EMA, RSI, ADX, MACD, BBANDS, ATR, ATR_PCT, VWAP, OBV, OBV_CHANGE, LAST_DAY_HIGH, LAST_DAY_LOW, LAST_WEEK_HIGH, LAST_WEEK_LOW, SWING_HIGH, SWING_LOW, BOS, CHOCH, DISPLACEMENT, VOLUME_PROFILE, DEALING_RANGE."
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "value",
                        "signal",
                        "histogram",
                        "upper",
                        "middle",
                        "lower",
                        "poc",
                        "vah",
                        "val",
                        "equilibrium",
                        "premium_pct"
                      ],
                      "description": "Sub-field for composite indicators: MACD uses signal/histogram, BBANDS uses upper/middle/lower, VOLUME_PROFILE uses poc/vah/val, DEALING_RANGE uses equilibrium/premium_pct. Use value for scalar indicators."
                    },
                    "timeframeMinutes": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
                      "description": "Chart timeframe: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                    },
                    "lookback": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/lookback"
                    },
                    "params": {
                      "type": "object",
                      "properties": {
                        "wing": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 10
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Pivot wing for SWING_HIGH/SWING_LOW/BOS/CHOCH/DEALING_RANGE: bars required on each side to confirm a pivot. Default 3. Smaller (1–2) = short-term structure, larger (4–10) = major swings only."
                        },
                        "atrMult": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0.5,
                              "maximum": 5
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "ATR(14) multiplier for DISPLACEMENT: bar range must exceed atrMult × ATR to count as displacement. Default 1.5."
                        },
                        "lookbackBars": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 10,
                              "maximum": 100
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Rolling window length for VOLUME_PROFILE (bars ending at the current closed bar). Default 48. Must fit the entry-rules indicator window (≤100)."
                        }
                      },
                      "required": [
                        "wing",
                        "atrMult",
                        "lookbackBars"
                      ],
                      "additionalProperties": false,
                      "description": "Optional indicator parameters (e.g. swing pivot wing, VOLUME_PROFILE lookbackBars). Empty object = defaults."
                    }
                  },
                  "required": [
                    "kind",
                    "name",
                    "field",
                    "timeframeMinutes",
                    "lookback",
                    "params"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "zone"
                    },
                    "zoneType": {
                      "type": "string",
                      "enum": [
                        "fvg_bull",
                        "fvg_bear",
                        "ob_bull",
                        "ob_bear"
                      ],
                      "description": "fvg_bull/fvg_bear = 3-candle fair value gap (imbalance). ob_bull/ob_bear = last opposite-close candle before a displacement bar (order block)."
                    },
                    "state": {
                      "type": "string",
                      "enum": [
                        "open",
                        "tapped",
                        "mitigated"
                      ],
                      "description": "Which zones to consider: open = untouched, tapped = wick entered but no close through, mitigated = closed beyond the far edge. Default open."
                    },
                    "field": {
                      "type": "string",
                      "enum": [
                        "top",
                        "bottom",
                        "mid"
                      ],
                      "description": "Zone price level: top or bottom edge, or mid (midpoint — the FVG 'consequent encroachment'). Default mid."
                    },
                    "timeframeMinutes": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
                      "description": "Chart timeframe the zone detection runs on: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                    },
                    "lookback": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/lookback"
                    }
                  },
                  "required": [
                    "kind",
                    "zoneType",
                    "state",
                    "field",
                    "timeframeMinutes",
                    "lookback"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "derived"
                    },
                    "fn": {
                      "type": "string",
                      "enum": [
                        "spread",
                        "ratio",
                        "abs_distance_pct"
                      ],
                      "description": "spread = a - b (same units as inputs). ratio = a / b (fails when b is 0). abs_distance_pct = |a - b| / |b| * 100 (percent points — same scale as ATR_PCT and SL/TP)."
                    },
                    "a": {
                      "anyOf": [
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/1"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/2"
                        },
                        {
                          "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/3"
                        }
                      ],
                      "description": "First input — a primitive operand (price, indicator, or constant). No nesting."
                    },
                    "b": {
                      "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/4/properties/a",
                      "description": "Second input — a primitive operand (price, indicator, or constant). No nesting."
                    }
                  },
                  "required": [
                    "kind",
                    "fn",
                    "a",
                    "b"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "op": {
              "type": "string",
              "enum": [
                "gt",
                "lt",
                "gte",
                "lte",
                "crosses_above",
                "crosses_below"
              ],
              "description": "Comparison operator. crosses_above/crosses_below require previous bar context."
            },
            "right": {
              "$ref": "#/properties/condition/anyOf/0/properties/left"
            }
          },
          "required": [
            "kind",
            "left",
            "op",
            "right"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "time_window"
            },
            "startUtc": {
              "type": "string",
              "description": "Window start, inclusive (e.g. \"09:30\" for the New York killzone open)."
            },
            "endUtc": {
              "$ref": "#/properties/condition/anyOf/1/properties/startUtc",
              "description": "Window end, exclusive. Earlier than startUtc = overnight window (e.g. \"02:00\" with start \"22:00\"). Equal to startUtc = always in window."
            },
            "timeframeMinutes": {
              "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
              "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for killzone precision."
            }
          },
          "required": [
            "kind",
            "startUtc",
            "endUtc",
            "timeframeMinutes"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "day_of_week"
            },
            "days": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "sun",
                  "mon",
                  "tue",
                  "wed",
                  "thu",
                  "fri",
                  "sat"
                ]
              },
              "minItems": 1,
              "maxItems": 7,
              "description": "Allowed UTC weekdays (e.g. omit \"fri\" to skip Friday)."
            },
            "timeframeMinutes": {
              "$ref": "#/properties/condition/anyOf/0/properties/left/anyOf/0/properties/timeframeMinutes",
              "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for precision."
            }
          },
          "required": [
            "kind",
            "days",
            "timeframeMinutes"
          ],
          "additionalProperties": false
        }
      ],
      "description": "Translator-shaped replacement condition."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "id",
    "condition"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_entry_gate(id, strategy_id)

Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Gate id from get_experiment.rules.entry."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡patch_position(position, strategy_id)

Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenAwf does not call an LLM. No prose text.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "position": {
      "type": "object",
      "properties": {
        "usdAmount": {
          "type": "number",
          "minimum": 0,
          "description": "Fixed USD notional when the rule fires. Use 0 when sizing via balancePercent."
        },
        "balancePercent": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Percent of available balance to deploy (0–100 scale) when the rule fires. Use 0 when sizing via usdAmount."
        },
        "orderType": {
          "type": "string",
          "enum": [
            "market",
            "limit"
          ]
        },
        "limitPrice": {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Limit price when orderType is limit; null for market orders."
        },
        "expiresInMinutes": {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Limit order TTL in minutes; null when not used."
        },
        "usedTechnicalAnalysisIndicators": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indicators that justify this entry (one of: SMA20, SMA50, EMA, RSI, ADX, MACD, BBANDS, ATR, ATR_PCT, VWAP, OBV, OBV_CHANGE, LAST_DAY_HIGH, LAST_DAY_LOW, LAST_WEEK_HIGH, LAST_WEEK_LOW, SWING_HIGH, SWING_LOW, BOS, CHOCH, DISPLACEMENT, VOLUME_PROFILE, DEALING_RANGE) — use [] when none. Never list zone types (fvg_bull, fvg_bear, ob_bull, ob_bear); those belong on zone operands."
        }
      },
      "required": [
        "usdAmount",
        "balancePercent",
        "orderType",
        "limitPrice",
        "expiresInMinutes",
        "usedTechnicalAnalysisIndicators"
      ],
      "additionalProperties": false,
      "description": "Full replace of rules.position (not a merge). Every key required. usdAmount XOR balancePercent (unused = 0). orderType = market|limit. limitPrice + expiresInMinutes = number | null (null unless limit). usedTechnicalAnalysisIndicators = string[] ([] if none; never zone types)."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "position"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡patch_exit(exit, strategy_id)

Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenAwf does not call an LLM. No prose text.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "exit": {
      "type": "object",
      "properties": {
        "stopLossPercentage": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Fixed stop/TP distance on the 0–100 scale (original shape)."
            },
            {
              "type": "object",
              "properties": {
                "source": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "price"
                        },
                        "field": {
                          "type": "string",
                          "enum": [
                            "open",
                            "high",
                            "low",
                            "close"
                          ],
                          "description": "Bar field: open, high, low, or close (default close). Ignored at `lookback: 0` (live ticker). At `lookback >= 1` returns this OHLC field of bar N back — enables wick/rejection patterns (e.g. high pierced a level then close reclaimed)."
                        },
                        "timeframeMinutes": {
                          "type": "integer",
                          "description": "Chart timeframe (5, 15, 60, 240, or 1440 minutes) the lookback resolves against. `lookback: 0` returns the live ticker price (timeframe-independent); `lookback >= 1` returns the chosen `field` of bar N back on this timeframe."
                        },
                        "lookback": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 20,
                          "description": "How many bars back to look. 0 = latest bar, 1 = one bar ago, etc. Max 20."
                        }
                      },
                      "required": [
                        "kind",
                        "field",
                        "timeframeMinutes",
                        "lookback"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "constant"
                        },
                        "value": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "indicator"
                        },
                        "name": {
                          "type": "string",
                          "description": "Indicator name. One of: SMA20, SMA50, EMA, RSI, ADX, MACD, BBANDS, ATR, ATR_PCT, VWAP, OBV, OBV_CHANGE, LAST_DAY_HIGH, LAST_DAY_LOW, LAST_WEEK_HIGH, LAST_WEEK_LOW, SWING_HIGH, SWING_LOW, BOS, CHOCH, DISPLACEMENT, VOLUME_PROFILE, DEALING_RANGE."
                        },
                        "field": {
                          "type": "string",
                          "enum": [
                            "value",
                            "signal",
                            "histogram",
                            "upper",
                            "middle",
                            "lower",
                            "poc",
                            "vah",
                            "val",
                            "equilibrium",
                            "premium_pct"
                          ],
                          "description": "Sub-field for composite indicators: MACD uses signal/histogram, BBANDS uses upper/middle/lower, VOLUME_PROFILE uses poc/vah/val, DEALING_RANGE uses equilibrium/premium_pct. Use value for scalar indicators."
                        },
                        "timeframeMinutes": {
                          "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/timeframeMinutes",
                          "description": "Chart timeframe: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                        },
                        "lookback": {
                          "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/lookback"
                        },
                        "params": {
                          "type": "object",
                          "properties": {
                            "wing": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 10
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Pivot wing for SWING_HIGH/SWING_LOW/BOS/CHOCH/DEALING_RANGE: bars required on each side to confirm a pivot. Default 3. Smaller (1–2) = short-term structure, larger (4–10) = major swings only."
                            },
                            "atrMult": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "minimum": 0.5,
                                  "maximum": 5
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "ATR(14) multiplier for DISPLACEMENT: bar range must exceed atrMult × ATR to count as displacement. Default 1.5."
                            },
                            "lookbackBars": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 10,
                                  "maximum": 100
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Rolling window length for VOLUME_PROFILE (bars ending at the current closed bar). Default 48. Must fit the entry-rules indicator window (≤100)."
                            }
                          },
                          "required": [
                            "wing",
                            "atrMult",
                            "lookbackBars"
                          ],
                          "additionalProperties": false,
                          "description": "Optional indicator parameters (e.g. swing pivot wing, VOLUME_PROFILE lookbackBars). Empty object = defaults."
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "field",
                        "timeframeMinutes",
                        "lookback",
                        "params"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "zone"
                        },
                        "zoneType": {
                          "type": "string",
                          "enum": [
                            "fvg_bull",
                            "fvg_bear",
                            "ob_bull",
                            "ob_bear"
                          ],
                          "description": "fvg_bull/fvg_bear = 3-candle fair value gap (imbalance). ob_bull/ob_bear = last opposite-close candle before a displacement bar (order block)."
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "open",
                            "tapped",
                            "mitigated"
                          ],
                          "description": "Which zones to consider: open = untouched, tapped = wick entered but no close through, mitigated = closed beyond the far edge. Default open."
                        },
                        "field": {
                          "type": "string",
                          "enum": [
                            "top",
                            "bottom",
                            "mid"
                          ],
                          "description": "Zone price level: top or bottom edge, or mid (midpoint — the FVG 'consequent encroachment'). Default mid."
                        },
                        "timeframeMinutes": {
                          "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/timeframeMinutes",
                          "description": "Chart timeframe the zone detection runs on: 5, 15, 60, 240 (4h), or 1440 (daily) minutes."
                        },
                        "lookback": {
                          "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/lookback"
                        }
                      },
                      "required": [
                        "kind",
                        "zoneType",
                        "state",
                        "field",
                        "timeframeMinutes",
                        "lookback"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "derived"
                        },
                        "fn": {
                          "type": "string",
                          "enum": [
                            "spread",
                            "ratio",
                            "abs_distance_pct"
                          ],
                          "description": "spread = a - b (same units as inputs). ratio = a / b (fails when b is 0). abs_distance_pct = |a - b| / |b| * 100 (percent points — same scale as ATR_PCT and SL/TP)."
                        },
                        "a": {
                          "anyOf": [
                            {
                              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0"
                            },
                            {
                              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/1"
                            },
                            {
                              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/2"
                            },
                            {
                              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/3"
                            }
                          ],
                          "description": "First input — a primitive operand (price, indicator, or constant). No nesting."
                        },
                        "b": {
                          "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/4/properties/a",
                          "description": "Second input — a primitive operand (price, indicator, or constant). No nesting."
                        }
                      },
                      "required": [
                        "kind",
                        "fn",
                        "a",
                        "b"
                      ],
                      "additionalProperties": false
                    }
                  ],
                  "description": "Operand resolved at rule-fire time (latest fully closed bar). Any indicator, price field, or derived expression."
                },
                "op": {
                  "type": "string",
                  "enum": [
                    "multiply",
                    "add"
                  ],
                  "description": "multiply = resolved(source) × value; add = resolved(source) + value."
                },
                "value": {
                  "type": "number",
                  "description": "Multiplier or addend applied after resolving source."
                },
                "minPercentage": {
                  "anyOf": [
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Floor on the resolved 0–100 distance after op. Null disables."
                },
                "maxPercentage": {
                  "anyOf": [
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Ceiling on the resolved 0–100 distance after op. Null disables."
                },
                "fallbackPercentage": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "Fixed 0–100 distance used when source resolves null (indicator warmup)."
                }
              },
              "required": [
                "source",
                "op",
                "value",
                "minPercentage",
                "maxPercentage",
                "fallbackPercentage"
              ],
              "additionalProperties": false
            }
          ],
          "description": "Stop-loss distance from entry on the 0–100 scale, or a dynamic expression resolved at fire time. 0 disables SL."
        },
        "takeProfitPercentage": {
          "anyOf": [
            {
              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/0"
            },
            {
              "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1"
            }
          ],
          "description": "Take-profit distance from entry on the 0–100 scale, or a dynamic expression resolved at fire time."
        },
        "partialExitsAt": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "pricePercentage": {
                    "type": "number",
                    "exclusiveMinimum": -1,
                    "exclusiveMaximum": 1,
                    "description": "Signed decimal move from entry (-1 to 1). Percent as fraction: -0.005 = -0.5%, 0.03 = +3%. Not the 0–100 scale used by stopLossPercentage."
                  },
                  "exitAmountFraction": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "exclusiveMaximum": 1,
                    "description": "Fraction of the remaining position to liquidate when this level is hit"
                  }
                },
                "required": [
                  "pricePercentage",
                  "exitAmountFraction"
                ],
                "additionalProperties": false
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Ladder of partial exits. Null means no partial exits."
        },
        "trail": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              },
              "minItems": 2,
              "maxItems": 2
            },
            {
              "type": "null"
            }
          ],
          "description": "Trail config: [fire, extend]. Null disables. extend > 0 chains (re-arm after each bump); extend = 0 locks SL at the fire price once then clears. fire = fraction of current TP distance (0–1 exclusive); extend = TP multiplier add-on (0 = fire-price lock one-shot)."
        },
        "breakevenAfterMinutes": {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Soft TTL: minutes after open at which the engine intervenes. If the trade is in profit, it closes at market to lock in the gain. If underwater, SL moves to break-even. Null disables."
        },
        "maxHoldMinutes": {
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Hard TTL: force close at market after this many minutes regardless of PnL. Null disables."
        },
        "signalExit": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "long": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "const": "comparison"
                          },
                          "left": {
                            "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source"
                          },
                          "op": {
                            "type": "string",
                            "enum": [
                              "gt",
                              "lt",
                              "gte",
                              "lte",
                              "crosses_above",
                              "crosses_below"
                            ],
                            "description": "Comparison operator. crosses_above/crosses_below require previous bar context."
                          },
                          "right": {
                            "$ref": "#/properties/exit/properties/signalExit/anyOf/0/properties/long/items/anyOf/0/properties/left"
                          }
                        },
                        "required": [
                          "kind",
                          "left",
                          "op",
                          "right"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "const": "time_window"
                          },
                          "startUtc": {
                            "type": "string",
                            "description": "Window start, inclusive (e.g. \"09:30\" for the New York killzone open)."
                          },
                          "endUtc": {
                            "$ref": "#/properties/exit/properties/signalExit/anyOf/0/properties/long/items/anyOf/1/properties/startUtc",
                            "description": "Window end, exclusive. Earlier than startUtc = overnight window (e.g. \"02:00\" with start \"22:00\"). Equal to startUtc = always in window."
                          },
                          "timeframeMinutes": {
                            "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/timeframeMinutes",
                            "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for killzone precision."
                          }
                        },
                        "required": [
                          "kind",
                          "startUtc",
                          "endUtc",
                          "timeframeMinutes"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "const": "day_of_week"
                          },
                          "days": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "sun",
                                "mon",
                                "tue",
                                "wed",
                                "thu",
                                "fri",
                                "sat"
                              ]
                            },
                            "minItems": 1,
                            "maxItems": 7,
                            "description": "Allowed UTC weekdays (e.g. omit \"fri\" to skip Friday)."
                          },
                          "timeframeMinutes": {
                            "$ref": "#/properties/exit/properties/stopLossPercentage/anyOf/1/properties/source/anyOf/0/properties/timeframeMinutes",
                            "description": "Chart timeframe whose latest closed bar provides the clock. Use 5 or 15 for precision."
                          }
                        },
                        "required": [
                          "kind",
                          "days",
                          "timeframeMinutes"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  }
                },
                "short": {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/exit/properties/signalExit/anyOf/0/properties/long/items"
                  }
                }
              },
              "required": [
                "long",
                "short"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional indicator-based exit: closes the position at market when these conditions fire (evaluated on the same cadence as entries). Same condition shape as entry blocks. Use for mean-reversion targets (e.g. close crosses VWAP) or thesis-invalidation exits instead of relying only on fixed TP. Null disables."
        }
      },
      "required": [
        "stopLossPercentage",
        "takeProfitPercentage",
        "partialExitsAt",
        "trail",
        "breakevenAfterMinutes",
        "maxHoldMinutes",
        "signalExit"
      ],
      "additionalProperties": false,
      "description": "Full replace of rules.exit (not a merge). Every key required — null disables: stopLossPercentage + takeProfitPercentage = 0–100 number OR {source,op,value,fallbackPercentage,minPercentage,maxPercentage}; partialExitsAt = [{pricePercentage, exitAmountFraction}] | null (pricePercentage is a decimal fraction: 0.03 = +3%, NOT the 0–100 SL/TP scale); trail = [fire, extend] | null (fire in (0,1), extend >= 0; NOT {fire,extend}); breakevenAfterMinutes + maxHoldMinutes = number | null; signalExit = {long, short} condition arrays | null. Cooldown lives on the rules root (op=patch_cooldown), not here."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "exit"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡patch_cooldown(cooldownMinutes, strategy_id)

Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenAwf does not call an LLM. No prose text.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "cooldownMinutes": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0
        },
        {
          "type": "null"
        }
      ],
      "description": "Root cooldownMinutes, or null to clear."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "cooldownMinutes"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_strategies(limit, offset, strategy_id)

Ids, @R# refs, and backtest headlines for strategies not currently open.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_backtests(iteration_ref, strategy_id)

Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "iteration_ref": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Optional @R#. Omit to retrieve backtests across all iterations."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "additionalProperties": false,
  "description": "@B# rows with window, PnL, trades, DD, tape_stripped.",
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_backtest(ref, force, config, strategy_id)

Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM; you analyze. Same @R# + window → cached @B# (identical stats; follow the comment). After any mutate pass that result's dsl_ref. If you changed rules behind the same R#/draft, or suspect a stale cached @B#, pass force:true to force a fresh sim — never extrapolate from a cached B# of a different rules state.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "@R# to sim. After mutate use that result's dsl_ref, not the Live-rules header."
    },
    "force": {
      "type": "boolean",
      "description": "Skip the cache and force a fresh sim for this @R# + window. Use after any rule change on the same R#/draft, or whenever a cached B# is suspect."
    },
    "config": {
      "type": "object",
      "properties": {
        "asset": {
          "type": "string",
          "enum": [
            "BTC",
            "ETH",
            "SOL",
            "XRP",
            "BNB",
            "LTC",
            "LINK",
            "DOGE",
            "PEPE",
            "SHIB",
            "SPY",
            "QQQ",
            "IWM",
            "DIA",
            "VOO",
            "XLF",
            "XLE",
            "XLK",
            "XLV",
            "XLP",
            "XLY",
            "XLU",
            "XLI",
            "XLB",
            "XLRE",
            "XLC",
            "SMH",
            "ARKK",
            "GLD",
            "SLV",
            "TLT",
            "HYG",
            "EEM",
            "AAPL",
            "MSFT",
            "GOOGL",
            "AMZN",
            "NVDA",
            "META",
            "TSLA",
            "AVGO",
            "ORCL",
            "ADBE",
            "CRM",
            "AMD",
            "QCOM",
            "TXN",
            "INTC",
            "INTU",
            "IBM",
            "NOW",
            "AMAT",
            "MU",
            "ARM",
            "MRVL",
            "PANW",
            "CRWD",
            "DDOG",
            "NET",
            "SNOW",
            "PLTR",
            "SMCI",
            "DELL",
            "APP",
            "SHOP",
            "UBER",
            "ABNB",
            "NFLX",
            "COIN",
            "HOOD",
            "PYPL",
            "JPM",
            "BAC",
            "WFC",
            "C",
            "GS",
            "MS",
            "V",
            "MA",
            "AXP",
            "SCHW",
            "BLK",
            "SPGI",
            "CME",
            "COF",
            "UNH",
            "JNJ",
            "LLY",
            "PFE",
            "MRK",
            "ABBV",
            "TMO",
            "ABT",
            "AMGN",
            "ISRG",
            "MDT",
            "BMY",
            "GILD",
            "CVS",
            "WMT",
            "COST",
            "HD",
            "MCD",
            "NKE",
            "SBUX",
            "TGT",
            "LOW",
            "PG",
            "KO",
            "PEP",
            "PM",
            "MO",
            "CL",
            "EL",
            "DIS",
            "BKNG",
            "MAR",
            "CAT",
            "DE",
            "BA",
            "GE",
            "HON",
            "UPS",
            "RTX",
            "LMT",
            "XOM",
            "CVX",
            "COP",
            "SLB",
            "NEE",
            "DUK",
            "SO",
            "F",
            "T",
            "VZ",
            "CMCSA",
            "TMUS",
            "XAUUSD",
            "XAGUSD"
          ],
          "description": "Single symbol to sim (e.g. BTC)."
        },
        "start_date": {
          "type": "string",
          "format": "date-time"
        },
        "end_date": {
          "type": "string",
          "format": "date-time"
        },
        "initial_balance": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "max_drawdown": {
          "type": "number",
          "minimum": 0.01,
          "maximum": 100
        }
      },
      "required": [
        "asset",
        "start_date",
        "end_date",
        "initial_balance",
        "max_drawdown"
      ],
      "additionalProperties": false,
      "description": "Window + capital. Omit to reuse the previous run. Do not send empty strings or zeros."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_trades(ref, page, sort, strategy_id)

One page of fills (20 per page): trade_id, side, prices, PnL.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Backtest @B# ref (e.g. B3 or @B3)."
    },
    "page": {
      "type": "integer",
      "minimum": 1
    },
    "sort": {
      "type": "string",
      "enum": [
        "open_date",
        "pnl"
      ]
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "ref",
    "page",
    "sort"
  ],
  "additionalProperties": false,
  "description": "One page of tape fills (20/page).",
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_experiment(ref, strategy_id)

Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mutate args.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "DSL iteration ref @R# (e.g. R2 or @R2)."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪diff_dsl(ref_a, ref_b, strategy_id)

Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer one.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ref_a": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "First @R# to compare (older / baseline)."
    },
    "ref_b": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Second @R# to compare (newer)."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "ref_a",
    "ref_b"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_market_context_by_date(symbol, date, time_frame, strategy_id)

OHLCV and cited indicators around that date (engine lookback each side).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "XRP",
        "BNB",
        "LTC",
        "LINK",
        "DOGE",
        "PEPE",
        "SHIB",
        "SPY",
        "QQQ",
        "IWM",
        "DIA",
        "VOO",
        "XLF",
        "XLE",
        "XLK",
        "XLV",
        "XLP",
        "XLY",
        "XLU",
        "XLI",
        "XLB",
        "XLRE",
        "XLC",
        "SMH",
        "ARKK",
        "GLD",
        "SLV",
        "TLT",
        "HYG",
        "EEM",
        "AAPL",
        "MSFT",
        "GOOGL",
        "AMZN",
        "NVDA",
        "META",
        "TSLA",
        "AVGO",
        "ORCL",
        "ADBE",
        "CRM",
        "AMD",
        "QCOM",
        "TXN",
        "INTC",
        "INTU",
        "IBM",
        "NOW",
        "AMAT",
        "MU",
        "ARM",
        "MRVL",
        "PANW",
        "CRWD",
        "DDOG",
        "NET",
        "SNOW",
        "PLTR",
        "SMCI",
        "DELL",
        "APP",
        "SHOP",
        "UBER",
        "ABNB",
        "NFLX",
        "COIN",
        "HOOD",
        "PYPL",
        "JPM",
        "BAC",
        "WFC",
        "C",
        "GS",
        "MS",
        "V",
        "MA",
        "AXP",
        "SCHW",
        "BLK",
        "SPGI",
        "CME",
        "COF",
        "UNH",
        "JNJ",
        "LLY",
        "PFE",
        "MRK",
        "ABBV",
        "TMO",
        "ABT",
        "AMGN",
        "ISRG",
        "MDT",
        "BMY",
        "GILD",
        "CVS",
        "WMT",
        "COST",
        "HD",
        "MCD",
        "NKE",
        "SBUX",
        "TGT",
        "LOW",
        "PG",
        "KO",
        "PEP",
        "PM",
        "MO",
        "CL",
        "EL",
        "DIS",
        "BKNG",
        "MAR",
        "CAT",
        "DE",
        "BA",
        "GE",
        "HON",
        "UPS",
        "RTX",
        "LMT",
        "XOM",
        "CVX",
        "COP",
        "SLB",
        "NEE",
        "DUK",
        "SO",
        "F",
        "T",
        "VZ",
        "CMCSA",
        "TMUS",
        "XAUUSD",
        "XAGUSD"
      ]
    },
    "date": {
      "type": "string",
      "format": "date-time"
    },
    "time_frame": {
      "type": "number",
      "enum": [
        1,
        5,
        15,
        30,
        60,
        240,
        1440
      ],
      "description": "OHLCV timeframe in minutes: 1, 5, 15, 30, 60, 240, 1440."
    },
    "strategy_id": {
      "type": "string",
      "minLength": 1,
      "description": "Strategy id. Prefer always: routes to that Lab tab, and NO_ACTIVE_LAB errors include a direct Lab URL to open."
    }
  },
  "required": [
    "symbol",
    "date",
    "time_frame"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Empfohlene Prompts

list_items
List all [items] available in BenAwf
Erwartete Tools: list_iterations
explore_workflow
List available [items], then get details for each one using BenAwf
Erwartete Tools: list_iterationsget_lineage
fetch_info
Fetch [information type] using BenAwf
Erwartete Tools: get_lineage
retrieve_data
Get details about [item] from BenAwf
Erwartete Tools: get_lineage
browse_collection
Show me the [collection] from BenAwf
Erwartete Tools: list_iterations

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet16 Tools
verifiziertVersion nicht aufgezeichnet16 Tools