feat(Session 241): Add scale-out MCP tools
Position Exit Management System support: - scale_out_status: Service status and statistics - scale_out_pending: Positions awaiting scale-out - scale_out_stats: Execution statistics - scale_out_set_dry_run: Toggle dry-run mode Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -385,6 +385,33 @@ async def list_tools() -> list[Tool]:
|
|||||||
description="Find duplicate pending orders (same instrument + rate + direction). Returns order IDs to cancel.",
|
description="Find duplicate pending orders (same instrument + rate + direction). Returns order IDs to cancel.",
|
||||||
inputSchema={"type": "object", "properties": {}, "required": []},
|
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||||
),
|
),
|
||||||
|
# === SCALE-OUT (Session 241: Position Exit Management) ===
|
||||||
|
Tool(
|
||||||
|
name="scale_out_status",
|
||||||
|
description="Get scale-out monitor service status (running, dry-run mode, statistics)",
|
||||||
|
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||||
|
),
|
||||||
|
Tool(
|
||||||
|
name="scale_out_pending",
|
||||||
|
description="Get positions pending scale-out (haven't had 50% partial close executed yet)",
|
||||||
|
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||||
|
),
|
||||||
|
Tool(
|
||||||
|
name="scale_out_stats",
|
||||||
|
description="Get scale-out statistics (total, executed, pending, P/L locked)",
|
||||||
|
inputSchema={"type": "object", "properties": {}, "required": []},
|
||||||
|
),
|
||||||
|
Tool(
|
||||||
|
name="scale_out_set_dry_run",
|
||||||
|
description="Enable or disable scale-out dry-run mode. In dry-run, scale-outs are logged but not executed.",
|
||||||
|
inputSchema={
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"dry_run": {"type": "boolean", "description": "True to enable dry-run (log only), False to enable live execution"},
|
||||||
|
},
|
||||||
|
"required": ["dry_run"],
|
||||||
|
},
|
||||||
|
),
|
||||||
# === CONTAINER OPERATIONS ===
|
# === CONTAINER OPERATIONS ===
|
||||||
Tool(
|
Tool(
|
||||||
name="container_logs",
|
name="container_logs",
|
||||||
@@ -578,6 +605,15 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]:
|
|||||||
result = await api_post("/api/trade/orders/cancel-bulk", {"order_ids": order_ids})
|
result = await api_post("/api/trade/orders/cancel-bulk", {"order_ids": order_ids})
|
||||||
case "find_duplicate_orders":
|
case "find_duplicate_orders":
|
||||||
result = await api_get("/api/trade/orders/duplicates")
|
result = await api_get("/api/trade/orders/duplicates")
|
||||||
|
# === SCALE-OUT (Session 241) ===
|
||||||
|
case "scale_out_status":
|
||||||
|
result = await api_get("/api/trade/scale-out/status")
|
||||||
|
case "scale_out_pending":
|
||||||
|
result = await api_get("/api/trade/scale-out/pending")
|
||||||
|
case "scale_out_stats":
|
||||||
|
result = await api_get("/api/trade/scale-out/stats")
|
||||||
|
case "scale_out_set_dry_run":
|
||||||
|
result = await api_post("/api/trade/scale-out/dry-run", {"dry_run": arguments["dry_run"]})
|
||||||
# === CONTAINER OPERATIONS ===
|
# === CONTAINER OPERATIONS ===
|
||||||
case "container_logs":
|
case "container_logs":
|
||||||
params = [f"container={arguments['container']}"]
|
params = [f"container={arguments['container']}"]
|
||||||
|
|||||||
Reference in New Issue
Block a user