@continuumdao/ctm-mpc-defi 0.2.8 → 0.2.9

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.
@@ -1075,6 +1075,241 @@ var mcpGmxFetchOhlcvOutputSchema = zod.z.object({
1075
1075
  timeframe: gmxOhlcvTimeframeSchema,
1076
1076
  candles: zod.z.array(gmxOhlcvCandleSchema)
1077
1077
  });
1078
+ function mcpHyperliquidMultisignInput(fields) {
1079
+ return evmMultisignCommonInputSchema.extend(fields);
1080
+ }
1081
+ var hyperliquidTifSchema = zod.z.enum(["alo", "gtc", "ioc"]);
1082
+ var hyperliquidOhlcvIntervalSchema = zod.z.enum([
1083
+ "1m",
1084
+ "3m",
1085
+ "5m",
1086
+ "15m",
1087
+ "30m",
1088
+ "1h",
1089
+ "2h",
1090
+ "4h",
1091
+ "8h",
1092
+ "12h",
1093
+ "1d",
1094
+ "3d",
1095
+ "1w",
1096
+ "1M"
1097
+ ]);
1098
+ var hyperliquidPositionRowSchema = zod.z.object({
1099
+ key: zod.z.string(),
1100
+ coin: zod.z.string(),
1101
+ isLong: zod.z.boolean(),
1102
+ size: zod.z.string().nullable(),
1103
+ entryPx: zod.z.string().nullable(),
1104
+ positionValueUsd: zod.z.string().nullable(),
1105
+ unrealizedPnlUsd: zod.z.string().nullable(),
1106
+ liquidationPx: zod.z.string().nullable(),
1107
+ leverageLabel: zod.z.string().nullable(),
1108
+ maxLeverage: zod.z.number().nullable(),
1109
+ marginUsedUsd: zod.z.string().nullable(),
1110
+ returnOnEquity: zod.z.string().nullable()
1111
+ });
1112
+ var hyperliquidActiveAssetSchema = zod.z.object({
1113
+ markPx: zod.z.string().nullable(),
1114
+ leverageLabel: zod.z.string().nullable(),
1115
+ availableToBuy: zod.z.string().nullable(),
1116
+ availableToSell: zod.z.string().nullable()
1117
+ });
1118
+ var hyperliquidAccountSummarySchema = zod.z.object({
1119
+ accountValueUsd: zod.z.string().nullable(),
1120
+ totalMarginUsedUsd: zod.z.string().nullable(),
1121
+ withdrawableUsd: zod.z.string().nullable()
1122
+ });
1123
+ var mcpHyperliquidFetchMarketsInputSchema = zod.z.object({
1124
+ chainId: zod.z.number().int().positive(),
1125
+ dex: zod.z.string().optional()
1126
+ });
1127
+ var mcpHyperliquidFetchMarketsOutputSchema = zod.z.object({
1128
+ markets: zod.z.array(
1129
+ zod.z.object({
1130
+ name: zod.z.string(),
1131
+ asset: zod.z.number(),
1132
+ szDecimals: zod.z.number(),
1133
+ maxLeverage: zod.z.number(),
1134
+ onlyIsolated: zod.z.boolean().optional()
1135
+ })
1136
+ ),
1137
+ dexes: zod.z.array(
1138
+ zod.z.object({
1139
+ name: zod.z.string(),
1140
+ fullName: zod.z.string()
1141
+ })
1142
+ )
1143
+ });
1144
+ var mcpHyperliquidFetchOpenContextInputSchema = zod.z.object({
1145
+ chainId: zod.z.number().int().positive(),
1146
+ executorAddress: evmAddressSchema,
1147
+ coin: zod.z.string().min(1),
1148
+ dex: zod.z.string().optional()
1149
+ });
1150
+ var mcpHyperliquidFetchOpenContextOutputSchema = zod.z.object({
1151
+ context: zod.z.object({
1152
+ account: hyperliquidAccountSummarySchema,
1153
+ activeAsset: hyperliquidActiveAssetSchema
1154
+ })
1155
+ });
1156
+ var mcpHyperliquidFetchPositionsInputSchema = zod.z.object({
1157
+ chainId: zod.z.number().int().positive(),
1158
+ executorAddress: evmAddressSchema,
1159
+ dex: zod.z.string().optional()
1160
+ });
1161
+ var mcpHyperliquidFetchPositionsOutputSchema = zod.z.object({
1162
+ positions: zod.z.array(hyperliquidPositionRowSchema)
1163
+ });
1164
+ var mcpHyperliquidFetchOpenOrdersInputSchema = zod.z.object({
1165
+ chainId: zod.z.number().int().positive(),
1166
+ executorAddress: evmAddressSchema,
1167
+ dex: zod.z.string().optional()
1168
+ });
1169
+ var mcpHyperliquidFetchOpenOrdersOutputSchema = zod.z.object({
1170
+ orders: zod.z.array(
1171
+ zod.z.object({
1172
+ coin: zod.z.string(),
1173
+ side: zod.z.string(),
1174
+ limitPx: zod.z.string(),
1175
+ sz: zod.z.string(),
1176
+ oid: zod.z.number(),
1177
+ timestamp: zod.z.number(),
1178
+ reduceOnly: zod.z.boolean().optional()
1179
+ })
1180
+ )
1181
+ });
1182
+ var mcpHyperliquidFetchMarketSnapshotInputSchema = zod.z.object({
1183
+ chainId: zod.z.number().int().positive(),
1184
+ coin: zod.z.string().min(1),
1185
+ interval: hyperliquidOhlcvIntervalSchema.optional(),
1186
+ dex: zod.z.string().optional()
1187
+ });
1188
+ var mcpHyperliquidFetchMarketSnapshotOutputSchema = zod.z.object({
1189
+ snapshot: zod.z.object({
1190
+ coin: zod.z.string(),
1191
+ midUsd: zod.z.string().nullable(),
1192
+ fetchedAtMs: zod.z.number(),
1193
+ interval: hyperliquidOhlcvIntervalSchema,
1194
+ candles: zod.z.array(
1195
+ zod.z.object({
1196
+ timestampMs: zod.z.number(),
1197
+ open: zod.z.string(),
1198
+ high: zod.z.string(),
1199
+ low: zod.z.string(),
1200
+ close: zod.z.string(),
1201
+ volume: zod.z.string()
1202
+ })
1203
+ )
1204
+ })
1205
+ });
1206
+ var mcpHyperliquidFetchUsdClassBalancesInputSchema = zod.z.object({
1207
+ chainId: zod.z.number().int().positive(),
1208
+ executorAddress: evmAddressSchema
1209
+ });
1210
+ var mcpHyperliquidFetchUsdClassBalancesOutputSchema = zod.z.object({
1211
+ balances: zod.z.object({
1212
+ spotUsdcAvailable: zod.z.string(),
1213
+ perpWithdrawable: zod.z.string()
1214
+ })
1215
+ });
1216
+ var mcpHyperliquidFetchVaultsInputSchema = zod.z.object({
1217
+ chainId: zod.z.number().int().positive(),
1218
+ executorAddress: evmAddressSchema.optional()
1219
+ });
1220
+ var mcpHyperliquidFetchVaultsOutputSchema = zod.z.object({
1221
+ vaults: zod.z.array(
1222
+ zod.z.object({
1223
+ vaultAddress: zod.z.string(),
1224
+ name: zod.z.string(),
1225
+ apr: zod.z.number().nullable(),
1226
+ tvlUsd: zod.z.string().nullable()
1227
+ })
1228
+ )
1229
+ });
1230
+ var mcpHyperliquidFetchUserVaultEquitiesInputSchema = zod.z.object({
1231
+ chainId: zod.z.number().int().positive(),
1232
+ executorAddress: evmAddressSchema
1233
+ });
1234
+ var mcpHyperliquidFetchUserVaultEquitiesOutputSchema = zod.z.object({
1235
+ rows: zod.z.array(
1236
+ zod.z.object({
1237
+ vaultAddress: zod.z.string(),
1238
+ equity: zod.z.string()
1239
+ })
1240
+ )
1241
+ });
1242
+ var mcpHyperliquidFetchStakingSummaryInputSchema = zod.z.object({
1243
+ chainId: zod.z.number().int().positive(),
1244
+ executorAddress: evmAddressSchema
1245
+ });
1246
+ var mcpHyperliquidFetchStakingSummaryOutputSchema = zod.z.object({
1247
+ summary: zod.z.object({
1248
+ delegated: zod.z.string(),
1249
+ undelegated: zod.z.string()
1250
+ })
1251
+ });
1252
+ var mcpHyperliquidFetchDelegationsInputSchema = zod.z.object({
1253
+ chainId: zod.z.number().int().positive(),
1254
+ executorAddress: evmAddressSchema
1255
+ });
1256
+ var mcpHyperliquidFetchDelegationsOutputSchema = zod.z.object({
1257
+ delegations: zod.z.array(
1258
+ zod.z.object({
1259
+ validator: zod.z.string(),
1260
+ amount: zod.z.string()
1261
+ })
1262
+ )
1263
+ });
1264
+ var mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidMultisignInput({
1265
+ coin: zod.z.string().min(1),
1266
+ isBuy: zod.z.boolean(),
1267
+ limitPxHuman: zod.z.string().min(1),
1268
+ szHuman: zod.z.string().min(1),
1269
+ marketKind: zod.z.enum(["perp", "spot"]).optional(),
1270
+ tif: hyperliquidTifSchema.optional(),
1271
+ dex: zod.z.string().optional()
1272
+ });
1273
+ var mcpHyperliquidCloseInputSchema = mcpHyperliquidMultisignInput({
1274
+ coin: zod.z.string().min(1),
1275
+ isLong: zod.z.boolean(),
1276
+ limitPxHuman: zod.z.string().min(1),
1277
+ szHuman: zod.z.string().min(1),
1278
+ dex: zod.z.string().optional(),
1279
+ tif: hyperliquidTifSchema.optional()
1280
+ });
1281
+ var mcpHyperliquidCancelInputSchema = mcpHyperliquidMultisignInput({
1282
+ coin: zod.z.string().min(1),
1283
+ oid: zod.z.number().int().positive(),
1284
+ marketKind: zod.z.enum(["perp", "spot"]).optional(),
1285
+ dex: zod.z.string().optional()
1286
+ });
1287
+ var mcpHyperliquidUsdTransferInputSchema = mcpHyperliquidMultisignInput({
1288
+ usdHuman: zod.z.string().min(1),
1289
+ toPerp: zod.z.boolean()
1290
+ });
1291
+ var mcpHyperliquidVaultDepositInputSchema = mcpHyperliquidMultisignInput({
1292
+ vaultAddress: evmAddressSchema,
1293
+ usdHuman: zod.z.string().min(1)
1294
+ });
1295
+ var mcpHyperliquidVaultWithdrawInputSchema = mcpHyperliquidMultisignInput({
1296
+ vaultAddress: evmAddressSchema,
1297
+ usdHuman: zod.z.string().min(1)
1298
+ });
1299
+ var mcpHyperliquidStakeInputSchema = mcpHyperliquidMultisignInput({
1300
+ hypeHuman: zod.z.string().min(1)
1301
+ });
1302
+ var mcpHyperliquidUnstakeInputSchema = mcpHyperliquidMultisignInput({
1303
+ hypeHuman: zod.z.string().min(1)
1304
+ });
1305
+ var mcpHyperliquidDelegateInputSchema = mcpHyperliquidMultisignInput({
1306
+ hypeHuman: zod.z.string().min(1),
1307
+ validator: evmAddressSchema
1308
+ });
1309
+ var mcpHyperliquidUndelegateInputSchema = mcpHyperliquidMultisignInput({
1310
+ hypeHuman: zod.z.string().min(1),
1311
+ validator: evmAddressSchema
1312
+ });
1078
1313
 
