perp-cli 0.3.3

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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -0
  3. package/dist/__tests__/alert-logic.test.d.ts +1 -0
  4. package/dist/__tests__/alert-logic.test.js +107 -0
  5. package/dist/__tests__/arb-auto-3dex.test.d.ts +1 -0
  6. package/dist/__tests__/arb-auto-3dex.test.js +397 -0
  7. package/dist/__tests__/arb-history-stats.test.d.ts +1 -0
  8. package/dist/__tests__/arb-history-stats.test.js +176 -0
  9. package/dist/__tests__/arb-logic.test.d.ts +1 -0
  10. package/dist/__tests__/arb-logic.test.js +84 -0
  11. package/dist/__tests__/arb-manage.test.d.ts +1 -0
  12. package/dist/__tests__/arb-manage.test.js +253 -0
  13. package/dist/__tests__/arb-new-features.test.d.ts +1 -0
  14. package/dist/__tests__/arb-new-features.test.js +457 -0
  15. package/dist/__tests__/arb-sizing.test.d.ts +1 -0
  16. package/dist/__tests__/arb-sizing.test.js +48 -0
  17. package/dist/__tests__/arb-state.test.d.ts +1 -0
  18. package/dist/__tests__/arb-state.test.js +284 -0
  19. package/dist/__tests__/arb-userflow.test.d.ts +1 -0
  20. package/dist/__tests__/arb-userflow.test.js +945 -0
  21. package/dist/__tests__/arb-utils.test.d.ts +1 -0
  22. package/dist/__tests__/arb-utils.test.js +264 -0
  23. package/dist/__tests__/bot-conditions.test.d.ts +1 -0
  24. package/dist/__tests__/bot-conditions.test.js +341 -0
  25. package/dist/__tests__/client-id-tracker.test.d.ts +1 -0
  26. package/dist/__tests__/client-id-tracker.test.js +137 -0
  27. package/dist/__tests__/commands/new-atomic-commands.test.d.ts +1 -0
  28. package/dist/__tests__/commands/new-atomic-commands.test.js +502 -0
  29. package/dist/__tests__/commands/order-intent.test.d.ts +1 -0
  30. package/dist/__tests__/commands/order-intent.test.js +600 -0
  31. package/dist/__tests__/commands/trade-commands.test.d.ts +1 -0
  32. package/dist/__tests__/commands/trade-commands.test.js +821 -0
  33. package/dist/__tests__/config.test.d.ts +1 -0
  34. package/dist/__tests__/config.test.js +86 -0
  35. package/dist/__tests__/cross-chain-margin.test.d.ts +1 -0
  36. package/dist/__tests__/cross-chain-margin.test.js +287 -0
  37. package/dist/__tests__/dex-asset-map.test.d.ts +1 -0
  38. package/dist/__tests__/dex-asset-map.test.js +191 -0
  39. package/dist/__tests__/errors.test.d.ts +1 -0
  40. package/dist/__tests__/errors.test.js +110 -0
  41. package/dist/__tests__/event-stream.test.d.ts +1 -0
  42. package/dist/__tests__/event-stream.test.js +276 -0
  43. package/dist/__tests__/exchanges/interface.test.d.ts +1 -0
  44. package/dist/__tests__/exchanges/interface.test.js +132 -0
  45. package/dist/__tests__/exchanges/mock-adapter.d.ts +69 -0
  46. package/dist/__tests__/exchanges/mock-adapter.js +137 -0
  47. package/dist/__tests__/execution-log.test.d.ts +1 -0
  48. package/dist/__tests__/execution-log.test.js +106 -0
  49. package/dist/__tests__/funding-calc.test.d.ts +1 -0
  50. package/dist/__tests__/funding-calc.test.js +71 -0
  51. package/dist/__tests__/funding-history.test.d.ts +1 -0
  52. package/dist/__tests__/funding-history.test.js +343 -0
  53. package/dist/__tests__/funding-rates.test.d.ts +1 -0
  54. package/dist/__tests__/funding-rates.test.js +342 -0
  55. package/dist/__tests__/funding.test.d.ts +1 -0
  56. package/dist/__tests__/funding.test.js +173 -0
  57. package/dist/__tests__/gap-logic.test.d.ts +1 -0
  58. package/dist/__tests__/gap-logic.test.js +43 -0
  59. package/dist/__tests__/hip3-dex.test.d.ts +1 -0
  60. package/dist/__tests__/hip3-dex.test.js +234 -0
  61. package/dist/__tests__/integration/agent-features.integration.test.d.ts +1 -0
  62. package/dist/__tests__/integration/agent-features.integration.test.js +553 -0
  63. package/dist/__tests__/integration/atomic-commands.integration.test.d.ts +13 -0
  64. package/dist/__tests__/integration/atomic-commands.integration.test.js +246 -0
  65. package/dist/__tests__/integration/bridge-simulation.integration.test.d.ts +1 -0
  66. package/dist/__tests__/integration/bridge-simulation.integration.test.js +453 -0
  67. package/dist/__tests__/integration/bridge-strict.integration.test.d.ts +1 -0
  68. package/dist/__tests__/integration/bridge-strict.integration.test.js +812 -0
  69. package/dist/__tests__/integration/bridge.integration.test.d.ts +1 -0
  70. package/dist/__tests__/integration/bridge.integration.test.js +309 -0
  71. package/dist/__tests__/integration/cli-e2e.integration.test.d.ts +1 -0
  72. package/dist/__tests__/integration/cli-e2e.integration.test.js +202 -0
  73. package/dist/__tests__/integration/dex-arb.integration.test.d.ts +1 -0
  74. package/dist/__tests__/integration/dex-arb.integration.test.js +116 -0
  75. package/dist/__tests__/integration/envelope-consistency.integration.test.d.ts +13 -0
  76. package/dist/__tests__/integration/envelope-consistency.integration.test.js +205 -0
  77. package/dist/__tests__/integration/hip3-dex.integration.test.d.ts +1 -0
  78. package/dist/__tests__/integration/hip3-dex.integration.test.js +147 -0
  79. package/dist/__tests__/integration/hyperliquid.integration.test.d.ts +1 -0
  80. package/dist/__tests__/integration/hyperliquid.integration.test.js +79 -0
  81. package/dist/__tests__/integration/lighter.integration.test.d.ts +1 -0
  82. package/dist/__tests__/integration/lighter.integration.test.js +53 -0
  83. package/dist/__tests__/integration/new-commands-e2e.integration.test.d.ts +9 -0
  84. package/dist/__tests__/integration/new-commands-e2e.integration.test.js +236 -0
  85. package/dist/__tests__/integration/order-verification.integration.test.d.ts +1 -0
  86. package/dist/__tests__/integration/order-verification.integration.test.js +321 -0
  87. package/dist/__tests__/integration/pacifica.integration.test.d.ts +1 -0
  88. package/dist/__tests__/integration/pacifica.integration.test.js +75 -0
  89. package/dist/__tests__/integration/response-shapes.integration.test.d.ts +1 -0
  90. package/dist/__tests__/integration/response-shapes.integration.test.js +278 -0
  91. package/dist/__tests__/liquidity.test.d.ts +1 -0
  92. package/dist/__tests__/liquidity.test.js +225 -0
  93. package/dist/__tests__/plan-executor.test.d.ts +1 -0
  94. package/dist/__tests__/plan-executor.test.js +314 -0
  95. package/dist/__tests__/position-history.test.d.ts +1 -0
  96. package/dist/__tests__/position-history.test.js +367 -0
  97. package/dist/__tests__/retry.test.d.ts +1 -0
  98. package/dist/__tests__/retry.test.js +310 -0
  99. package/dist/__tests__/risk-assessment.test.d.ts +1 -0
  100. package/dist/__tests__/risk-assessment.test.js +145 -0
  101. package/dist/__tests__/security-adversarial.test.d.ts +1 -0
  102. package/dist/__tests__/security-adversarial.test.js +574 -0
  103. package/dist/__tests__/strategies.test.d.ts +1 -0
  104. package/dist/__tests__/strategies.test.js +539 -0
  105. package/dist/__tests__/trade-execution.test.d.ts +1 -0
  106. package/dist/__tests__/trade-execution.test.js +129 -0
  107. package/dist/__tests__/trade-validator.test.d.ts +1 -0
  108. package/dist/__tests__/trade-validator.test.js +655 -0
  109. package/dist/__tests__/utils.test.d.ts +1 -0
  110. package/dist/__tests__/utils.test.js +76 -0
  111. package/dist/api/public/hyperliquid.d.ts +18 -0
  112. package/dist/api/public/hyperliquid.js +82 -0
  113. package/dist/api/public/index.d.ts +8 -0
  114. package/dist/api/public/index.js +8 -0
  115. package/dist/api/public/lighter.d.ts +24 -0
  116. package/dist/api/public/lighter.js +100 -0
  117. package/dist/api/public/pacifica.d.ts +17 -0
  118. package/dist/api/public/pacifica.js +54 -0
  119. package/dist/api/public/urls.d.ts +12 -0
  120. package/dist/api/public/urls.js +33 -0
  121. package/dist/arb/history-stats.d.ts +44 -0
  122. package/dist/arb/history-stats.js +135 -0
  123. package/dist/arb/index.d.ts +4 -0
  124. package/dist/arb/index.js +4 -0
  125. package/dist/arb/sizing.d.ts +23 -0
  126. package/dist/arb/sizing.js +96 -0
  127. package/dist/arb/state.d.ts +51 -0
  128. package/dist/arb/state.js +112 -0
  129. package/dist/arb/utils.d.ts +81 -0
  130. package/dist/arb/utils.js +267 -0
  131. package/dist/arb-history-stats.d.ts +5 -0
  132. package/dist/arb-history-stats.js +5 -0
  133. package/dist/arb-sizing.d.ts +5 -0
  134. package/dist/arb-sizing.js +5 -0
  135. package/dist/arb-state.d.ts +5 -0
  136. package/dist/arb-state.js +5 -0
  137. package/dist/arb-utils.d.ts +5 -0
  138. package/dist/arb-utils.js +5 -0
  139. package/dist/bot/conditions.d.ts +32 -0
  140. package/dist/bot/conditions.js +141 -0
  141. package/dist/bot/config.d.ts +76 -0
  142. package/dist/bot/config.js +160 -0
  143. package/dist/bot/engine.d.ts +8 -0
  144. package/dist/bot/engine.js +519 -0
  145. package/dist/bot/presets.d.ts +11 -0
  146. package/dist/bot/presets.js +296 -0
  147. package/dist/bridge-engine.d.ts +133 -0
  148. package/dist/bridge-engine.js +1487 -0
  149. package/dist/cache.d.ts +25 -0
  150. package/dist/cache.js +99 -0
  151. package/dist/cli-spec.d.ts +50 -0
  152. package/dist/cli-spec.js +75 -0
  153. package/dist/client-id-tracker.d.ts +25 -0
  154. package/dist/client-id-tracker.js +76 -0
  155. package/dist/commands/account.d.ts +3 -0
  156. package/dist/commands/account.js +425 -0
  157. package/dist/commands/agent.d.ts +3 -0
  158. package/dist/commands/agent.js +386 -0
  159. package/dist/commands/alert.d.ts +2 -0
  160. package/dist/commands/alert.js +421 -0
  161. package/dist/commands/analytics.d.ts +3 -0
  162. package/dist/commands/analytics.js +311 -0
  163. package/dist/commands/arb/index.d.ts +3 -0
  164. package/dist/commands/arb/index.js +921 -0
  165. package/dist/commands/arb-auto.d.ts +54 -0
  166. package/dist/commands/arb-auto.js +1328 -0
  167. package/dist/commands/arb-manage.d.ts +5 -0
  168. package/dist/commands/arb-manage.js +5 -0
  169. package/dist/commands/arb.d.ts +2 -0
  170. package/dist/commands/arb.js +347 -0
  171. package/dist/commands/backtest.d.ts +2 -0
  172. package/dist/commands/backtest.js +327 -0
  173. package/dist/commands/bot.d.ts +3 -0
  174. package/dist/commands/bot.js +412 -0
  175. package/dist/commands/bridge.d.ts +2 -0
  176. package/dist/commands/bridge.js +396 -0
  177. package/dist/commands/dashboard.d.ts +3 -0
  178. package/dist/commands/dashboard.js +176 -0
  179. package/dist/commands/deposit.d.ts +4 -0
  180. package/dist/commands/deposit.js +573 -0
  181. package/dist/commands/dex.d.ts +3 -0
  182. package/dist/commands/dex.js +114 -0
  183. package/dist/commands/env.d.ts +2 -0
  184. package/dist/commands/env.js +136 -0
  185. package/dist/commands/funding.d.ts +2 -0
  186. package/dist/commands/funding.js +347 -0
  187. package/dist/commands/gap.d.ts +2 -0
  188. package/dist/commands/gap.js +305 -0
  189. package/dist/commands/health.d.ts +2 -0
  190. package/dist/commands/health.js +67 -0
  191. package/dist/commands/history.d.ts +2 -0
  192. package/dist/commands/history.js +235 -0
  193. package/dist/commands/init.d.ts +15 -0
  194. package/dist/commands/init.js +266 -0
  195. package/dist/commands/jobs.d.ts +2 -0
  196. package/dist/commands/jobs.js +133 -0
  197. package/dist/commands/manage.d.ts +4 -0
  198. package/dist/commands/manage.js +309 -0
  199. package/dist/commands/market.d.ts +3 -0
  200. package/dist/commands/market.js +225 -0
  201. package/dist/commands/plan.d.ts +3 -0
  202. package/dist/commands/plan.js +95 -0
  203. package/dist/commands/portfolio.d.ts +3 -0
  204. package/dist/commands/portfolio.js +169 -0
  205. package/dist/commands/rebalance.d.ts +3 -0
  206. package/dist/commands/rebalance.js +293 -0
  207. package/dist/commands/risk.d.ts +3 -0
  208. package/dist/commands/risk.js +169 -0
  209. package/dist/commands/run.d.ts +3 -0
  210. package/dist/commands/run.js +202 -0
  211. package/dist/commands/settings.d.ts +2 -0
  212. package/dist/commands/settings.js +102 -0
  213. package/dist/commands/stream.d.ts +5 -0
  214. package/dist/commands/stream.js +123 -0
  215. package/dist/commands/trade.d.ts +3 -0
  216. package/dist/commands/trade.js +1273 -0
  217. package/dist/commands/wallet.d.ts +14 -0
  218. package/dist/commands/wallet.js +602 -0
  219. package/dist/commands/withdraw.d.ts +3 -0
  220. package/dist/commands/withdraw.js +187 -0
  221. package/dist/config.d.ts +5 -0
  222. package/dist/config.js +68 -0
  223. package/dist/cross-chain-margin.d.ts +46 -0
  224. package/dist/cross-chain-margin.js +107 -0
  225. package/dist/dashboard/server.d.ts +80 -0
  226. package/dist/dashboard/server.js +340 -0
  227. package/dist/dashboard/ui.d.ts +4 -0
  228. package/dist/dashboard/ui.js +538 -0
  229. package/dist/dashboard/ws-feeds.d.ts +29 -0
  230. package/dist/dashboard/ws-feeds.js +660 -0
  231. package/dist/dex-asset-map.d.ts +80 -0
  232. package/dist/dex-asset-map.js +201 -0
  233. package/dist/errors.d.ts +109 -0
  234. package/dist/errors.js +84 -0
  235. package/dist/event-stream.d.ts +25 -0
  236. package/dist/event-stream.js +168 -0
  237. package/dist/exchanges/hyperliquid.d.ts +212 -0
  238. package/dist/exchanges/hyperliquid.js +931 -0
  239. package/dist/exchanges/interface.d.ts +95 -0
  240. package/dist/exchanges/interface.js +5 -0
  241. package/dist/exchanges/lighter.d.ts +159 -0
  242. package/dist/exchanges/lighter.js +793 -0
  243. package/dist/exchanges/pacifica.d.ts +51 -0
  244. package/dist/exchanges/pacifica.js +248 -0
  245. package/dist/execution-log.d.ts +36 -0
  246. package/dist/execution-log.js +102 -0
  247. package/dist/funding/history.d.ts +63 -0
  248. package/dist/funding/history.js +266 -0
  249. package/dist/funding/index.d.ts +3 -0
  250. package/dist/funding/index.js +3 -0
  251. package/dist/funding/normalize.d.ts +39 -0
  252. package/dist/funding/normalize.js +66 -0
  253. package/dist/funding/rates.d.ts +45 -0
  254. package/dist/funding/rates.js +172 -0
  255. package/dist/funding-history.d.ts +5 -0
  256. package/dist/funding-history.js +5 -0
  257. package/dist/funding-rates.d.ts +5 -0
  258. package/dist/funding-rates.js +5 -0
  259. package/dist/funding.d.ts +5 -0
  260. package/dist/funding.js +5 -0
  261. package/dist/index.d.ts +2 -0
  262. package/dist/index.js +458 -0
  263. package/dist/jobs.d.ts +37 -0
  264. package/dist/jobs.js +152 -0
  265. package/dist/liquidity.d.ts +34 -0
  266. package/dist/liquidity.js +100 -0
  267. package/dist/mcp-server.d.ts +9 -0
  268. package/dist/mcp-server.js +1206 -0
  269. package/dist/pacifica/client.d.ts +111 -0
  270. package/dist/pacifica/client.js +310 -0
  271. package/dist/pacifica/constants.d.ts +27 -0
  272. package/dist/pacifica/constants.js +47 -0
  273. package/dist/pacifica/deposit.d.ts +14 -0
  274. package/dist/pacifica/deposit.js +78 -0
  275. package/dist/pacifica/index.d.ts +6 -0
  276. package/dist/pacifica/index.js +11 -0
  277. package/dist/pacifica/signing.d.ts +49 -0
  278. package/dist/pacifica/signing.js +97 -0
  279. package/dist/pacifica/types/account.d.ts +42 -0
  280. package/dist/pacifica/types/account.js +1 -0
  281. package/dist/pacifica/types/index.d.ts +6 -0
  282. package/dist/pacifica/types/index.js +6 -0
  283. package/dist/pacifica/types/lake.d.ts +18 -0
  284. package/dist/pacifica/types/lake.js +1 -0
  285. package/dist/pacifica/types/market.d.ts +64 -0
  286. package/dist/pacifica/types/market.js +1 -0
  287. package/dist/pacifica/types/order.d.ts +92 -0
  288. package/dist/pacifica/types/order.js +1 -0
  289. package/dist/pacifica/types/position.d.ts +25 -0
  290. package/dist/pacifica/types/position.js +1 -0
  291. package/dist/pacifica/types/ws.d.ts +34 -0
  292. package/dist/pacifica/types/ws.js +41 -0
  293. package/dist/pacifica/ws-client.d.ts +42 -0
  294. package/dist/pacifica/ws-client.js +180 -0
  295. package/dist/plan-executor.d.ts +48 -0
  296. package/dist/plan-executor.js +280 -0
  297. package/dist/position-history.d.ts +68 -0
  298. package/dist/position-history.js +222 -0
  299. package/dist/rebalance.d.ts +64 -0
  300. package/dist/rebalance.js +142 -0
  301. package/dist/retry.d.ts +74 -0
  302. package/dist/retry.js +129 -0
  303. package/dist/risk.d.ts +48 -0
  304. package/dist/risk.js +156 -0
  305. package/dist/settings.d.ts +19 -0
  306. package/dist/settings.js +45 -0
  307. package/dist/shared-api.d.ts +5 -0
  308. package/dist/shared-api.js +5 -0
  309. package/dist/strategies/dca.d.ts +25 -0
  310. package/dist/strategies/dca.js +114 -0
  311. package/dist/strategies/funding-arb.d.ts +15 -0
  312. package/dist/strategies/funding-arb.js +281 -0
  313. package/dist/strategies/grid.d.ts +34 -0
  314. package/dist/strategies/grid.js +185 -0
  315. package/dist/strategies/trailing-stop.d.ts +17 -0
  316. package/dist/strategies/trailing-stop.js +121 -0
  317. package/dist/strategies/twap.d.ts +20 -0
  318. package/dist/strategies/twap.js +78 -0
  319. package/dist/trade-validator.d.ts +39 -0
  320. package/dist/trade-validator.js +154 -0
  321. package/dist/utils.d.ts +38 -0
  322. package/dist/utils.js +110 -0
  323. package/package.json +63 -0
  324. package/skills/perp-cli/SKILL.md +149 -0
  325. package/skills/perp-cli/references/commands.md +143 -0
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: perp-cli
3
+ description: "Multi-DEX perpetual futures trading CLI for Pacifica (Solana), Hyperliquid (EVM), and Lighter (Ethereum). Use when user asks to trade perps, check funding rates, bridge USDC, manage positions, scan arbitrage opportunities, or mentions perp-cli, hypurrquant, Pacifica, Hyperliquid, or Lighter exchanges. Also use when user says 'set up perp trading', 'check my positions', 'buy BTC perps', 'funding rate arb', 'bridge USDC', or 'deposit to exchange'."
4
+ license: MIT
5
+ metadata:
6
+ author: hypurrquant
7
+ version: "0.3.3"
8
+ mcp-server: perp-cli
9
+ ---
10
+
11
+ # perp-cli Agent Guide
12
+
13
+ Multi-DEX perpetual futures CLI — Pacifica (Solana), Hyperliquid (HyperEVM), Lighter (Ethereum).
14
+
15
+ ## Critical Rules
16
+
17
+ 1. **NEVER use interactive commands.** Do NOT run `perp init`. Always use non-interactive commands with `--json`.
18
+ 2. **Always use `--json`** on every command for structured output.
19
+ 3. **NEVER trade without user confirmation.** Show order details and wait for explicit approval.
20
+ 4. **Verify wallet before any operation.** Run `perp --json wallet show` first.
21
+
22
+ ## Step 1: Install
23
+
24
+ ```bash
25
+ npm install -g perp-cli
26
+ ```
27
+
28
+ ## Step 2: Configure Wallet
29
+
30
+ CRITICAL: Do NOT use `perp init` — it is interactive and will hang.
31
+
32
+ **If user provides a private key:**
33
+ ```bash
34
+ perp --json wallet set hl <KEY> # Hyperliquid (aliases: hl, hyperliquid)
35
+ perp --json wallet set pac <KEY> # Pacifica (aliases: pac, pacifica)
36
+ perp --json wallet set lt <KEY> # Lighter (aliases: lt, lighter)
37
+ perp --json wallet set hl <KEY> --default # also set as default exchange
38
+ ```
39
+
40
+ **If user needs a new wallet:**
41
+ ```bash
42
+ perp --json wallet generate evm # creates EVM wallet for Hyperliquid + Lighter
43
+ perp --json wallet generate solana # creates Solana wallet for Pacifica
44
+ # IMPORTANT: Tell user the generated address so they can fund it with USDC!
45
+ ```
46
+
47
+ **Verify setup (ALWAYS do this after any wallet command):**
48
+ ```bash
49
+ perp --json wallet show
50
+ # Success: { "ok": true, "data": { "exchanges": [{ "exchange": "hyperliquid", "address": "0x..." }] } }
51
+ # Empty: { "ok": true, "data": { "exchanges": [] } } ← wallet not configured yet
52
+ ```
53
+
54
+ ## Step 3: Use
55
+
56
+ ### Exchange selection
57
+ ```bash
58
+ perp --json -e hyperliquid ... # Hyperliquid (EVM)
59
+ perp --json -e pacifica ... # Pacifica (Solana)
60
+ perp --json -e lighter ... # Lighter (Ethereum)
61
+ ```
62
+ If a default exchange is set, `-e` can be omitted.
63
+
64
+ ### Common operations
65
+ ```bash
66
+ perp --json wallet show # check configured wallets
67
+ perp --json -e hl account info # balance & margin
68
+ perp --json -e hl account positions # open positions
69
+ perp --json -e hl market list # available markets
70
+ perp --json -e hl market mid BTC # BTC mid price
71
+ perp --json arb rates # cross-exchange funding rates
72
+ perp --json portfolio # unified multi-exchange view
73
+ ```
74
+
75
+ ### Trade execution (MANDATORY checklist)
76
+ ```
77
+ 1. perp --json -e <EX> account info → verify balance
78
+ 2. perp --json -e <EX> market mid <SYM> → current price
79
+ 3. perp --json -e <EX> trade check <SYM> <SIDE> <SIZE> → pre-flight validation
80
+ 4. [Show order details to user, get explicit confirmation]
81
+ 5. perp --json -e <EX> trade market <SYM> <SIDE> <SIZE> → execute
82
+ 6. perp --json -e <EX> account positions → verify result
83
+ ```
84
+
85
+ For full command reference, see `references/commands.md`.
86
+
87
+ ## Response Format
88
+
89
+ All JSON responses follow this envelope:
90
+ ```json
91
+ { "ok": true, "data": { ... }, "meta": { "timestamp": "..." } }
92
+ { "ok": false, "error": { "code": "ERROR_CODE", "message": "...", "retryable": true } }
93
+ ```
94
+
95
+ ## Error Handling
96
+
97
+ | Code | Retryable | Action |
98
+ |------|-----------|--------|
99
+ | INSUFFICIENT_BALANCE | No | Report, suggest deposit |
100
+ | MARGIN_INSUFFICIENT | No | Suggest lower leverage or smaller size |
101
+ | SYMBOL_NOT_FOUND | No | Run `market list` for valid symbols |
102
+ | SIGNATURE_FAILED | No | Run `wallet show` to check key configuration |
103
+ | RATE_LIMITED | Yes | Wait 5s, retry once |
104
+ | EXCHANGE_UNREACHABLE | Yes | Wait 5s, retry up to 3 times |
105
+ | TIMEOUT | Yes | Retry, check network |
106
+
107
+ ## Safety Guardrails
108
+
109
+ - NEVER execute trades without user confirmation
110
+ - Warn if single trade exceeds 50% of available balance
111
+ - Warn if leverage exceeds 10x
112
+ - Double-confirm bridge transfers over $1000
113
+
114
+ ## Troubleshooting
115
+
116
+ ### "No private key configured for <exchange>"
117
+ The wallet is not set up. Fix:
118
+ ```bash
119
+ perp --json wallet set <exchange> <key> # if user has a key
120
+ perp --json wallet generate evm # if user needs a new EVM wallet
121
+ perp --json wallet generate solana # if user needs a new Solana wallet
122
+ perp --json wallet show # verify it worked
123
+ ```
124
+
125
+ ### Command hangs or waits for input
126
+ You used an interactive command. NEVER use `perp init` or any command without `--json`. Cancel and retry with `--json`.
127
+
128
+ ### Generated wallet has zero balance
129
+ New wallets start empty. Show the address to the user and ask them to fund it with USDC before trading.
130
+
131
+ ## MCP Server (Advisor Mode)
132
+
133
+ For read-only access without CLI execution:
134
+ ```json
135
+ {
136
+ "mcpServers": {
137
+ "perp-cli": {
138
+ "command": "npx",
139
+ "args": ["-y", "perp-cli", "mcp"],
140
+ "env": {
141
+ "HL_PRIVATE_KEY": "<evm-hex>",
142
+ "PACIFICA_PRIVATE_KEY": "<solana-base58>"
143
+ }
144
+ }
145
+ }
146
+ }
147
+ ```
148
+
149
+ **MCP Tools:** get_markets, get_orderbook, get_funding_rates, get_prices, get_balance, get_positions, get_open_orders, portfolio, arb_scan, health_check, suggest_command, explain_command
@@ -0,0 +1,143 @@
1
+ # perp-cli Command Reference
2
+
3
+ All commands support `--json` for structured output. Always use `--json` when calling from an agent.
4
+
5
+ ## Market Data (read-only, safe)
6
+ ```bash
7
+ perp --json market list # all markets with prices, funding, volume
8
+ perp --json market prices # cross-exchange price comparison
9
+ perp --json market mid <SYMBOL> # mid price (fast)
10
+ perp --json market info <SYMBOL> # tick size, min order, max leverage
11
+ perp --json market book <SYMBOL> # orderbook (bids/asks)
12
+ perp --json market trades <SYMBOL> # recent trades
13
+ perp --json market funding <SYMBOL> # funding rate history
14
+ perp --json market kline <SYM> <INTERVAL> # OHLCV candles (1m,5m,15m,1h,4h,1d)
15
+ ```
16
+
17
+ ## Account (read-only, safe)
18
+ ```bash
19
+ perp --json account info # balance, equity, margin, PnL
20
+ perp --json account positions # open positions
21
+ perp --json account orders # open/pending orders
22
+ perp --json account history # order history
23
+ perp --json account trades # trade fill history
24
+ perp --json account funding-history # funding payments
25
+ perp --json account pnl # profit & loss
26
+ perp --json account margin <SYMBOL> # position margin info
27
+ perp --json status # combined: balance + positions + orders
28
+ perp --json portfolio # cross-exchange unified view
29
+ ```
30
+
31
+ ## Trading (requires user confirmation)
32
+ ```bash
33
+ # Market orders
34
+ perp --json trade market <SYMBOL> <buy|sell> <SIZE>
35
+ perp --json trade buy <SYMBOL> <SIZE> # shorthand market buy
36
+ perp --json trade sell <SYMBOL> <SIZE> # shorthand market sell
37
+
38
+ # Limit orders
39
+ perp --json trade limit <SYMBOL> <buy|sell> <PRICE> <SIZE>
40
+
41
+ # Stop orders
42
+ perp --json trade stop <SYMBOL> <SIDE> <STOP_PRICE> <SIZE>
43
+ perp --json trade tpsl <SYMBOL> <SIDE> --tp <PRICE> --sl <PRICE>
44
+
45
+ # Order management
46
+ perp --json trade edit <SYMBOL> <ORDER_ID> <PRICE> <SIZE>
47
+ perp --json trade cancel <SYMBOL> <ORDER_ID>
48
+ perp --json trade cancel-all
49
+ perp --json trade check <SYMBOL> <SIDE> <SIZE> # pre-flight validation (no execution)
50
+
51
+ # Position management
52
+ perp --json trade close <SYMBOL> # close single position
53
+ perp --json trade close-all # close all positions
54
+ perp --json trade flatten # cancel all orders + close all positions
55
+ perp --json trade reduce <SYMBOL> <PCT> # reduce position by percentage
56
+ perp --json trade leverage <SYMBOL> <N> # set leverage
57
+
58
+ # Advanced orders
59
+ perp --json trade scale-tp <SYMBOL> --levels '<PRICE1>:<PCT>,<PRICE2>:<PCT>'
60
+ perp --json trade scale-in <SYMBOL> <SIDE> --levels '<PRICE1>:<SIZE>,<PRICE2>:<SIZE>'
61
+ perp --json trade trailing-stop <SYMBOL> # trailing stop with callback %
62
+ perp --json trade twap <SYMBOL> <SIDE> <SIZE> <DURATION>
63
+ perp --json trade pnl-track # real-time PnL tracker
64
+ ```
65
+
66
+ ## Deposit & Withdraw
67
+ ```bash
68
+ perp --json deposit pacifica <AMOUNT>
69
+ perp --json deposit hyperliquid <AMOUNT>
70
+ perp --json deposit lighter ethereum <AMOUNT> # L1 direct (min 1 USDC)
71
+ perp --json deposit lighter cctp arbitrum <AMOUNT> # CCTP (min 5 USDC)
72
+ perp --json deposit lighter info # all Lighter deposit routes
73
+ perp --json withdraw pacifica <AMOUNT>
74
+ perp --json withdraw hyperliquid <AMOUNT>
75
+ perp --json deposit info # deposit instructions
76
+ perp --json withdraw info # withdrawal instructions
77
+ ```
78
+
79
+ ## Bridge (Cross-chain USDC)
80
+ ```bash
81
+ perp --json bridge chains # supported chains
82
+ perp --json bridge quote --from <CHAIN> --to <CHAIN> --amount <AMT>
83
+ perp --json bridge send --from <CHAIN> --to <CHAIN> --amount <AMT>
84
+ perp --json bridge exchange --from <EX> --to <EX> --amount <AMT>
85
+ perp --json bridge status <ORDER_ID>
86
+ ```
87
+
88
+ ## Arbitrage
89
+ ```bash
90
+ perp --json arb rates # compare funding rates across exchanges
91
+ perp --json arb scan --min <BPS> # find opportunities (>N bps spread)
92
+ perp --json arb funding # detailed funding analysis
93
+ perp --json arb dex # HIP-3 cross-dex arb (Hyperliquid)
94
+ perp --json gap show # cross-exchange price gaps
95
+ ```
96
+
97
+ ## Wallet Management
98
+ ```bash
99
+ perp --json wallet set hl <KEY> # set Hyperliquid key
100
+ perp --json wallet set pac <KEY> # set Pacifica key
101
+ perp --json wallet set lt <KEY> # set Lighter key
102
+ perp --json wallet set hl <KEY> --default # set key + make default exchange
103
+ perp --json wallet show # show configured wallets (public addresses)
104
+ perp --json wallet generate evm # generate new EVM wallet
105
+ perp --json wallet generate solana # generate new Solana wallet
106
+ perp --json wallet balance # on-chain balance
107
+ ```
108
+
109
+ ## Risk & Analytics
110
+ ```bash
111
+ perp --json risk status # portfolio risk overview
112
+ perp --json risk limits # position limits
113
+ perp --json health # exchange connectivity & latency
114
+ perp --json analytics summary # trading performance
115
+ perp --json analytics pnl # P&L breakdown
116
+ perp --json history list # execution audit trail
117
+ ```
118
+
119
+ ## Automated Strategies
120
+ ```bash
121
+ perp --json run grid <SYMBOL> --range <PCT> --grids <N> --size <USD>
122
+ perp --json run dca <SYMBOL> <SIDE> <AMOUNT> <INTERVAL>
123
+ perp --json run funding-arb # auto funding arb
124
+ perp --json bot quick-grid <SYMBOL> # quick grid bot
125
+ perp --json bot quick-arb # quick arb bot
126
+ perp --json jobs list # list running jobs
127
+ perp --json jobs stop <ID> # stop a job
128
+ ```
129
+
130
+ ## Alerts
131
+ ```bash
132
+ perp --json alert add # add price/funding/pnl/liquidation alert
133
+ perp --json alert list # list active alerts
134
+ perp --json alert remove <ID> # remove alert
135
+ ```
136
+
137
+ ## Command Discovery
138
+ ```bash
139
+ perp schema # Full CLI schema as JSON
140
+ perp agent capabilities # High-level capability list
141
+ perp agent plan "<goal>" # Suggest command sequence for a goal
142
+ perp agent ping # Health check all exchanges
143
+ ```