desic-okx-agent 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.en.md +353 -0
  2. package/README.md +194 -190
  3. package/dist/account/private-websocket.js +4 -4
  4. package/dist/account/private-websocket.js.map +1 -1
  5. package/dist/account/service.d.ts +12 -1
  6. package/dist/account/service.js +18 -0
  7. package/dist/account/service.js.map +1 -1
  8. package/dist/bars/rate-limiter.d.ts +18 -0
  9. package/dist/bars/rate-limiter.js +84 -0
  10. package/dist/bars/rate-limiter.js.map +1 -0
  11. package/dist/bars/schema.d.ts +36 -0
  12. package/dist/bars/schema.js +134 -0
  13. package/dist/bars/schema.js.map +1 -0
  14. package/dist/bars/service.d.ts +60 -0
  15. package/dist/bars/service.js +120 -0
  16. package/dist/bars/service.js.map +1 -0
  17. package/dist/bars/store.d.ts +105 -0
  18. package/dist/bars/store.js +415 -0
  19. package/dist/bars/store.js.map +1 -0
  20. package/dist/bars/timeframe.d.ts +40 -0
  21. package/dist/bars/timeframe.js +146 -0
  22. package/dist/bars/timeframe.js.map +1 -0
  23. package/dist/bars/types.d.ts +68 -0
  24. package/dist/bars/types.js +13 -0
  25. package/dist/bars/types.js.map +1 -0
  26. package/dist/cli/data-render.d.ts +37 -0
  27. package/dist/cli/data-render.js +143 -0
  28. package/dist/cli/data-render.js.map +1 -0
  29. package/dist/cli/doctor.js +7 -3
  30. package/dist/cli/doctor.js.map +1 -1
  31. package/dist/cli/index.js +758 -27
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/live-render.d.ts +24 -0
  34. package/dist/cli/live-render.js +85 -0
  35. package/dist/cli/live-render.js.map +1 -0
  36. package/dist/cli/range.d.ts +28 -0
  37. package/dist/cli/range.js +63 -0
  38. package/dist/cli/range.js.map +1 -0
  39. package/dist/cli/render.js +3 -0
  40. package/dist/cli/render.js.map +1 -1
  41. package/dist/cli/strategy-render.d.ts +36 -0
  42. package/dist/cli/strategy-render.js +391 -0
  43. package/dist/cli/strategy-render.js.map +1 -0
  44. package/dist/cli/width.d.ts +18 -0
  45. package/dist/cli/width.js +71 -0
  46. package/dist/cli/width.js.map +1 -0
  47. package/dist/config/loader.js +1 -1
  48. package/dist/config/schema.d.ts +7 -0
  49. package/dist/config/schema.js +24 -0
  50. package/dist/config/schema.js.map +1 -1
  51. package/dist/core/okx-client.d.ts +9 -1
  52. package/dist/core/okx-client.js +14 -5
  53. package/dist/core/okx-client.js.map +1 -1
  54. package/dist/i18n/locale.d.ts +24 -0
  55. package/dist/i18n/locale.js +65 -0
  56. package/dist/i18n/locale.js.map +1 -0
  57. package/dist/i18n/messages.d.ts +333 -0
  58. package/dist/i18n/messages.js +660 -0
  59. package/dist/i18n/messages.js.map +1 -0
  60. package/dist/live/account-snapshot.d.ts +30 -0
  61. package/dist/live/account-snapshot.js +130 -0
  62. package/dist/live/account-snapshot.js.map +1 -0
  63. package/dist/live/cutoff-queue.d.ts +42 -0
  64. package/dist/live/cutoff-queue.js +69 -0
  65. package/dist/live/cutoff-queue.js.map +1 -0
  66. package/dist/live/execution-key.d.ts +23 -0
  67. package/dist/live/execution-key.js +31 -0
  68. package/dist/live/execution-key.js.map +1 -0
  69. package/dist/live/failures.d.ts +37 -0
  70. package/dist/live/failures.js +57 -0
  71. package/dist/live/failures.js.map +1 -0
  72. package/dist/live/gates.d.ts +65 -0
  73. package/dist/live/gates.js +136 -0
  74. package/dist/live/gates.js.map +1 -0
  75. package/dist/live/loop.d.ts +56 -0
  76. package/dist/live/loop.js +197 -0
  77. package/dist/live/loop.js.map +1 -0
  78. package/dist/live/preconditions.d.ts +48 -0
  79. package/dist/live/preconditions.js +69 -0
  80. package/dist/live/preconditions.js.map +1 -0
  81. package/dist/live/reconcile.d.ts +46 -0
  82. package/dist/live/reconcile.js +104 -0
  83. package/dist/live/reconcile.js.map +1 -0
  84. package/dist/live/runner.d.ts +57 -0
  85. package/dist/live/runner.js +160 -0
  86. package/dist/live/runner.js.map +1 -0
  87. package/dist/live/schema.d.ts +18 -0
  88. package/dist/live/schema.js +91 -0
  89. package/dist/live/schema.js.map +1 -0
  90. package/dist/live/service.d.ts +144 -0
  91. package/dist/live/service.js +303 -0
  92. package/dist/live/service.js.map +1 -0
  93. package/dist/live/session.d.ts +85 -0
  94. package/dist/live/session.js +234 -0
  95. package/dist/live/session.js.map +1 -0
  96. package/dist/live/sizing.d.ts +62 -0
  97. package/dist/live/sizing.js +79 -0
  98. package/dist/live/sizing.js.map +1 -0
  99. package/dist/live/store.d.ts +123 -0
  100. package/dist/live/store.js +350 -0
  101. package/dist/live/store.js.map +1 -0
  102. package/dist/live/types.d.ts +82 -0
  103. package/dist/live/types.js +2 -0
  104. package/dist/live/types.js.map +1 -0
  105. package/dist/market/websocket.d.ts +16 -1
  106. package/dist/market/websocket.js +60 -5
  107. package/dist/market/websocket.js.map +1 -1
  108. package/dist/mcp/server.d.ts +1 -0
  109. package/dist/mcp/server.js +15 -1
  110. package/dist/mcp/server.js.map +1 -1
  111. package/dist/network/connectivity.d.ts +9 -1
  112. package/dist/network/connectivity.js +28 -1
  113. package/dist/network/connectivity.js.map +1 -1
  114. package/dist/report/chart-script.d.ts +12 -0
  115. package/dist/report/chart-script.js +146 -0
  116. package/dist/report/chart-script.js.map +1 -0
  117. package/dist/report/compare-html.d.ts +8 -0
  118. package/dist/report/compare-html.js +254 -0
  119. package/dist/report/compare-html.js.map +1 -0
  120. package/dist/report/compare-script.d.ts +12 -0
  121. package/dist/report/compare-script.js +109 -0
  122. package/dist/report/compare-script.js.map +1 -0
  123. package/dist/report/compare.d.ts +61 -0
  124. package/dist/report/compare.js +205 -0
  125. package/dist/report/compare.js.map +1 -0
  126. package/dist/report/fetch.d.ts +20 -0
  127. package/dist/report/fetch.js +56 -0
  128. package/dist/report/fetch.js.map +1 -0
  129. package/dist/report/html.d.ts +54 -0
  130. package/dist/report/html.js +641 -0
  131. package/dist/report/html.js.map +1 -0
  132. package/dist/report/open.d.ts +42 -0
  133. package/dist/report/open.js +114 -0
  134. package/dist/report/open.js.map +1 -0
  135. package/dist/runtime/server.d.ts +16 -1
  136. package/dist/runtime/server.js +112 -9
  137. package/dist/runtime/server.js.map +1 -1
  138. package/dist/setup/installer.d.ts +1 -0
  139. package/dist/setup/installer.js +8 -0
  140. package/dist/setup/installer.js.map +1 -1
  141. package/dist/setup/wizard.d.ts +3 -0
  142. package/dist/setup/wizard.js +131 -6
  143. package/dist/setup/wizard.js.map +1 -1
  144. package/dist/strategy/constants.d.ts +23 -0
  145. package/dist/strategy/constants.js +24 -0
  146. package/dist/strategy/constants.js.map +1 -0
  147. package/dist/strategy/environment.d.ts +52 -0
  148. package/dist/strategy/environment.js +187 -0
  149. package/dist/strategy/environment.js.map +1 -0
  150. package/dist/strategy/instrument.d.ts +29 -0
  151. package/dist/strategy/instrument.js +39 -0
  152. package/dist/strategy/instrument.js.map +1 -0
  153. package/dist/strategy/optimize.d.ts +73 -0
  154. package/dist/strategy/optimize.js +113 -0
  155. package/dist/strategy/optimize.js.map +1 -0
  156. package/dist/strategy/parameter-space.d.ts +59 -0
  157. package/dist/strategy/parameter-space.js +221 -0
  158. package/dist/strategy/parameter-space.js.map +1 -0
  159. package/dist/strategy/python-bridge.d.ts +24 -0
  160. package/dist/strategy/python-bridge.js +114 -0
  161. package/dist/strategy/python-bridge.js.map +1 -0
  162. package/dist/strategy/schema.d.ts +9 -0
  163. package/dist/strategy/schema.js +91 -0
  164. package/dist/strategy/schema.js.map +1 -0
  165. package/dist/strategy/service.d.ts +138 -0
  166. package/dist/strategy/service.js +745 -0
  167. package/dist/strategy/service.js.map +1 -0
  168. package/dist/strategy/settings.d.ts +162 -0
  169. package/dist/strategy/settings.js +243 -0
  170. package/dist/strategy/settings.js.map +1 -0
  171. package/dist/strategy/store.d.ts +96 -0
  172. package/dist/strategy/store.js +367 -0
  173. package/dist/strategy/store.js.map +1 -0
  174. package/dist/strategy/templates.d.ts +11 -0
  175. package/dist/strategy/templates.js +134 -0
  176. package/dist/strategy/templates.js.map +1 -0
  177. package/dist/strategy/types.d.ts +111 -0
  178. package/dist/strategy/types.js +2 -0
  179. package/dist/strategy/types.js.map +1 -0
  180. package/dist/tools/catalog.d.ts +16 -0
  181. package/dist/tools/catalog.js +118 -17
  182. package/dist/tools/catalog.js.map +1 -1
  183. package/dist/trade/service.d.ts +12 -0
  184. package/dist/trade/service.js +24 -7
  185. package/dist/trade/service.js.map +1 -1
  186. package/dist/tui/app.d.ts +23 -0
  187. package/dist/tui/app.js +322 -0
  188. package/dist/tui/app.js.map +1 -0
  189. package/dist/tui/commands.d.ts +70 -0
  190. package/dist/tui/commands.js +313 -0
  191. package/dist/tui/commands.js.map +1 -0
  192. package/dist/tui/entries.d.ts +17 -0
  193. package/dist/tui/entries.js +24 -0
  194. package/dist/tui/entries.js.map +1 -0
  195. package/dist/tui/execute.d.ts +26 -0
  196. package/dist/tui/execute.js +664 -0
  197. package/dist/tui/execute.js.map +1 -0
  198. package/dist/tui/history.d.ts +17 -0
  199. package/dist/tui/history.js +48 -0
  200. package/dist/tui/history.js.map +1 -0
  201. package/dist/tui/index.d.ts +8 -0
  202. package/dist/tui/index.js +48 -0
  203. package/dist/tui/index.js.map +1 -0
  204. package/dist/tui/line-editor.d.ts +44 -0
  205. package/dist/tui/line-editor.js +98 -0
  206. package/dist/tui/line-editor.js.map +1 -0
  207. package/dist/tui/progress.d.ts +23 -0
  208. package/dist/tui/progress.js +46 -0
  209. package/dist/tui/progress.js.map +1 -0
  210. package/dist/tui/settings-editor.d.ts +18 -0
  211. package/dist/tui/settings-editor.js +115 -0
  212. package/dist/tui/settings-editor.js.map +1 -0
  213. package/docs/live-trading.md +455 -0
  214. package/docs/strategy-research.md +597 -0
  215. package/package.json +11 -1
  216. package/python/desic_strategy/__init__.py +34 -0
  217. package/python/desic_strategy/actions.py +158 -0
  218. package/python/desic_strategy/context.py +164 -0
  219. package/python/desic_strategy/engine.py +614 -0
  220. package/python/desic_strategy/indicators.py +159 -0
  221. package/python/desic_strategy/live.py +253 -0
  222. package/python/desic_strategy/policy.py +193 -0
  223. package/python/desic_strategy/portfolio.py +152 -0
  224. package/python/desic_strategy/report.py +319 -0
  225. package/python/desic_strategy/runner.py +574 -0
  226. package/python/desic_strategy/timeframe.py +150 -0
  227. package/python/main.py +18 -0
  228. package/skills/okx-live-trading/SKILL.md +117 -0
  229. package/skills/okx-live-trading/agents/openai.yaml +9 -0
  230. package/skills/okx-live-trading/references/lifecycle.md +128 -0
  231. package/skills/okx-strategy-research/SKILL.md +113 -0
  232. package/skills/okx-strategy-research/agents/openai.yaml +9 -0
  233. package/skills/okx-strategy-research/references/execution-semantics.md +107 -0
  234. package/skills/okx-strategy-research/references/field-traps.md +142 -0
  235. package/skills/okx-strategy-research/references/python-api.md +121 -0
  236. package/skills/okx-strategy-research/references/tools-and-data.md +192 -0
  237. package/skills/okx-trading/SKILL.md +11 -10