1079
1314
  // src/agent/mcpProtocolTools.ts
1080
1315
  function defineProtocolMcpTool(def) {
@@ -1446,6 +1681,109 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
1446
1681
  prerequisites: ["keyGen", "executorAddress", "staked GMX balance"],
1447
1682
  handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxUnstakeGmxBatch" },
1448
1683
  inputZod: mcpGmxUnstakeGmxInputSchema
1684
+ }),
1685
+ defineProtocolMcpTool({
1686
+ name: "ctm_hyperliquid_build_limit_order_multisign",
1687
+ actionId: "hyperliquid.limitOrder",
1688
+ protocolId: "hyperliquid",
1689
+ chainCategory: "evm",
1690
+ description: "Create and submit mpc-auth multiSignRequest for a Hyperliquid limit/IoC order via HyperEVM CoreWriter.",
1691
+ prerequisites: ["keyGen", "executorAddress", "chainId 999 or 998", "coin", "limitPxHuman", "szHuman"],
1692
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidLimitOrderBatch" },
1693
+ inputZod: mcpHyperliquidLimitOrderInputSchema
1694
+ }),
1695
+ defineProtocolMcpTool({
1696
+ name: "ctm_hyperliquid_build_close_multisign",
1697
+ actionId: "hyperliquid.close",
1698
+ protocolId: "hyperliquid",
1699
+ chainCategory: "evm",
1700
+ description: "Create and submit mpc-auth multiSignRequest to close/reduce a perp (IoC reduce-only limit via CoreWriter).",
1701
+ prerequisites: ["keyGen", "executorAddress", "open position from fetch_positions", "isLong matches position"],
1702
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidCloseBatch" },
1703
+ inputZod: mcpHyperliquidCloseInputSchema
1704
+ }),
1705
+ defineProtocolMcpTool({
1706
+ name: "ctm_hyperliquid_build_cancel_multisign",
1707
+ actionId: "hyperliquid.cancel",
1708
+ protocolId: "hyperliquid",
1709
+ chainCategory: "evm",
1710
+ description: "Create and submit mpc-auth multiSignRequest to cancel a Hyperliquid open order.",
1711
+ prerequisites: ["keyGen", "executorAddress", "oid from fetch_open_orders"],
1712
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidCancelBatch" },
1713
+ inputZod: mcpHyperliquidCancelInputSchema
1714
+ }),
1715
+ defineProtocolMcpTool({
1716
+ name: "ctm_hyperliquid_build_usd_transfer_multisign",
1717
+ actionId: "hyperliquid.usdTransfer",
1718
+ protocolId: "hyperliquid",
1719
+ chainCategory: "evm",
1720
+ description: "Create and submit mpc-auth multiSignRequest to move USDC between spot and perp margin.",
1721
+ prerequisites: ["keyGen", "executorAddress", "usdHuman", "toPerp boolean"],
1722
+ handler: {
1723
+ importPath: "protocols/evm/hyperliquid",
1724
+ exportName: "buildEvmMultisignBodyHyperliquidUsdClassTransferBatch"
1725
+ },
1726
+ inputZod: mcpHyperliquidUsdTransferInputSchema
1727
+ }),
1728
+ defineProtocolMcpTool({
1729
+ name: "ctm_hyperliquid_build_vault_deposit_multisign",
1730
+ actionId: "hyperliquid.vaultDeposit",
1731
+ protocolId: "hyperliquid",
1732
+ chainCategory: "evm",
1733
+ description: "Create and submit mpc-auth multiSignRequest for Hyperliquid vault deposit.",
1734
+ prerequisites: ["keyGen", "executorAddress", "vaultAddress from fetch_vaults"],
1735
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidVaultDepositBatch" },
1736
+ inputZod: mcpHyperliquidVaultDepositInputSchema
1737
+ }),
1738
+ defineProtocolMcpTool({
1739
+ name: "ctm_hyperliquid_build_vault_withdraw_multisign",
1740
+ actionId: "hyperliquid.vaultWithdraw",
1741
+ protocolId: "hyperliquid",
1742
+ chainCategory: "evm",
1743
+ description: "Create and submit mpc-auth multiSignRequest for Hyperliquid vault withdraw (includes accrued PnL).",
1744
+ prerequisites: ["keyGen", "executorAddress", "vaultAddress", "equity from fetch_user_vault_equities"],
1745
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidVaultWithdrawBatch" },
1746
+ inputZod: mcpHyperliquidVaultWithdrawInputSchema
1747
+ }),
1748
+ defineProtocolMcpTool({
1749
+ name: "ctm_hyperliquid_build_stake_multisign",
1750
+ actionId: "hyperliquid.stake",
1751
+ protocolId: "hyperliquid",
1752
+ chainCategory: "evm",
1753
+ description: "Create and submit mpc-auth multiSignRequest to stake HYPE via CoreWriter.",
1754
+ prerequisites: ["keyGen", "executorAddress", "HYPE balance on Hyperliquid account"],
1755
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidStakeDepositBatch" },
1756
+ inputZod: mcpHyperliquidStakeInputSchema
1757
+ }),
1758
+ defineProtocolMcpTool({
1759
+ name: "ctm_hyperliquid_build_unstake_multisign",
1760
+ actionId: "hyperliquid.unstake",
1761
+ protocolId: "hyperliquid",
1762
+ chainCategory: "evm",
1763
+ description: "Create and submit mpc-auth multiSignRequest to unstake HYPE via CoreWriter.",
1764
+ prerequisites: ["keyGen", "executorAddress", "staked HYPE"],
1765
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidStakeWithdrawBatch" },
1766
+ inputZod: mcpHyperliquidUnstakeInputSchema
1767
+ }),
1768
+ defineProtocolMcpTool({
1769
+ name: "ctm_hyperliquid_build_delegate_multisign",
1770
+ actionId: "hyperliquid.delegate",
1771
+ protocolId: "hyperliquid",
1772
+ chainCategory: "evm",
1773
+ description: "Create and submit mpc-auth multiSignRequest to delegate staked HYPE to a validator.",
1774
+ prerequisites: ["keyGen", "executorAddress", "validator address", "hypeHuman"],
1775
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidDelegateOnlyBatch" },
1776
+ inputZod: mcpHyperliquidDelegateInputSchema
1777
+ }),
1778
+ defineProtocolMcpTool({
1779
+ name: "ctm_hyperliquid_build_undelegate_multisign",
1780
+ actionId: "hyperliquid.undelegate",
1781
+ protocolId: "hyperliquid",
1782
+ chainCategory: "evm",
1783
+ description: "Create and submit mpc-auth multiSignRequest to undelegate HYPE from a validator.",
1784
+ prerequisites: ["keyGen", "executorAddress", "delegation from fetch_delegations"],
1785
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidUndelegateBatch" },
1786
+ inputZod: mcpHyperliquidUndelegateInputSchema
1449
1787
  })
