{
  "ok": true,
  "message": "Use /trigger, /trailing or /order with an explicit MT5 lot quantity (percent for ratio exits).",
  "side_values": [
    "long",
    "short"
  ],
  "examples": [
    "http://127.0.0.1:18081/trigger/long/BTCUSD/0.01/1/65000/65500/64000?dry_run=1",
    "http://127.0.0.1:18081/trailing/long/BTCUSD/0.01/1/64500/65000/65500/64000?dry_run=1",
    "http://127.0.0.1:18081/order/long/BTCUSD/0.01/65000?dry_run=1",
    "http://127.0.0.1:18081/order/exitlong/BTCUSD/0.01/65000?dry_run=1",
    "http://127.0.0.1:18081/order/exitshortratio/BTCUSD/50/65000?dry_run=1"
  ],
  "market_actions": [
    "exitlong",
    "exitlongratio",
    "exitshort",
    "exitshortratio",
    "long",
    "short"
  ],
  "configured_routes": [
    {
      "symbol": "NAS100",
      "broker": "Infinox"
    },
    {
      "symbol": "XAUUSD",
      "broker": "Vantage"
    },
    {
      "symbol": "BTCUSD",
      "broker": "Infinox"
    }
  ],
  "rules": {
    "side": "long or short",
    "long": "tp > entry > sl",
    "short": "tp < entry < sl",
    "trailing_long": "sl < activation < entry < tp",
    "trailing_short": "tp < entry < activation < sl",
    "routing": "only broker and symbol are loaded from the saved three-slot route grid; no configured lot",
    "accountSize": "MT5 lot quantity from the URL; no price or leverage conversion",
    "leverage": "ignored; common URL compatibility only, never used for MT5 orders or account settings",
    "legacy": "quantity-less URLs are rejected; use the new common URL formats",
    "market_quantity": "long/short enter the requested lot; exitlong/exitshort close the requested lot, never more than held",
    "market_ratio": "exitlongratio/exitshortratio use 0-100 percent; 0 is a no-op; round down to volume_step; below minimum is rejected",
    "market_close_scope": "routed broker, symbol and direction only; multiple matching positions are rejected; no match is a no-op",
    "reference_price": "positive reference price only; market orders execute at the current MT5 quote, without TP/SL",
    "trailing": "fixed EP STOP with TP/SL after activation; cancel the pending ticket if SL is reached before entry",
    "ignored": "symbols not present in the route table are logged and ignored",
    "dry_run": "append ?dry_run=1 to validate without sending an order",
    "trailing_dry_run": "validate geometry, broker, symbol and lot only; no tracking; order_check is deferred until activation"
  },
  "pending_orders": {
    "status": "GET http://127.0.0.1:18081/pending (includes open-position counts)",
    "cancel_broker": "POST http://127.0.0.1:18081/pending/cancel/<broker>",
    "cancel_all": "POST http://127.0.0.1:18081/pending/cancel-all",
    "scope": "all pending orders in each account, without magic-number filtering"
  },
  "gateway_requests": {
    "status": "Included in GET /pending",
    "cancel_waiting": "POST http://127.0.0.1:18081/gateway/cancel/<request_id>"
  },
  "positions": {
    "close_broker": "POST http://127.0.0.1:18081/positions/close/<broker>",
    "close_all": "POST http://127.0.0.1:18081/positions/close-all",
    "scope": "all open positions in each account, without magic-number filtering"
  }
}