@@ -4,18 +4,34 @@ import type { DerivativesService } from "../derivatives/service.js";
4
4
  import type { IntelligenceService } from "../intelligence/service.js";
5
5
  import type { MarketService } from "../market/service.js";
6
6
  import type { TradeService } from "../trade/service.js";
7
+ import type { BarService } from "../bars/service.js";
8
+ import type { StrategyService } from "../strategy/service.js";
9
+ import type { LiveService } from "../live/service.js";
7
10
  export interface ToolContext {
8
11
  market: MarketService;
9
12
  account: AccountService;
10
13
  derivatives: DerivativesService;
11
14
  intelligence: IntelligenceService;
12
15
  trade: TradeService;
16
+ bars: BarService;
17
+ strategy: StrategyService;
18
+ live: LiveService;
13
19
  }
14
20
  export interface ToolDefinition {
15
21
  name: string;
16
22
  description: string;
17
23
  schema: z.ZodObject;
18
24
  execute: (context: ToolContext, input: Record<string, unknown>) => Promise<unknown>;
25
+ /**
26
+ * Reachable by a person through the CLI, but advertised to MCP clients only when
27
+ * `live.agentAccess` is on.
28
+ *
29
+ * Creating and starting a live profile are the two actions that can commit money to a
30
+ * strategy. They are withheld by default so that installing a version is never what grants
31
+ * an agent that ability; turning the setting on is one explicit act, and turning it off is a
32
+ * kill switch. A real-money profile still requires its own name typed back regardless.
33
+ */
34
+ operatorOnly?: boolean;
19
35
  }