1450
1788
  ];
1451
1789
 
@@ -1791,6 +2129,126 @@ var CORE_MCP_TOOL_DEFINITIONS = [
1791
2129
  handler: { importPath: "protocols/evm/gmx", exportName: "gmxFetchStakingPower" },
1792
2130
  inputZod: mcpGmxFetchStakingPowerInputSchema,
1793
2131
  outputZod: mcpGmxFetchStakingPowerOutputSchema
2132
+ }),
2133
+ defineMcpTool({
2134
+ name: "ctm_hyperliquid_fetch_markets",
2135
+ actionId: "hyperliquid.fetch-markets",
2136
+ protocolId: "hyperliquid",
2137
+ chainCategory: "evm",
2138
+ description: "List Hyperliquid perp markets (coin, maxLeverage, szDecimals) and HIP-3 dex names. chainId 999 mainnet or 998 testnet.",
2139
+ prerequisites: ["chainId 999 or 998"],
2140
+ followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
2141
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketsSummary" },
2142
+ inputZod: mcpHyperliquidFetchMarketsInputSchema,
2143
+ outputZod: mcpHyperliquidFetchMarketsOutputSchema
2144
+ }),
2145
+ defineMcpTool({
2146
+ name: "ctm_hyperliquid_fetch_open_context",
2147
+ actionId: "hyperliquid.fetch-open-context",
2148
+ protocolId: "hyperliquid",
2149
+ chainCategory: "evm",
2150
+ description: "Per-market trading context: account value, withdrawable, margin used, leverage setting, mark price, available buy/sell size.",
2151
+ prerequisites: ["chainId", "executorAddress", "coin from fetch_markets"],
2152
+ followUp: ["ctm_hyperliquid_build_limit_order_multisign"],
2153
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOpenContextSummary" },
2154
+ inputZod: mcpHyperliquidFetchOpenContextInputSchema,
2155
+ outputZod: mcpHyperliquidFetchOpenContextOutputSchema
2156
+ }),
2157
+ defineMcpTool({
2158
+ name: "ctm_hyperliquid_fetch_positions",
2159
+ actionId: "hyperliquid.fetch-positions",
2160
+ protocolId: "hyperliquid",
2161
+ chainCategory: "evm",
2162
+ description: "Open Hyperliquid perp positions for executor (size, entry, uPnL, liq price, leverage, margin).",
2163
+ prerequisites: ["chainId", "executorAddress"],
2164
+ followUp: ["ctm_hyperliquid_build_close_multisign"],
2165
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchPositionsForExecutor" },
2166
+ inputZod: mcpHyperliquidFetchPositionsInputSchema,
2167
+ outputZod: mcpHyperliquidFetchPositionsOutputSchema
2168
+ }),
2169
+ defineMcpTool({
2170
+ name: "ctm_hyperliquid_fetch_open_orders",
2171
+ actionId: "hyperliquid.fetch-open-orders",
2172
+ protocolId: "hyperliquid",
2173
+ chainCategory: "evm",
2174
+ description: "Pending Hyperliquid open orders for executor (oid, coin, side, price, size).",
2175
+ prerequisites: ["chainId", "executorAddress"],
2176
+ followUp: ["ctm_hyperliquid_build_cancel_multisign"],
2177
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOpenOrdersSummary" },
2178
+ inputZod: mcpHyperliquidFetchOpenOrdersInputSchema,
2179
+ outputZod: mcpHyperliquidFetchOpenOrdersOutputSchema
2180
+ }),
2181
+ defineMcpTool({
2182
+ name: "ctm_hyperliquid_fetch_market_snapshot",
2183
+ actionId: "hyperliquid.fetch-market-snapshot",
2184
+ protocolId: "hyperliquid",
2185
+ chainCategory: "evm",
2186
+ description: "Mid price and OHLCV candles for a Hyperliquid perp coin. Default interval 15m.",
2187
+ prerequisites: ["chainId", "coin"],
2188
+ followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
2189
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketSnapshotSummary" },
2190
+ inputZod: mcpHyperliquidFetchMarketSnapshotInputSchema,
2191
+ outputZod: mcpHyperliquidFetchMarketSnapshotOutputSchema
2192
+ }),
2193
+ defineMcpTool({
2194
+ name: "ctm_hyperliquid_fetch_usd_class_balances",
2195
+ actionId: "hyperliquid.fetch-usd-balances",
2196
+ protocolId: "hyperliquid",
2197
+ chainCategory: "evm",
2198
+ description: "Spot USDC available and perp withdrawable USD for spot\u2194perp transfers.",
2199
+ prerequisites: ["chainId", "executorAddress"],
2200
+ followUp: ["ctm_hyperliquid_build_usd_transfer_multisign"],
2201
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchUsdClassBalancesSummary" },
2202
+ inputZod: mcpHyperliquidFetchUsdClassBalancesInputSchema,
2203
+ outputZod: mcpHyperliquidFetchUsdClassBalancesOutputSchema
2204
+ }),
2205
+ defineMcpTool({
2206
+ name: "ctm_hyperliquid_fetch_vaults",
2207
+ actionId: "hyperliquid.fetch-vaults",
2208
+ protocolId: "hyperliquid",
2209
+ chainCategory: "evm",
2210
+ description: "Vault catalog by TVL with APR (mainnet only; may take ~10\u201315s). Pass executorAddress to merge user-held vaults.",
2211
+ prerequisites: ["chainId 999 for catalog"],
2212
+ followUp: ["ctm_hyperliquid_build_vault_deposit_multisign"],
2213
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchVaultCatalogSummary" },
2214
+ inputZod: mcpHyperliquidFetchVaultsInputSchema,
2215
+ outputZod: mcpHyperliquidFetchVaultsOutputSchema
2216
+ }),
2217
+ defineMcpTool({
2218
+ name: "ctm_hyperliquid_fetch_user_vault_equities",
2219
+ actionId: "hyperliquid.fetch-user-vault-equities",
2220
+ protocolId: "hyperliquid",
2221
+ chainCategory: "evm",
2222
+ description: "USD equity the user holds in Hyperliquid vaults.",
2223
+ prerequisites: ["chainId", "executorAddress"],
2224
+ followUp: ["ctm_hyperliquid_build_vault_withdraw_multisign"],
2225
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchUserVaultEquitiesSummary" },
2226
+ inputZod: mcpHyperliquidFetchUserVaultEquitiesInputSchema,
2227
+ outputZod: mcpHyperliquidFetchUserVaultEquitiesOutputSchema
2228
+ }),
2229
+ defineMcpTool({
2230
+ name: "ctm_hyperliquid_fetch_staking_summary",
2231
+ actionId: "hyperliquid.fetch-staking-summary",
2232
+ protocolId: "hyperliquid",
2233
+ chainCategory: "evm",
2234
+ description: "HYPE staking summary: delegated and undelegated amounts.",
2235
+ prerequisites: ["chainId", "executorAddress"],
2236
+ followUp: ["ctm_hyperliquid_build_stake_multisign", "ctm_hyperliquid_build_delegate_multisign"],
2237
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchStakingSummaryForExecutor" },
2238
+ inputZod: mcpHyperliquidFetchStakingSummaryInputSchema,
2239
+ outputZod: mcpHyperliquidFetchStakingSummaryOutputSchema
2240
+ }),
2241
+ defineMcpTool({
2242
+ name: "ctm_hyperliquid_fetch_delegations",
2243
+ actionId: "hyperliquid.fetch-delegations",
2244
+ protocolId: "hyperliquid",
2245
+ chainCategory: "evm",
2246
+ description: "HYPE delegations by validator for executor.",
2247
+ prerequisites: ["chainId", "executorAddress"],
2248
+ followUp: ["ctm_hyperliquid_build_undelegate_multisign"],
2249
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchDelegationsForExecutor" },
2250
+ inputZod: mcpHyperliquidFetchDelegationsInputSchema,
2251
+ outputZod: mcpHyperliquidFetchDelegationsOutputSchema
1794
2252
  })