20
36
  export declare const TOOL_CATALOG: ToolDefinition[];
21
37
  export declare function toolByName(name: string): ToolDefinition | undefined;
@@ -1,5 +1,12 @@
1
1
  import { z } from "zod";
2
+ import { MAX_PAGE_ROWS } from "../strategy/constants.js";
3
+ import { DEFAULT_BUDGET, MAX_BUDGET, MIN_COMBINATIONS } from "../strategy/parameter-space.js";
4
+ import { MAX_COMPARED_RUNS, MIN_COMPARED_RUNS } from "../report/compare.js";
2
5
  const InstId = z.string().min(1).describe("OKX instrument ID, for example BTC-USDT-SWAP");
6
+ const SwapInstId = z.string()
7
+ .min(1)
8
+ .refine((value) => value.endsWith("-SWAP"), "Trading tools support only OKX perpetual swap instruments ending in -SWAP")
9
+ .describe("OKX perpetual swap instrument ID ending in -SWAP, for example BTC-USDT-SWAP");
3
10
  const Account = z.string().min(1).optional().describe("Configured account alias; the default account is used when omitted");
4
11
  const ExecutionKey = z.string().min(1).max(128).describe("Stable idempotency key chosen by the caller");
5
12
  const Limit = z.number().int().positive().optional();
@@ -33,6 +40,44 @@ const HistorySchema = z.strictObject({
33
40
  limit: Limit,
34
41
  archive: z.boolean().optional()
35
42
  });