1795
2253
  ];
1796
2254
  var MCP_TOOL_DEFINITIONS = [
@@ -2413,6 +2871,146 @@ var gmxProtocolModule = {
2413
2871
  ]
2414
2872
  };
2415
2873
  registerProtocolModule(gmxProtocolModule);
2874
+
2875
+ // src/protocols/evm/hyperliquid/support.ts
2876
+ var HYPERLIQUID_SUPPORTED_CHAIN_IDS = [999, 998];
2877
+ function isHyperliquidChainSupported(chainId) {
2878
+ return HYPERLIQUID_SUPPORTED_CHAIN_IDS.includes(chainId);
2879
+ }
2880
+
2881
+ // src/protocols/evm/hyperliquid/index.ts
2882
+ var HYPERLIQUID_PROTOCOL_ID = "hyperliquid";
2883
+ var hyperliquidProtocolModule = {
2884
+ id: HYPERLIQUID_PROTOCOL_ID,
2885
+ chainCategory: "evm",
2886
+ isChainSupported(ctx) {
2887
+ if (ctx.chainCategory !== "evm") return false;
2888
+ const chainId = typeof ctx.chainId === "number" ? ctx.chainId : Number(ctx.chainId);
2889
+ return Number.isFinite(chainId) && isHyperliquidChainSupported(chainId);
2890
+ },
2891
+ isTokenSupported(token) {
2892
+ if (token.category !== "evm") return false;
2893
+ return token.kind === "erc20" || token.kind === "native";
2894
+ },
2895
+ actions: [
2896
+ {
2897
+ id: "hyperliquid.limitOrder",
2898
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2899
+ chainCategory: "evm",
2900
+ description: "Place a Hyperliquid limit/IoC order via HyperEVM CoreWriter",
2901
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2902
+ params: {
2903
+ coin: { type: "string", required: true, description: "Market coin e.g. BTC" },
2904
+ isBuy: { type: "boolean", required: true, description: "true for buy/long, false for sell/short" },
2905
+ limitPxHuman: { type: "string", required: true, description: "Limit price" },
2906
+ szHuman: { type: "string", required: true, description: "Order size in coin units" },
2907
+ marketKind: { type: "string", required: false, description: "perp (default) or spot" },
2908
+ tif: { type: "string", required: false, description: "gtc, ioc, or alo" },
2909
+ dex: { type: "string", required: false, description: "HIP-3 dex name when applicable" }
2910
+ }
2911
+ },
2912
+ {
2913
+ id: "hyperliquid.close",
2914
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2915
+ chainCategory: "evm",
2916
+ description: "Close or reduce a perp via IoC reduce-only limit order (CoreWriter)",
2917
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2918
+ params: {
2919
+ coin: { type: "string", required: true, description: "Market coin" },
2920
+ isLong: { type: "boolean", required: true, description: "true if closing a long position" },
2921
+ limitPxHuman: { type: "string", required: true, description: "Limit price" },
2922
+ szHuman: { type: "string", required: true, description: "Size to close in coin units" }
2923
+ }
2924
+ },
2925
+ {
2926
+ id: "hyperliquid.cancel",
2927
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2928
+ chainCategory: "evm",
2929
+ description: "Cancel a Hyperliquid open order via CoreWriter",
2930
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2931
+ params: {
2932
+ coin: { type: "string", required: true, description: "Market coin" },
2933
+ oid: { type: "number", required: true, description: "Order id from openOrders" }
2934
+ }
2935
+ },
2936
+ {
2937
+ id: "hyperliquid.usdTransfer",
2938
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2939
+ chainCategory: "evm",
2940
+ description: "Move USDC between Hyperliquid spot and perp margin accounts",
2941
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2942
+ params: {
2943
+ usdHuman: { type: "string", required: true, description: "USD amount" },
2944
+ toPerp: { type: "boolean", required: true, description: "true spot\u2192perp, false perp\u2192spot" }
2945
+ }
2946
+ },
2947
+ {
2948
+ id: "hyperliquid.vaultDeposit",
2949
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2950
+ chainCategory: "evm",
2951
+ description: "Deposit USD into a Hyperliquid vault",
2952
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2953
+ params: {
2954
+ vaultAddress: { type: "string", required: true, description: "Vault address" },
2955
+ usdHuman: { type: "string", required: true, description: "USD amount" }
2956
+ }
2957
+ },
2958
+ {
2959
+ id: "hyperliquid.vaultWithdraw",
2960
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2961
+ chainCategory: "evm",
2962
+ description: "Withdraw USD from a Hyperliquid vault (includes accrued PnL)",
2963
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2964
+ params: {
2965
+ vaultAddress: { type: "string", required: true, description: "Vault address" },
2966
+ usdHuman: { type: "string", required: true, description: "USD amount" }
2967
+ }
2968
+ },
2969
+ {
2970
+ id: "hyperliquid.stake",
2971
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2972
+ chainCategory: "evm",
2973
+ description: "Stake HYPE via CoreWriter",
2974
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2975
+ params: {
2976
+ hypeHuman: { type: "string", required: true, description: "HYPE amount" }
2977
+ }
2978
+ },
2979
+ {
2980
+ id: "hyperliquid.unstake",
2981
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2982
+ chainCategory: "evm",
2983
+ description: "Unstake HYPE via CoreWriter",
2984
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2985
+ params: {
2986
+ hypeHuman: { type: "string", required: true, description: "HYPE amount" }
2987
+ }
2988
+ },
2989
+ {
2990
+ id: "hyperliquid.delegate",
2991
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
2992
+ chainCategory: "evm",
2993
+ description: "Delegate staked HYPE to a validator",
2994
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
2995
+ params: {
2996
+ hypeHuman: { type: "string", required: true, description: "HYPE amount" },
2997
+ validator: { type: "string", required: true, description: "Validator address" }
2998
+ }
2999
+ },
3000
+ {
3001
+ id: "hyperliquid.undelegate",
3002
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
3003
+ chainCategory: "evm",
3004
+ description: "Undelegate HYPE from a validator",
3005
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
3006
+ params: {
3007
+ hypeHuman: { type: "string", required: true, description: "HYPE amount" },
3008
+ validator: { type: "string", required: true, description: "Validator address" }
3009
+ }
3010
+ }
3011
+ ]
3012
+ };
3013
+ registerProtocolModule(hyperliquidProtocolModule);
2416
3014
  var skillsDir = path.join(path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('catalog.cjs', document.baseURI).href)))), "skills");
2417
3015
  var SKILL_PROTOCOL_IDS = [
2418
3016
  "aave-v4",
@@ -2423,7 +3021,8 @@ var SKILL_PROTOCOL_IDS = [
2423
3021
  "euler-v2",
2424
3022
  "maple-syrup",
2425
3023
  "sky",
2426
- "gmx"
3024
+ "gmx",
3025
+ "hyperliquid"
2427
3026
  ];
2428
3027
  function getToolsForProtocol(protocolId) {
2429
3028
  return MCP_TOOL_DEFINITIONS.filter((t) => t.protocolId === protocolId);
@@ -2717,6 +3316,7 @@ registerProtocolModule(skyProtocolModule);
2717
3316
  registerProtocolModule(aaveV4ProtocolModule);
2718
3317
  registerProtocolModule(eulerV2ProtocolModule);
2719
3318
  registerProtocolModule(gmxProtocolModule);
3319
+ registerProtocolModule(hyperliquidProtocolModule);
2720
3320
  function getAgentCatalog() {
2721
3321
  return {
2722
3322
  protocols: getProtocolModules(),
@@ -2734,6 +3334,7 @@ function getAgentCatalog() {
2734
3334
  aaveV4: aaveV4ProtocolModule,
2735
3335
  eulerV2: eulerV2ProtocolModule,
2736
3336
  gmx: gmxProtocolModule,
3337
+ hyperliquid: hyperliquidProtocolModule,
2737
3338
  /** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
2738
3339
  mcp: getAgentCatalogForMcp()
2739
3340
  };
@@ -2806,6 +3407,36 @@ exports.mcpGmxIncreaseInputSchema = mcpGmxIncreaseInputSchema;
2806
3407
  exports.mcpGmxMultisignOutputSchema = mcpServerSubmitOutputSchema;
2807
3408
  exports.mcpGmxStakeGmxInputSchema = mcpGmxStakeGmxInputSchema;
2808
3409
  exports.mcpGmxUnstakeGmxInputSchema = mcpGmxUnstakeGmxInputSchema;
3410
+ exports.mcpHyperliquidCancelInputSchema = mcpHyperliquidCancelInputSchema;
3411
+ exports.mcpHyperliquidCloseInputSchema = mcpHyperliquidCloseInputSchema;
3412
+ exports.mcpHyperliquidDelegateInputSchema = mcpHyperliquidDelegateInputSchema;
3413
+ exports.mcpHyperliquidFetchDelegationsInputSchema = mcpHyperliquidFetchDelegationsInputSchema;
3414
+ exports.mcpHyperliquidFetchDelegationsOutputSchema = mcpHyperliquidFetchDelegationsOutputSchema;
3415
+ exports.mcpHyperliquidFetchMarketSnapshotInputSchema = mcpHyperliquidFetchMarketSnapshotInputSchema;
3416
+ exports.mcpHyperliquidFetchMarketSnapshotOutputSchema = mcpHyperliquidFetchMarketSnapshotOutputSchema;
3417
+ exports.mcpHyperliquidFetchMarketsInputSchema = mcpHyperliquidFetchMarketsInputSchema;
3418
+ exports.mcpHyperliquidFetchMarketsOutputSchema = mcpHyperliquidFetchMarketsOutputSchema;
3419
+ exports.mcpHyperliquidFetchOpenContextInputSchema = mcpHyperliquidFetchOpenContextInputSchema;
3420
+ exports.mcpHyperliquidFetchOpenContextOutputSchema = mcpHyperliquidFetchOpenContextOutputSchema;
3421
+ exports.mcpHyperliquidFetchOpenOrdersInputSchema = mcpHyperliquidFetchOpenOrdersInputSchema;
3422
+ exports.mcpHyperliquidFetchOpenOrdersOutputSchema = mcpHyperliquidFetchOpenOrdersOutputSchema;
3423
+ exports.mcpHyperliquidFetchPositionsInputSchema = mcpHyperliquidFetchPositionsInputSchema;
3424
+ exports.mcpHyperliquidFetchPositionsOutputSchema = mcpHyperliquidFetchPositionsOutputSchema;
3425
+ exports.mcpHyperliquidFetchStakingSummaryInputSchema = mcpHyperliquidFetchStakingSummaryInputSchema;
3426
+ exports.mcpHyperliquidFetchStakingSummaryOutputSchema = mcpHyperliquidFetchStakingSummaryOutputSchema;
3427
+ exports.mcpHyperliquidFetchUsdClassBalancesInputSchema = mcpHyperliquidFetchUsdClassBalancesInputSchema;
3428
+ exports.mcpHyperliquidFetchUsdClassBalancesOutputSchema = mcpHyperliquidFetchUsdClassBalancesOutputSchema;
3429
+ exports.mcpHyperliquidFetchUserVaultEquitiesInputSchema = mcpHyperliquidFetchUserVaultEquitiesInputSchema;
3430
+ exports.mcpHyperliquidFetchUserVaultEquitiesOutputSchema = mcpHyperliquidFetchUserVaultEquitiesOutputSchema;
3431
+ exports.mcpHyperliquidFetchVaultsInputSchema = mcpHyperliquidFetchVaultsInputSchema;
3432
+ exports.mcpHyperliquidFetchVaultsOutputSchema = mcpHyperliquidFetchVaultsOutputSchema;
3433
+ exports.mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidLimitOrderInputSchema;
3434
+ exports.mcpHyperliquidStakeInputSchema = mcpHyperliquidStakeInputSchema;
3435
+ exports.mcpHyperliquidUndelegateInputSchema = mcpHyperliquidUndelegateInputSchema;
3436
+ exports.mcpHyperliquidUnstakeInputSchema = mcpHyperliquidUnstakeInputSchema;
3437
+ exports.mcpHyperliquidUsdTransferInputSchema = mcpHyperliquidUsdTransferInputSchema;
3438
+ exports.mcpHyperliquidVaultDepositInputSchema = mcpHyperliquidVaultDepositInputSchema;
3439
+ exports.mcpHyperliquidVaultWithdrawInputSchema = mcpHyperliquidVaultWithdrawInputSchema;
2809
3440
  exports.mcpLidoClaimWithdrawalInputSchema = mcpLidoClaimWithdrawalInputSchema;
2810
3441
  exports.mcpLidoRequestWithdrawalsInputSchema = mcpLidoRequestWithdrawalsInputSchema;
2811
3442
  exports.mcpLidoSubmitInputSchema = mcpLidoSubmitInputSchema;