43
+ const PageSchema = z.strictObject({
44
+ runId: z.string().min(1),
45
+ offset: z.number().int().min(0).optional(),
46
+ limit: z.number().int().min(1).max(MAX_PAGE_ROWS).optional()
47
+ });
48
+ const BacktestSchema = z.strictObject({
49
+ instId: InstId,
50
+ source: z.string().min(1).describe("Python strategy source defining on_bar(ctx)"),
51
+ strategyName: z.string().min(1).max(120).optional(),
52
+ params: z.record(z.string(), z.unknown()).optional(),
53
+ intervals: z.array(z.string().min(1)).optional().describe("Higher timeframes to derive, for example [\"15m\"]"),
54
+ fromMs: z.number().int().optional(),
55
+ toMs: z.number().int().optional(),
56
+ days: z.number().int().min(1).max(365).optional(),
57
+ preloadBars: z.number().int().min(2).max(20_000).optional(),
58
+ initialEquityUsdt: z.number().positive().optional(),
59
+ leverage: z.number().min(1).max(125).optional(),
60
+ marginSafetyMultiplier: z.number().min(1).max(20).optional(),
61
+ entryBudgetUsdt: z.number().positive().optional(),
62
+ entryBudgetPct: z.number().positive().max(1).optional(),
63
+ takerFeeRate: z.number().min(0).max(0.01).optional(),
64
+ makerFeeRate: z.number().min(0).max(0.01).optional(),
65
+ entrySlippageBps: z.number().min(0).max(1_000).optional(),
66
+ exitSlippageBps: z.number().min(0).max(1_000).optional(),
67
+ closeAtEnd: z.boolean().optional()
68
+ });
69
+ const OptimizeSchema = BacktestSchema.extend({
70
+ space: z
71
+ .record(z.string(), z.strictObject({ min: z.number(), max: z.number(), step: z.number().positive() }))
72
+ .describe("Per-parameter { min, max, step }. Each key must be a numeric parameter the strategy reads."),
73
+ budget: z
74
+ .number()
75
+ .int()
76
+ .min(MIN_COMBINATIONS)
77
+ .max(MAX_BUDGET)
78
+ .optional()
79
+ .describe(`Candidates to evaluate; defaults to ${DEFAULT_BUDGET}`)
80
+ });
36
81
  const IntelligenceSchema = z.strictObject({
37
82
  account: Account,
38
83
  language: z.string().optional(),
@@ -83,7 +128,7 @@ const SmartSchema = z.strictObject({
83
128
  limit: Limit
84
129
  });
85
130
  const EvaluateSchema = z.strictObject({
86
- instId: InstId,
131
+ instId: SwapInstId,
87
132
  side: z.enum(["buy", "sell"]),
88
133
  size: z.string().min(1),
89
134
  price: z.string().optional(),
@@ -93,7 +138,8 @@ const EvaluateSchema = z.strictObject({
93
138
  const PlaceOrderSchema = z.strictObject({
94
139
  account: Account,
95
140
  executionKey: ExecutionKey,
96
- instId: InstId,
141
+ executabilityOnly: z.boolean().optional().describe("Report snapshot time skew as a warning instead of blocking; every executability check still applies"),
142
+ instId: SwapInstId,
97
143
  tdMode: z.enum(["cash", "cross", "isolated"]),
98
144
  side: z.enum(["buy", "sell"]),
99
145
  posSide: z.enum(["net", "long", "short"]).optional(),
@@ -108,7 +154,7 @@ const BatchOrderItemSchema = PlaceOrderSchema.omit({ account: true, executionKey
108
154
  const PlaceAlgoSchema = z.strictObject({
109
155
  account: Account,
110
156
  executionKey: ExecutionKey,
111
- instId: InstId,
157
+ instId: SwapInstId,
112
158
  tdMode: z.enum(["cash", "cross", "isolated"]),
113
159
  side: z.enum(["buy", "sell"]),
114
160
  posSide: z.enum(["net", "long", "short"]).optional(),
@@ -141,6 +187,54 @@ export const TOOL_CATALOG = [
141
187
  ...derivativeTools(),
142
188
  ...newsTools(),
143
189
  ...smartTools(),
190
+ tool("data_list_instruments", "List locally stored one-minute history with its covered date range per instrument.", z.strictObject({}), async (c) => c.bars.listInstruments()),
191
+ tool("data_coverage", "Read the stored one-minute date range, bar count, and gaps for one instrument.", z.strictObject({ instId: InstId, gapLimit: z.number().int().min(1).max(500).optional() }), async (c, a) => c.bars.coverage(String(a.instId), numberOr(a.gapLimit, 50))),
192
+ tool("data_download", "Download or repair local one-minute history for an exact range. Higher timeframes are derived from it.", z.strictObject({ instId: InstId, days: z.number().int().min(1).optional(), fromMs: z.number().int().optional(), toMs: z.number().int().optional() }), (c, a) => c.bars.download({ instId: String(a.instId), days: a.days, fromMs: a.fromMs, toMs: a.toMs })),
193
+ tool("data_download_progress", "Read current or most recent download progress for one instrument.", z.strictObject({ instId: InstId }), async (c, a) => c.bars.downloadProgress(String(a.instId))),
194
+ tool("strategy_settings", "Read the assumptions every backtest uses by default.", z.strictObject({}), async (c) => c.strategy.readSettings()),
195
+ tool("strategy_settings_update", "Change saved backtest assumptions. Pass only the keys to change.", z.strictObject({ values: z.record(z.string(), z.union([z.number(), z.boolean(), z.string()])), reset: z.boolean().optional() }), async (c, a) => c.strategy.updateSettings(a.values, Boolean(a.reset))),
196
+ tool("strategy_environment", "Report whether the local Python strategy environment is ready.", z.strictObject({}), (c) => c.strategy.environment()),
197
+ tool("strategy_environment_setup", "Create the local Python environment and install its packages.", z.strictObject({}), (c) => c.strategy.setupEnvironment()),
198
+ tool("strategy_validate_source", "Statically validate Python strategy source before running it. Returns violations with line numbers.", z.strictObject({ source: z.string().min(1) }), (c, a) => c.strategy.validate(String(a.source))),
199
+ tool("strategy_run_backtest", "Queue a backtest and return its run id immediately. Poll strategy_get_run for progress.", BacktestSchema, (c, a) => c.strategy.startBacktest(a)),
200
+ tool("strategy_run_optimize", "Queue a parameter search and return its run id immediately. Splits the window 70/30, searches the first part, and ranks by the held-back part so an overfitted candidate cannot win. Poll strategy_get_run, then read strategy_get_optimization.", OptimizeSchema, (c, a) => c.strategy.startOptimize(a)),
201
+ tool("strategy_get_optimization", "Read an optimize run's candidates in rank order, with training and validation metrics side by side.", z.strictObject({ runId: z.string().min(1), top: z.number().int().min(1).max(500).optional() }), async (c, a) => c.strategy.optimization(String(a.runId), numberOr(a.top, 20))),
202
+ tool("strategy_get_run", "Read one strategy run's status, progress, and summary metrics.", z.strictObject({ runId: z.string().min(1) }), async (c, a) => c.strategy.getRun(String(a.runId))),
203
+ tool("strategy_list_runs", "List recent strategy runs, newest first.", z.strictObject({ limit: z.number().int().min(1).max(200).optional(), status: z.enum(["queued", "running", "completed", "failed", "cancelled"]).optional(), instId: InstId.optional() }), async (c, a) => c.strategy.listRuns({ limit: a.limit, status: a.status, instId: optionalString(a.instId) })),
204
+ tool("strategy_get_run_equity", "Read a page of a completed run's equity curve.", PageSchema, async (c, a) => c.strategy.equity(String(a.runId), a.offset, a.limit)),
205
+ tool("strategy_get_run_trades", "Read a page of a completed run's closed trades.", PageSchema, async (c, a) => c.strategy.trades(String(a.runId), a.offset, a.limit)),
206
+ tool("strategy_get_run_actions", "Read a page of the decisions a run's strategy emitted.", PageSchema, async (c, a) => c.strategy.actions(String(a.runId), a.offset, a.limit)),
207
+ tool("strategy_compare_runs", "Compare two or more completed runs. Returns each run's metrics, the assumptions that differ, and warnings when the runs are not directly comparable — different data, instrument, window, or costs.", z.strictObject({ runIds: z.array(z.string().min(1)).min(MIN_COMPARED_RUNS).max(MAX_COMPARED_RUNS) }), async (c, a) => c.strategy.compareRuns(a.runIds)),
208
+ tool("strategy_cancel_run", "Cancel a queued or running strategy run.", z.strictObject({ runId: z.string().min(1) }), async (c, a) => c.strategy.cancel(String(a.runId))),
209
+ tool("strategy_delete_run", "Delete a strategy run and its stored series.", z.strictObject({ runId: z.string().min(1) }), async (c, a) => c.strategy.deleteRun(String(a.runId))),
210
+ // Read-only, plus stop. Creating and enabling a profile are deliberately absent: an agent
211
+ // must not be able to start trading real money on its own, and stopping is the one live
212
+ // action that is always safe.
213
+ tool("live_list_profiles", "List live trading profiles and their state.", z.strictObject({}), async (c) => c.live.listProfiles()),
214
+ tool("live_get_profile", "Read one live profile.", z.strictObject({ profileId: z.string().min(1) }), async (c, a) => c.live.getProfile(String(a.profileId))),
215
+ tool("live_readiness", "Report what blocks a live profile from being started.", z.strictObject({ profileId: z.string().min(1) }), (c, a) => c.live.readiness(String(a.profileId))),
216
+ tool("live_signals", "Read a profile's decisions, including every refusal and the gate that caused it.", z.strictObject({ profileId: z.string().min(1), limit: z.number().int().min(1).max(MAX_PAGE_ROWS).optional() }), async (c, a) => c.live.signals(String(a.profileId), numberOr(a.limit, 50))),
217
+ tool("live_stop", "Disable a live profile. Always permitted.", z.strictObject({ profileId: z.string().min(1), reason: z.string().optional() }), async (c, a) => c.live.disable(String(a.profileId), optionalString(a.reason))),
218
+ operatorTool("live_create_profile", "Create a live trading profile. Operator-only: not exposed to MCP clients.", z.strictObject({
219
+ name: z.string().min(1).max(80),
220
+ source: z.string().min(1),
221
+ instId: SwapInstId,
222
+ account: z.string().min(1),
223
+ environment: z.enum(["demo", "live"]),
224
+ leverage: z.number().min(1).max(125),
225
+ marginMode: z.enum(["cross", "isolated"]).optional(),
226
+ entryBudgetUsdt: z.number().positive(),
227
+ sideBudgetUsdt: z.number().positive(),
228
+ dailyLossLimitUsdt: z.number().positive(),
229
+ cooldownSeconds: z.number().int().min(0).optional(),
230
+ allowLong: z.boolean().optional(),
231
+ allowShort: z.boolean().optional(),
232
+ params: z.record(z.string(), z.unknown()).optional(),
233
+ origin: z.enum(["operator", "agent"]).optional().describe("Set to `agent` when a model creates this profile; a rationale is then required"),
234
+ rationale: z.string().min(1).optional().describe("Which backtest justified this, and why these budgets. Required when origin is `agent`.")
235
+ }), async (c, a) => c.live.createProfile(a)),
236
+ operatorTool("live_start", "Enable a live profile so it acts on every closed minute. Ask the operator before enabling one whose environment is `live`.", z.strictObject({ profileId: z.string().min(1) }), (c, a) => c.live.enable(String(a.profileId))),
237
+ operatorTool("live_delete_profile", "Delete a stopped live profile and its signal history.", z.strictObject({ profileId: z.string().min(1) }), async (c, a) => c.live.deleteProfile(String(a.profileId))),
144
238
  tool("account_get_snapshot", "Read balances, positions, orders, and account configuration together.", AccountOnlySchema, (c, a) => c.account.getSnapshot(optionalString(a.account))),
145
239
  tool("account_get_balances", "Read OKX account balances.", z.strictObject({ account: Account, ccy: z.string().optional() }), (c, a) => c.account.getBalances(optionalString(a.account), optionalString(a.ccy))),
146
240
  tool("account_get_positions", "Read current OKX positions.", AccountInstSchema, (c, a) => c.account.getPositions(optionalString(a.account), optionalString(a.instId))),
@@ -150,20 +244,20 @@ export const TOOL_CATALOG = [
150
244
  tool("account_get_fills", "Read recent or archived fills.", HistorySchema, (c, a) => c.account.getFills(optionalString(a.account), without(a, "account"))),
151
245
  tool("account_get_bills", "Read recent or archived account bills.", HistorySchema, (c, a) => c.account.getBills(optionalString(a.account), without(a, "account"))),
152
246
  tool("account_get_risk", "Calculate a generic risk summary from current account facts.", AccountOnlySchema, (c, a) => c.account.getRisk(optionalString(a.account))),
153
- tool("trade_evaluate_plan", "Calculate contract quantity, notional, margin, and stop risk without writing.", EvaluateSchema, (c, a) => c.trade.evaluatePlan(a)),
154
- tool("trade_precheck_order", "Validate an ordinary order against instrument, account, and market facts.", PlaceOrderSchema, (c, a) => c.trade.precheck(a)),
155
- tool("trade_set_leverage", "Set leverage for an OKX instrument and margin mode.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, lever: z.string().min(1), mgnMode: z.enum(["cross", "isolated"]), posSide: z.string().optional() }), (c, a) => c.trade.setLeverage(a)),
156
- tool("trade_place_order", "Submit an idempotent ordinary OKX order after precheck.", PlaceOrderSchema, (c, a) => c.trade.placeOrder(a)),
157
- tool("trade_place_batch_orders", "Submit up to twenty prechecked ordinary OKX orders idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, orders: z.array(BatchOrderItemSchema).min(1).max(20) }), (c, a) => c.trade.placeBatchOrders(a)),
158
- tool("trade_amend_order", "Amend an existing ordinary order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, ordId: z.string().optional(), clOrdId: z.string().optional(), newSize: z.string().optional(), newPrice: z.string().optional() }), (c, a) => c.trade.amendOrder(a)),
159
- tool("trade_cancel_order", "Cancel an existing ordinary order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, ordId: z.string().optional(), clOrdId: z.string().optional() }), (c, a) => c.trade.cancelOrder(a)),
160
- tool("trade_precheck_algo_order", "Validate an algo order against instrument, account, and market facts.", PlaceAlgoSchema, (c, a) => c.trade.precheckAlgo(a)),
161
- tool("trade_place_algo_order", "Submit an idempotent prechecked trigger, conditional, or trailing order.", PlaceAlgoSchema, (c, a) => c.trade.placeAlgoOrder(a)),
162
- tool("trade_amend_algo_order", "Amend a supported pending algo order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, algoId: z.string().optional(), algoClOrdId: z.string().optional(), newSize: z.string().optional(), newTriggerPrice: z.string().optional(), newOrderPrice: z.string().optional() }), (c, a) => c.trade.amendAlgoOrder(a)),
163
- tool("trade_cancel_algo_order", "Cancel a pending algo order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, algoId: z.string().min(1) }), (c, a) => c.trade.cancelAlgoOrder(a)),
164
- tool("trade_close_position", "Close an OKX position with a market order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId, mgnMode: z.enum(["cross", "isolated"]), posSide: z.string().optional(), ccy: z.string().optional(), autoCancel: z.boolean().optional() }), (c, a) => c.trade.closePosition(a)),
165
- tool("trade_cancel_instrument_orders", "Cancel every pending ordinary and algo order for one instrument.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId }), (c, a) => c.trade.cancelInstrumentOrders(a)),
166
- tool("trade_close_instrument_positions", "Close every open position side for one instrument.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: InstId }), (c, a) => c.trade.closeInstrumentPositions(a))
247
+ tradeTool("trade_evaluate_plan", "Calculate contract quantity, notional, margin, and stop risk without writing.", EvaluateSchema, (c, a) => c.trade.evaluatePlan(a)),
248
+ tradeTool("trade_precheck_order", "Validate an ordinary order against instrument, account, and market facts.", PlaceOrderSchema, (c, a) => c.trade.precheck(a)),
249
+ tradeTool("trade_set_leverage", "Set leverage for an instrument and margin mode.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, lever: z.string().min(1), mgnMode: z.enum(["cross", "isolated"]), posSide: z.string().optional() }), (c, a) => c.trade.setLeverage(a)),
250
+ tradeTool("trade_place_order", "Submit an idempotent ordinary order after precheck.", PlaceOrderSchema, (c, a) => c.trade.placeOrder(a)),
251
+ tradeTool("trade_place_batch_orders", "Submit up to twenty prechecked ordinary orders idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, orders: z.array(BatchOrderItemSchema).min(1).max(20) }), (c, a) => c.trade.placeBatchOrders(a)),
252
+ tradeTool("trade_amend_order", "Amend an existing ordinary order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, ordId: z.string().optional(), clOrdId: z.string().optional(), newSize: z.string().optional(), newPrice: z.string().optional() }), (c, a) => c.trade.amendOrder(a)),
253
+ tradeTool("trade_cancel_order", "Cancel an existing ordinary order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, ordId: z.string().optional(), clOrdId: z.string().optional() }), (c, a) => c.trade.cancelOrder(a)),
254
+ tradeTool("trade_precheck_algo_order", "Validate an algo order against instrument, account, and market facts.", PlaceAlgoSchema, (c, a) => c.trade.precheckAlgo(a)),
255
+ tradeTool("trade_place_algo_order", "Submit an idempotent prechecked trigger, conditional, or trailing order.", PlaceAlgoSchema, (c, a) => c.trade.placeAlgoOrder(a)),
256
+ tradeTool("trade_amend_algo_order", "Amend a supported pending algo order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, algoId: z.string().optional(), algoClOrdId: z.string().optional(), newSize: z.string().optional(), newTriggerPrice: z.string().optional(), newOrderPrice: z.string().optional() }), (c, a) => c.trade.amendAlgoOrder(a)),
257
+ tradeTool("trade_cancel_algo_order", "Cancel a pending algo order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, algoId: z.string().min(1) }), (c, a) => c.trade.cancelAlgoOrder(a)),
258
+ tradeTool("trade_close_position", "Close a position with a market order idempotently.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId, mgnMode: z.enum(["cross", "isolated"]), posSide: z.string().optional(), ccy: z.string().optional(), autoCancel: z.boolean().optional() }), (c, a) => c.trade.closePosition(a)),
259
+ tradeTool("trade_cancel_instrument_orders", "Cancel every pending ordinary and algo order for one instrument.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId }), (c, a) => c.trade.cancelInstrumentOrders(a)),
260
+ tradeTool("trade_close_instrument_positions", "Close every open position side for one instrument.", z.strictObject({ account: Account, executionKey: ExecutionKey, instId: SwapInstId }), (c, a) => c.trade.closeInstrumentPositions(a))
167
261
  ];
168
262
  export function toolByName(name) {
169
263
  return TOOL_CATALOG.find((tool) => tool.name === name);
@@ -217,6 +311,13 @@ function smartTools() {
217
311
  function tool(name, description, schema, execute) {
218
312
  return { name, description, schema, execute };
219
313
  }
314
+ /** Reachable from the CLI but withheld from the MCP tool listing. */
315
+ function operatorTool(name, description, schema, execute) {
316
+ return { ...tool(name, description, schema, execute), operatorOnly: true };
317
+ }
318
+ function tradeTool(name, description, schema, execute) {
319
+ return tool(name, `${description} Supports OKX perpetual swap instruments ending in -SWAP only.`, schema, execute);
320
+ }
220
321
  function experimentalTool(name, description, schema, execute) {
221
322
  return tool(name, `Experimental OKX intelligence capability. Remote data requires a configured live OKX account; read-only permission is sufficient. ${description}`, schema, execute);
222
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,18 @@ export interface EvaluatePlanInput {
14
14
  export interface PlaceOrderInput {
15
15
  account?: string;
16
16
  executionKey: string;
17
+ /**
18
+ * Skips the snapshot time-consistency blocker, keeping every other check.
19
+ *
20
+ * That blocker requires all eight snapshot components to agree within a second, which
21
+ * suits someone placing an order by hand: it proves the numbers on screen came from one
22
+ * instant. An automated loop cannot satisfy it and should not have to — funding rate
23
+ * updates every eight hours and open interest every few seconds, so measured skew runs to
24
+ * 4–10 seconds as a matter of course, and none of it bears on whether a market order can
25
+ * fill. Every check that does bear on executability — lot alignment, minimum size, tick
26
+ * alignment, trade permission — still applies.
27
+ */
28
+ executabilityOnly?: boolean;
17
29
  instId: string;
18
30
  tdMode: "cash" | "cross" | "isolated";
19
31
  side: "buy" | "sell";
@@ -13,13 +13,14 @@ export class TradeService {
13
13
  this.database = database;
14
14
  }
15
15
  async evaluatePlan(input) {
16
+ assertPerpetualSwap(input.instId);
16
17
  const [instrumentResult, tickerResult] = await Promise.all([
17
18
  this.market.getInstrument(input.instId),
18
19
  this.market.getTicker(input.instId)
19
20
  ]);
20
21
  const instrument = instrumentResult.data;
21
22
  const contracts = number(input.size, "size");
22
- const referencePrice = input.price ? number(input.price, "price") : number(instrumentType(input.instId) === "SPOT" ? tickerResult.data.last : tickerResult.data.last, "ticker.last");
23
+ const referencePrice = input.price ? number(input.price, "price") : number(tickerResult.data.last, "ticker.last");
23
24
  const ctVal = optionalNumber(instrument.ctVal) ?? 1;
24
25
  const ctMult = optionalNumber(instrument.ctMult) ?? 1;
25
26
  const baseQuantity = contracts * ctVal * ctMult;
@@ -52,6 +53,7 @@ export class TradeService {
52
53
  };
53
54
  }
54
55
  async precheck(input) {
56
+ assertPerpetualSwap(input.instId);
55
57
  const account = this.accounts.account(input.account);
56
58
  const [instrument, accountConfig, balances, positions, snapshot, plan] = await Promise.all([
57
59
  this.market.getInstrument(input.instId),
@@ -63,8 +65,14 @@ export class TradeService {
63
65
  ]);
64
66
  const blockers = [];
65
67
  const warnings = [];
66
- if (snapshot.data.consistent !== true)
67
- blockers.push("Market decision snapshot is not time-consistent");
68
+ if (snapshot.data.consistent !== true) {
69
+ // Downgraded rather than dropped for an automated caller: the skew is still reported,
70
+ // it just does not block an order it has no bearing on.
71
+ if (input.executabilityOnly)
72
+ warnings.push("Market decision snapshot is not time-consistent");
73
+ else
74
+ blockers.push("Market decision snapshot is not time-consistent");
75
+ }
68
76
  const normalized = normalizeStep(number(input.size, "size"), String(instrument.data.lotSz ?? "1"), "down");
69
77
  if (!sameNumber(normalized, input.size))
70
78
  blockers.push(`size must align with lotSz ${String(instrument.data.lotSz)}`);
@@ -98,6 +106,7 @@ export class TradeService {
98
106
  };
99
107
  }
100
108
  async precheckAlgo(input) {
109
+ assertPerpetualSwap(input.instId);
101
110
  const account = this.accounts.account(input.account);
102
111
  const [instrument, accountConfig, snapshot] = await Promise.all([
103
112
  this.market.getInstrument(input.instId),
@@ -160,6 +169,7 @@ export class TradeService {
160
169
  };
161
170
  }
162
171
  async setLeverage(input) {
172
+ assertPerpetualSwap(input.instId);
163
173
  const account = this.accounts.account(input.account);
164
174
  const body = { instId: input.instId, lever: input.lever, mgnMode: input.mgnMode, ...(input.posSide ? { posSide: input.posSide } : {}) };
165
175
  return this.execute(account, input.executionKey, "set_leverage", body, async () => ({
@@ -232,6 +242,7 @@ export class TradeService {
232
242
  });
233
243
  }
234
244
  async amendOrder(input) {
245
+ assertPerpetualSwap(input.instId);
235
246
  const account = this.accounts.account(input.account);
236
247
  const body = {
237
248
  instId: input.instId,
@@ -254,6 +265,7 @@ export class TradeService {
254
265
  });
255
266
  }
256
267
  async cancelOrder(input) {
268
+ assertPerpetualSwap(input.instId);
257
269
  const account = this.accounts.account(input.account);
258
270
  const body = { instId: input.instId, ...(input.ordId ? { ordId: input.ordId } : {}), ...(input.clOrdId ? { clOrdId: input.clOrdId } : {}) };
259
271
  return this.execute(account, input.executionKey, "cancel_order", body, async () => ({ orders: await this.client.privatePost("/api/v5/trade/cancel-order", account, body) }), async () => {
@@ -295,6 +307,7 @@ export class TradeService {
295
307
  }), () => this.findAlgoOrder(account, input.instId, undefined, algoClOrdId));
296
308
  }
297
309
  async amendAlgoOrder(input) {
310
+ assertPerpetualSwap(input.instId);
298
311
  const account = this.accounts.account(input.account);
299
312
  const body = {
300
313
  instId: input.instId,
@@ -308,6 +321,7 @@ export class TradeService {
308
321
  return this.execute(account, input.executionKey, "amend_algo_order", body, async () => ({ orders: await this.client.privatePost("/api/v5/trade/amend-algos", account, body) }), () => this.findAlgoOrder(account, input.instId, input.algoId, input.algoClOrdId));
309
322
  }
310
323
  async cancelAlgoOrder(input) {
324
+ assertPerpetualSwap(input.instId);
311
325
  const account = this.accounts.account(input.account);
312
326
  const body = [{ instId: input.instId, algoId: input.algoId }];
313
327
  return this.execute(account, input.executionKey, "cancel_algo_order", body, async () => ({ orders: await this.client.privatePost("/api/v5/trade/cancel-algos", account, body) }), async () => {
@@ -317,6 +331,7 @@ export class TradeService {
317
331
  });
318
332
  }
319
333
  async closePosition(input) {
334
+ assertPerpetualSwap(input.instId);
320
335
  const account = this.accounts.account(input.account);
321
336
  const clOrdId = clientId(input.executionKey, "c");
322
337
  const body = {
@@ -337,6 +352,7 @@ export class TradeService {
337
352
  });
338
353
  }
339
354
  async cancelInstrumentOrders(input) {
355
+ assertPerpetualSwap(input.instId);
340
356
  const open = await this.accounts.getOpenOrders(input.account, input.instId);
341
357
  const data = open.data;
342
358
  const ordinary = await Promise.all(data.orders.map((order, index) => this.cancelOrder({
@@ -354,6 +370,7 @@ export class TradeService {
354
370
  return { data: { ordinary: ordinary.map((item) => item.data), algo: algo.map((item) => item.data) }, meta: open.meta };
355
371
  }
356
372
  async closeInstrumentPositions(input) {
373
+ assertPerpetualSwap(input.instId);
357
374
  const positions = await this.accounts.getPositions(input.account, input.instId);
358
375
  const open = positions.data.filter((position) => Number(position.pos ?? 0) !== 0);
359
376
  const results = await Promise.all(open.map((position, index) => this.closePosition({
@@ -462,9 +479,9 @@ function optionalNumber(value) {
462
479
  function sameNumber(left, right) {
463
480
  return Math.abs(Number(left) - Number(right)) <= Number.EPSILON * Math.max(1, Math.abs(Number(left)), Math.abs(Number(right)));
464
481
  }
465
- function instrumentType(instId) {
466
- if (instId.endsWith("-SWAP"))
467
- return "SWAP";
468
- return instId.split("-").length >= 3 ? "FUTURES" : "SPOT";
482
+ function assertPerpetualSwap(instId) {
483
+ if (!instId.endsWith("-SWAP")) {
484
+ throw new RuntimeError("VALIDATION", "Trading tools support only OKX perpetual swap instruments ending in -SWAP");
485
+ }
469
486
  }
470
487
  //# sourceMappingURL=service.js.map