@continuumdao/ctm-mpc-defi 0.2.9 → 0.2.11

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 (36) hide show
  1. package/dist/agent/catalog.cjs +522 -19
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +639 -14
  4. package/dist/agent/catalog.js +510 -20
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/hyperliquid/SKILL.md +34 -6
  7. package/dist/agent/skills/morpho/SKILL.md +63 -0
  8. package/dist/core/index.cjs +9 -0
  9. package/dist/core/index.cjs.map +1 -1
  10. package/dist/core/index.d.ts +3 -1
  11. package/dist/core/index.js +8 -1
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/index.cjs +9 -0
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +8 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  19. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  20. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  21. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  22. package/dist/protocols/evm/hyperliquid/index.cjs +407 -34
  23. package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
  24. package/dist/protocols/evm/hyperliquid/index.d.ts +168 -15
  25. package/dist/protocols/evm/hyperliquid/index.js +390 -35
  26. package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
  27. package/dist/protocols/evm/maple/index.cjs.map +1 -1
  28. package/dist/protocols/evm/maple/index.js.map +1 -1
  29. package/dist/protocols/evm/morpho/index.cjs +1971 -0
  30. package/dist/protocols/evm/morpho/index.cjs.map +1 -0
  31. package/dist/protocols/evm/morpho/index.d.ts +522 -0
  32. package/dist/protocols/evm/morpho/index.js +1918 -0
  33. package/dist/protocols/evm/morpho/index.js.map +1 -0
  34. package/dist/protocols/evm/sky/index.cjs.map +1 -1
  35. package/dist/protocols/evm/sky/index.js.map +1 -1
  36. package/package.json +6 -1
@@ -520,6 +520,9 @@ var chainDetailSchema = z.object({
520
520
  "Optional gas config: { legacy?, gasLimit?, gasMultiplier?, gasPrice?, baseFee?, priorityFee?, baseFeeMultiplier? }."
521
521
  );
522
522
  var evmMultisignCommonInputSchema = z.object({
523
+ keyGenId: z.string().min(1).optional().describe(
524
+ "KeyGen request id from get_preferred_key_gen / conversation context. MCP server resolves keyGen, executorAddress, rpcUrl, and chainDetail \u2014 do not pass those fields when keyGenId is set."
525
+ ),
523
526
  keyGen: keyGenSchema,
524
527
  purposeText: z.string().min(1).describe(
525
528
  "Human-readable purpose for the sign request. Stored in bodyForSign.purpose (may be appended with an automatic batch suffix)."
@@ -924,6 +927,74 @@ var mcpEulerV2CollateralWithdrawInputSchema = mcpMultisignInput({
924
927
  collateralAsset: evmAddressSchema,
925
928
  amountHuman: z.string().min(1)
926
929
  });
930
+ var mcpMorphoVaultDepositInputSchema = mcpMultisignInput({
931
+ vault: evmAddressSchema,
932
+ underlying: evmAddressSchema.describe("Underlying asset; use wrapped native with isNativeIn for ETH."),
933
+ amountHuman: z.string().min(1),
934
+ isNativeIn: z.boolean().optional()
935
+ });
936
+ var mcpMorphoVaultWithdrawInputSchema = mcpMultisignInput({
937
+ vault: evmAddressSchema,
938
+ amountHuman: z.string().min(1)
939
+ });
940
+ var mcpMorphoBlueCollateralDepositInputSchema = mcpMultisignInput({
941
+ marketId: z.string().min(1).describe("Morpho Blue marketId from API."),
942
+ collateralToken: evmAddressSchema,
943
+ amountHuman: z.string().min(1),
944
+ isNativeIn: z.boolean().optional()
945
+ });
946
+ var mcpMorphoBlueBorrowInputSchema = mcpMultisignInput({
947
+ marketId: z.string().min(1),
948
+ loanToken: evmAddressSchema,
949
+ amountHuman: z.string().min(1)
950
+ });
951
+ var mcpMorphoBlueRepayInputSchema = mcpMultisignInput({
952
+ marketId: z.string().min(1),
953
+ loanToken: evmAddressSchema,
954
+ amountHuman: z.string().min(1)
955
+ });
956
+ var mcpMorphoBlueCollateralWithdrawInputSchema = mcpMultisignInput({
957
+ marketId: z.string().min(1),
958
+ amountHuman: z.string().min(1),
959
+ collateralDecimals: z.number().int().min(0).max(36).optional()
960
+ });
961
+ var mcpMorphoMerklClaimInputSchema = mcpMultisignInput({
962
+ claimData: z.string().min(1).describe("Hex calldata for Merkl Distributor.claim from Merkl API."),
963
+ distributor: evmAddressSchema.optional(),
964
+ valueWei: z.string().optional()
965
+ });
966
+ var morphoExposureRowSchema = z.object({
967
+ label: z.string(),
968
+ allocatedUsdLabel: z.string(),
969
+ allocationPercentLabel: z.string()
970
+ });
971
+ var mcpMorphoFetchEarnVaultsInputSchema = z.object({
972
+ chainId: z.number().int().positive(),
973
+ underlying: z.string().trim().min(1).optional().describe("Deposit asset symbol (e.g. USDC) or ERC-20 address. Omit to search all listed vaults on the chain."),
974
+ query: z.string().trim().min(1).optional().describe("Case-insensitive filter on vault name, symbol, address, or underlying symbol (e.g. Steakhouse, bbqUSDC)."),
975
+ limit: z.number().int().min(1).max(200).optional().describe("Max rows (default 50).")
976
+ });
977
+ var mcpMorphoFetchEarnVaultsOutputSchema = z.object({
978
+ vaults: z.array(
979
+ z.object({
980
+ vaultAddress: z.string(),
981
+ vaultName: z.string(),
982
+ vaultSymbol: z.string(),
983
+ underlyingAddress: z.string(),
984
+ underlyingSymbol: z.string(),
985
+ apy: z.string(),
986
+ netApy: z.string(),
987
+ netApy7d: z.string(),
988
+ netApy30d: z.string(),
989
+ netApy90d: z.string(),
990
+ performanceFee: z.string(),
991
+ managementFee: z.string().nullable(),
992
+ totalDepositsUsd: z.string(),
993
+ liquidityUsd: z.string(),
994
+ exposure: z.array(morphoExposureRowSchema)
995
+ })
996
+ )
997
+ });
927
998
  function mcpGmxMultisignInput(fields) {
928
999
  return evmMultisignCommonInputSchema.extend(fields);
929
1000
  }
@@ -1128,7 +1199,8 @@ var mcpHyperliquidFetchMarketsOutputSchema = z.object({
1128
1199
  asset: z.number(),
1129
1200
  szDecimals: z.number(),
1130
1201
  maxLeverage: z.number(),
1131
- onlyIsolated: z.boolean().optional()
1202
+ onlyIsolated: z.boolean().optional(),
1203
+ dex: z.string().optional()
1132
1204
  })
1133
1205
  ),
1134
1206
  dexes: z.array(
@@ -1138,6 +1210,30 @@ var mcpHyperliquidFetchMarketsOutputSchema = z.object({
1138
1210
  })
1139
1211
  )
1140
1212
  });
1213
+ var mcpHyperliquidSearchMarketsInputSchema = z.object({
1214
+ chainId: z.number().int().positive(),
1215
+ query: z.string().min(1),
1216
+ dex: z.string().optional(),
1217
+ limit: z.number().int().positive().max(50).optional()
1218
+ });
1219
+ var mcpHyperliquidSearchMarketsOutputSchema = z.object({
1220
+ matches: z.array(
1221
+ z.object({
1222
+ coin: z.string(),
1223
+ symbol: z.string(),
1224
+ dex: z.string().optional(),
1225
+ asset: z.number(),
1226
+ szDecimals: z.number(),
1227
+ maxLeverage: z.number(),
1228
+ onlyIsolated: z.boolean().optional(),
1229
+ displayName: z.string().optional(),
1230
+ category: z.string().optional(),
1231
+ keywords: z.array(z.string()).optional(),
1232
+ matchScore: z.number(),
1233
+ matchReason: z.string()
1234
+ })
1235
+ )
1236
+ });
1141
1237
  var mcpHyperliquidFetchOpenContextInputSchema = z.object({
1142
1238
  chainId: z.number().int().positive(),
1143
1239
  executorAddress: evmAddressSchema,
@@ -1180,25 +1276,70 @@ var mcpHyperliquidFetchMarketSnapshotInputSchema = z.object({
1180
1276
  chainId: z.number().int().positive(),
1181
1277
  coin: z.string().min(1),
1182
1278
  interval: hyperliquidOhlcvIntervalSchema.optional(),
1183
- dex: z.string().optional()
1279
+ dex: z.string().optional(),
1280
+ /** Recent OHLCV bars to return (default 48, max 200). Live price is always current. */
1281
+ candleLimit: z.number().int().positive().max(200).optional()
1282
+ });
1283
+ var hyperliquidOhlcvCandleSchema = z.object({
1284
+ timestampMs: z.number(),
1285
+ open: z.string(),
1286
+ high: z.string(),
1287
+ low: z.string(),
1288
+ close: z.string(),
1289
+ volume: z.string()
1290
+ });
1291
+ var hyperliquidLivePriceSchema = z.object({
1292
+ markPx: z.string().nullable(),
1293
+ midPx: z.string().nullable(),
1294
+ oraclePx: z.string().nullable(),
1295
+ prevDayPx: z.string().nullable(),
1296
+ midUsd: z.string(),
1297
+ source: z.enum(["midPx", "markPx", "allMids"])
1184
1298
  });
1185
1299
  var mcpHyperliquidFetchMarketSnapshotOutputSchema = z.object({
1186
1300
  snapshot: z.object({
1187
1301
  coin: z.string(),
1188
- midUsd: z.string().nullable(),
1302
+ dex: z.string().nullable(),
1303
+ livePrice: hyperliquidLivePriceSchema,
1304
+ midUsd: z.string(),
1189
1305
  fetchedAtMs: z.number(),
1190
1306
  interval: hyperliquidOhlcvIntervalSchema,
1191
- candles: z.array(
1192
- z.object({
1193
- timestampMs: z.number(),
1194
- open: z.string(),
1195
- high: z.string(),
1196
- low: z.string(),
1197
- close: z.string(),
1198
- volume: z.string()
1199
- })
1200
- )
1201
- })
1307
+ latestCandle: hyperliquidOhlcvCandleSchema.nullable(),
1308
+ candles: z.array(hyperliquidOhlcvCandleSchema),
1309
+ candleCount: z.number()
1310
+ }),
1311
+ resolvedCoin: z.string(),
1312
+ dex: z.string().nullable()
1313
+ });
1314
+ var mcpHyperliquidFetchOhlcvInputSchema = z.object({
1315
+ chainId: z.number().int().positive(),
1316
+ coin: z.string().min(1),
1317
+ interval: hyperliquidOhlcvIntervalSchema.optional(),
1318
+ dex: z.string().optional(),
1319
+ /** Calendar-day lookback ending now (e.g. 7 = last week). Preferred for agent requests. */
1320
+ lookbackDays: z.number().positive().max(90).optional(),
1321
+ /** Hour lookback ending now. Alternative to lookbackDays. */
1322
+ lookbackHours: z.number().positive().max(90 * 24).optional(),
1323
+ /** Explicit range start (ms since epoch). Use with endTimeMs. */
1324
+ startTimeMs: z.number().int().positive().optional(),
1325
+ /** Explicit range end (ms since epoch). Defaults to now. */
1326
+ endTimeMs: z.number().int().positive().optional()
1327
+ });
1328
+ var mcpHyperliquidFetchOhlcvOutputSchema = z.object({
1329
+ ohlcv: z.object({
1330
+ coin: z.string(),
1331
+ dex: z.string().nullable(),
1332
+ interval: hyperliquidOhlcvIntervalSchema,
1333
+ startTimeMs: z.number(),
1334
+ endTimeMs: z.number(),
1335
+ expectedBars: z.number(),
1336
+ candleCount: z.number(),
1337
+ latestCandle: hyperliquidOhlcvCandleSchema.nullable(),
1338
+ candles: z.array(hyperliquidOhlcvCandleSchema),
1339
+ fetchedAtMs: z.number()
1340
+ }),
1341
+ resolvedCoin: z.string(),
1342
+ dex: z.string().nullable()
1202
1343
  });
1203
1344
  var mcpHyperliquidFetchUsdClassBalancesInputSchema = z.object({
1204
1345
  chainId: z.number().int().positive(),
@@ -1609,6 +1750,87 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
1609
1750
  handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralWithdrawBatch" },
1610
1751
  inputZod: mcpEulerV2CollateralWithdrawInputSchema
1611
1752
  }),
1753
+ defineProtocolMcpTool({
1754
+ name: "ctm_morpho_build_vault_deposit_multisign",
1755
+ actionId: "morpho.vault-deposit",
1756
+ protocolId: "morpho",
1757
+ chainCategory: "evm",
1758
+ description: "Build Morpho vault deposit batch (wrap/approve + deposit). Works with listed V1 and V2 vaults.",
1759
+ prerequisites: [
1760
+ "keyGenId",
1761
+ "chainId",
1762
+ "vaultAddress from ctm_morpho_fetch_earn_vaults",
1763
+ "underlying",
1764
+ "amountHuman"
1765
+ ],
1766
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoVaultDepositBatch" },
1767
+ inputZod: mcpMorphoVaultDepositInputSchema
1768
+ }),
1769
+ defineProtocolMcpTool({
1770
+ name: "ctm_morpho_build_vault_withdraw_multisign",
1771
+ actionId: "morpho.vault-withdraw",
1772
+ protocolId: "morpho",
1773
+ chainCategory: "evm",
1774
+ description: "Build Morpho vault withdraw batch. Works with listed V1 and V2 vaults.",
1775
+ prerequisites: [
1776
+ "keyGenId",
1777
+ "chainId",
1778
+ "vaultAddress from ctm_morpho_fetch_earn_vaults or user positions",
1779
+ "amountHuman"
1780
+ ],
1781
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoVaultWithdraw" },
1782
+ inputZod: mcpMorphoVaultWithdrawInputSchema
1783
+ }),
1784
+ defineProtocolMcpTool({
1785
+ name: "ctm_morpho_build_blue_collateral_deposit_multisign",
1786
+ actionId: "morpho.blue-collateral-deposit",
1787
+ protocolId: "morpho",
1788
+ chainCategory: "evm",
1789
+ description: "Build Morpho Blue supplyCollateral batch.",
1790
+ prerequisites: ["keyGenId", "chainId", "marketId", "collateralToken", "amountHuman"],
1791
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueSupplyCollateralBatch" },
1792
+ inputZod: mcpMorphoBlueCollateralDepositInputSchema
1793
+ }),
1794
+ defineProtocolMcpTool({
1795
+ name: "ctm_morpho_build_blue_borrow_multisign",
1796
+ actionId: "morpho.blue-borrow",
1797
+ protocolId: "morpho",
1798
+ chainCategory: "evm",
1799
+ description: "Build Morpho Blue borrow batch.",
1800
+ prerequisites: ["keyGenId", "chainId", "marketId", "loanToken", "amountHuman"],
1801
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueBorrowBatch" },
1802
+ inputZod: mcpMorphoBlueBorrowInputSchema
1803
+ }),
1804
+ defineProtocolMcpTool({
1805
+ name: "ctm_morpho_build_blue_repay_multisign",
1806
+ actionId: "morpho.blue-repay",
1807
+ protocolId: "morpho",
1808
+ chainCategory: "evm",
1809
+ description: "Build Morpho Blue repay batch.",
1810
+ prerequisites: ["keyGenId", "chainId", "marketId", "loanToken", "amountHuman"],
1811
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueRepayBatch" },
1812
+ inputZod: mcpMorphoBlueRepayInputSchema
1813
+ }),
1814
+ defineProtocolMcpTool({
1815
+ name: "ctm_morpho_build_blue_collateral_withdraw_multisign",
1816
+ actionId: "morpho.blue-collateral-withdraw",
1817
+ protocolId: "morpho",
1818
+ chainCategory: "evm",
1819
+ description: "Build Morpho Blue withdrawCollateral batch.",
1820
+ prerequisites: ["keyGenId", "chainId", "marketId", "amountHuman"],
1821
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueWithdrawCollateralBatch" },
1822
+ inputZod: mcpMorphoBlueCollateralWithdrawInputSchema
1823
+ }),
1824
+ defineProtocolMcpTool({
1825
+ name: "ctm_morpho_build_merkl_claim_multisign",
1826
+ actionId: "morpho.merkl-claim",
1827
+ protocolId: "morpho",
1828
+ chainCategory: "evm",
1829
+ description: "Build Morpho Merkl Distributor.claim transaction.",
1830
+ prerequisites: ["keyGenId", "chainId", "claim calldata from Merkl API"],
1831
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoMerklDistributorClaim" },
1832
+ inputZod: mcpMorphoMerklClaimInputSchema
1833
+ }),
1612
1834
  defineProtocolMcpTool({
1613
1835
  name: "ctm_gmx_build_increase_multisign",
1614
1836
  actionId: "gmx.increase",
@@ -2132,19 +2354,31 @@ var CORE_MCP_TOOL_DEFINITIONS = [
2132
2354
  actionId: "hyperliquid.fetch-markets",
2133
2355
  protocolId: "hyperliquid",
2134
2356
  chainCategory: "evm",
2135
- description: "List Hyperliquid perp markets (coin, maxLeverage, szDecimals) and HIP-3 dex names. chainId 999 mainnet or 998 testnet.",
2357
+ description: "List Hyperliquid perp markets (native + all HIP-3 dexes when dex omitted). Each market has coin name, maxLeverage, szDecimals, and optional dex (e.g. xyz for xyz:AAPL). chainId 999 mainnet or 998 testnet.",
2136
2358
  prerequisites: ["chainId 999 or 998"],
2137
2359
  followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
2138
2360
  handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketsSummary" },
2139
2361
  inputZod: mcpHyperliquidFetchMarketsInputSchema,
2140
2362
  outputZod: mcpHyperliquidFetchMarketsOutputSchema
2141
2363
  }),
2364
+ defineMcpTool({
2365
+ name: "ctm_hyperliquid_search_markets",
2366
+ actionId: "hyperliquid.search-markets",
2367
+ protocolId: "hyperliquid",
2368
+ chainCategory: "evm",
2369
+ description: "Search Hyperliquid perp markets across all dexes by ticker (AAPL, BTC), display name, or keyword (Apple, tesla). Case-insensitive. Returns canonical coin names (e.g. xyz:AAPL).",
2370
+ prerequisites: ["chainId 999 or 998", "query"],
2371
+ followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
2372
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidSearchMarketsSummary" },
2373
+ inputZod: mcpHyperliquidSearchMarketsInputSchema,
2374
+ outputZod: mcpHyperliquidSearchMarketsOutputSchema
2375
+ }),
2142
2376
  defineMcpTool({
2143
2377
  name: "ctm_hyperliquid_fetch_open_context",
2144
2378
  actionId: "hyperliquid.fetch-open-context",
2145
2379
  protocolId: "hyperliquid",
2146
2380
  chainCategory: "evm",
2147
- description: "Per-market trading context: account value, withdrawable, margin used, leverage setting, mark price, available buy/sell size.",
2381
+ description: "Per-market trading context: account value, withdrawable, margin used, leverage setting, mark price, available buy/sell size. Resolves ticker/name (AAPL, Apple) across dexes.",
2148
2382
  prerequisites: ["chainId", "executorAddress", "coin from fetch_markets"],
2149
2383
  followUp: ["ctm_hyperliquid_build_limit_order_multisign"],
2150
2384
  handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOpenContextSummary" },
@@ -2180,13 +2414,25 @@ var CORE_MCP_TOOL_DEFINITIONS = [
2180
2414
  actionId: "hyperliquid.fetch-market-snapshot",
2181
2415
  protocolId: "hyperliquid",
2182
2416
  chainCategory: "evm",
2183
- description: "Mid price and OHLCV candles for a Hyperliquid perp coin. Default interval 15m.",
2417
+ description: "Live mark/mid price plus recent OHLCV candles for a Hyperliquid perp. Uses metaAndAssetCtxs for live prices (not stale candle close). Default interval 15m, 48 bars. Throws if live price unavailable.",
2184
2418
  prerequisites: ["chainId", "coin"],
2185
2419
  followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
2186
2420
  handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketSnapshotSummary" },
2187
2421
  inputZod: mcpHyperliquidFetchMarketSnapshotInputSchema,
2188
2422
  outputZod: mcpHyperliquidFetchMarketSnapshotOutputSchema
2189
2423
  }),
2424
+ defineMcpTool({
2425
+ name: "ctm_hyperliquid_fetch_ohlcv",
2426
+ actionId: "hyperliquid.fetch-ohlcv",
2427
+ protocolId: "hyperliquid",
2428
+ chainCategory: "evm",
2429
+ description: "OHLCV candle history for a Hyperliquid perp over an explicit lookback or time range. Requests only the needed window from Hyperliquid (e.g. lookbackDays: 7, interval: 15m \u2192 ~672 bars). Max 2000 bars \u2014 use coarser interval for longer history. Resolves ticker/name across dexes.",
2430
+ prerequisites: ["chainId 999 or 998", "coin", "lookbackDays or lookbackHours or startTimeMs"],
2431
+ followUp: ["ctm_hyperliquid_fetch_market_snapshot", "ctm_hyperliquid_build_limit_order_multisign"],
2432
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOhlcvSummary" },
2433
+ inputZod: mcpHyperliquidFetchOhlcvInputSchema,
2434
+ outputZod: mcpHyperliquidFetchOhlcvOutputSchema
2435
+ }),
2190
2436
  defineMcpTool({
2191
2437
  name: "ctm_hyperliquid_fetch_usd_class_balances",
2192
2438
  actionId: "hyperliquid.fetch-usd-balances",
@@ -2246,6 +2492,21 @@ var CORE_MCP_TOOL_DEFINITIONS = [
2246
2492
  handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchDelegationsForExecutor" },
2247
2493
  inputZod: mcpHyperliquidFetchDelegationsInputSchema,
2248
2494
  outputZod: mcpHyperliquidFetchDelegationsOutputSchema
2495
+ }),
2496
+ defineMcpTool({
2497
+ name: "ctm_morpho_fetch_earn_vaults",
2498
+ actionId: "morpho.fetch-earn-vaults",
2499
+ protocolId: "morpho",
2500
+ chainCategory: "evm",
2501
+ description: "Morpho-listed earn vaults (V1 + V2 unified). Filter by deposit asset symbol/address and/or case-insensitive vault name search. Returns vaultAddress for deposit/withdraw multisign tools.",
2502
+ prerequisites: ["chainId"],
2503
+ followUp: [
2504
+ "ctm_morpho_build_vault_deposit_multisign",
2505
+ "ctm_morpho_build_vault_withdraw_multisign"
2506
+ ],
2507
+ handler: { importPath: "protocols/evm/morpho", exportName: "morphoFetchEarnVaultsSummary" },
2508
+ inputZod: mcpMorphoFetchEarnVaultsInputSchema,
2509
+ outputZod: mcpMorphoFetchEarnVaultsOutputSchema
2249
2510
  })
2250
2511
  ];
2251
2512
  var MCP_TOOL_DEFINITIONS = [
@@ -2472,7 +2733,30 @@ registerProtocolModule(ethenaProtocolModule);
2472
2733
  function isMapleSyrupSupportedChain(chainId) {
2473
2734
  return chainId === 1 || chainId === 11155111;
2474
2735
  }
2736
+
2737
+ // src/core/defiProxy.ts
2738
+ var aaveGraphqlProxyUrl;
2739
+ var morphoGraphqlProxyUrl;
2740
+ function getAaveGraphqlProxyUrl() {
2741
+ return aaveGraphqlProxyUrl;
2742
+ }
2743
+ function getMorphoGraphqlProxyUrl() {
2744
+ return morphoGraphqlProxyUrl;
2745
+ }
2475
2746
  async function postJsonViaOptionalProxy(args) {
2747
+ const proxy = args.proxyUrl?.trim();
2748
+ if (proxy) {
2749
+ const r2 = await fetch(proxy, {
2750
+ method: "POST",
2751
+ headers: { "content-type": "application/json" },
2752
+ body: JSON.stringify(args.proxyEnvelope ?? args.body)
2753
+ });
2754
+ if (!r2.ok) {
2755
+ const t = await r2.text().catch(() => "");
2756
+ throw new Error(t ? `Proxy HTTP ${r2.status}: ${t.slice(0, 200)}` : `Proxy HTTP ${r2.status}`);
2757
+ }
2758
+ return await r2.json();
2759
+ }
2476
2760
  const r = await fetch(args.directUrl, {
2477
2761
  method: "POST",
2478
2762
  headers: { "content-type": "application/json" },
@@ -2535,7 +2819,10 @@ async function aaveV4Gql(query, variables) {
2535
2819
  const body = { query, variables: variables ?? {} };
2536
2820
  const j = await postJsonViaOptionalProxy({
2537
2821
  directUrl: AAVE_V4_GRAPHQL_URL,
2538
- body});
2822
+ body,
2823
+ proxyUrl: getAaveGraphqlProxyUrl(),
2824
+ proxyEnvelope: body
2825
+ });
2539
2826
  if (j.errors?.length) {
2540
2827
  const msg = j.errors.map((e) => e.message ?? "Unknown").join("; ");
2541
2828
  throw new Error(msg);
@@ -3008,6 +3295,175 @@ var hyperliquidProtocolModule = {
3008
3295
  ]
3009
3296
  };
3010
3297
  registerProtocolModule(hyperliquidProtocolModule);
3298
+ var MORPHO_GRAPHQL_URL = "https://api.morpho.org/graphql";
3299
+ async function morphoGql(query, variables) {
3300
+ const body = { query, variables: variables ?? {} };
3301
+ const j = await postJsonViaOptionalProxy({
3302
+ directUrl: MORPHO_GRAPHQL_URL,
3303
+ body,
3304
+ proxyUrl: getMorphoGraphqlProxyUrl(),
3305
+ proxyEnvelope: body
3306
+ });
3307
+ if (j.errors?.length) {
3308
+ const msg = j.errors.map((e) => e.message ?? "Unknown").join("; ");
3309
+ throw new Error(msg);
3310
+ }
3311
+ if (j.data == null) throw new Error("Morpho API: empty response");
3312
+ return j.data;
3313
+ }
3314
+ async function fetchMorphoChains() {
3315
+ const d = await morphoGql(`
3316
+ query { chains { id network } }
3317
+ `);
3318
+ return d.chains ?? [];
3319
+ }
3320
+ async function loadMorphoSupportedChainIds() {
3321
+ const rows = await fetchMorphoChains();
3322
+ const s = /* @__PURE__ */ new Set();
3323
+ for (const c of rows) {
3324
+ if (typeof c.id === "number" && Number.isFinite(c.id)) s.add(c.id);
3325
+ }
3326
+ return s;
3327
+ }
3328
+ var VAULT_PAGE_SIZE = 100;
3329
+ async function fetchMorphoVaultsForChain(chainId, first = 100) {
3330
+ const d = await morphoGql(
3331
+ `
3332
+ query MorphoVaults($chainId: Int!, $first: Int!) {
3333
+ vaults(first: $first, where: { chainId_in: [$chainId], listed: true }, orderBy: TotalAssetsUsd, orderDirection: Desc) {
3334
+ items {
3335
+ address symbol name listed
3336
+ asset { address symbol decimals price { usd } }
3337
+ chain { id }
3338
+ state { apy netApy fee totalAssetsUsd allRewards { supplyApr asset { address symbol } } }
3339
+ }
3340
+ }
3341
+ }
3342
+ `,
3343
+ { chainId, first }
3344
+ );
3345
+ return d.vaults?.items ?? [];
3346
+ }
3347
+ async function fetchMorphoVaultV2sForChain(chainId, first = 100, skip = 0) {
3348
+ const d = await morphoGql(
3349
+ `
3350
+ query MorphoVaultV2s($chainId: Int!, $first: Int!, $skip: Int!) {
3351
+ vaultV2s(
3352
+ first: $first
3353
+ skip: $skip
3354
+ where: { chainId_in: [$chainId], listed: true }
3355
+ orderBy: TotalAssetsUsd
3356
+ orderDirection: Desc
3357
+ ) {
3358
+ items {
3359
+ address symbol name listed
3360
+ asset { address symbol decimals price { usd } }
3361
+ chain { id }
3362
+ apy netApy performanceFee managementFee totalAssetsUsd
3363
+ rewards { supplyApr asset { address symbol } }
3364
+ }
3365
+ }
3366
+ }
3367
+ `,
3368
+ { chainId, first, skip }
3369
+ );
3370
+ return d.vaultV2s?.items ?? [];
3371
+ }
3372
+ async function fetchAllMorphoVaultV2AssetAddresses(chainId) {
3373
+ const out = /* @__PURE__ */ new Set();
3374
+ let skip = 0;
3375
+ for (let page = 0; page < 20; page++) {
3376
+ const batch = await fetchMorphoVaultV2sForChain(chainId, VAULT_PAGE_SIZE, skip);
3377
+ if (!batch.length) break;
3378
+ for (const v of batch) {
3379
+ const a = (v.asset?.address ?? "").trim();
3380
+ if (isAddress(a)) out.add(getAddress(a).toLowerCase());
3381
+ }
3382
+ if (batch.length < VAULT_PAGE_SIZE) break;
3383
+ skip += VAULT_PAGE_SIZE;
3384
+ }
3385
+ return out;
3386
+ }
3387
+ var chainAssetCache = /* @__PURE__ */ new Map();
3388
+ async function ensureMorphoChainAssetCache(chainId) {
3389
+ const hit = chainAssetCache.get(chainId);
3390
+ if (hit) return hit;
3391
+ const modes = /* @__PURE__ */ new Map();
3392
+ const [v1Vaults, v2Assets] = await Promise.all([
3393
+ fetchMorphoVaultsForChain(chainId, 300),
3394
+ fetchAllMorphoVaultV2AssetAddresses(chainId)
3395
+ ]);
3396
+ for (const v of v1Vaults) {
3397
+ const a = (v.asset?.address ?? "").trim();
3398
+ if (!isAddress(a)) continue;
3399
+ const k = getAddress(a).toLowerCase();
3400
+ const prev = modes.get(k) ?? { earn: false, borrow: false, collateral: false };
3401
+ prev.earn = true;
3402
+ modes.set(k, prev);
3403
+ }
3404
+ for (const k of v2Assets) {
3405
+ const prev = modes.get(k) ?? { earn: false, borrow: false, collateral: false };
3406
+ prev.earn = true;
3407
+ modes.set(k, prev);
3408
+ }
3409
+ const marketsD = await morphoGql(
3410
+ `
3411
+ query MorphoMarketsAssets($chainId: Int!) {
3412
+ markets(first: 500, where: { chainId_in: [$chainId] }) {
3413
+ items {
3414
+ loanAsset { address }
3415
+ collateralAsset { address }
3416
+ }
3417
+ }
3418
+ }
3419
+ `,
3420
+ { chainId }
3421
+ );
3422
+ for (const m of marketsD.markets?.items ?? []) {
3423
+ const loanAddr = (m.loanAsset?.address ?? "").trim();
3424
+ const colAddr = (m.collateralAsset?.address ?? "").trim();
3425
+ if (isAddress(loanAddr)) {
3426
+ const k = getAddress(loanAddr).toLowerCase();
3427
+ const prev = modes.get(k) ?? { earn: false, borrow: false, collateral: false };
3428
+ prev.borrow = true;
3429
+ modes.set(k, prev);
3430
+ }
3431
+ if (isAddress(colAddr)) {
3432
+ const k = getAddress(colAddr).toLowerCase();
3433
+ const prev = modes.get(k) ?? { earn: false, borrow: false, collateral: false };
3434
+ prev.collateral = true;
3435
+ modes.set(k, prev);
3436
+ }
3437
+ }
3438
+ const cache = { modesByUnderlying: modes, nativeWrapped: null };
3439
+ chainAssetCache.set(chainId, cache);
3440
+ return cache;
3441
+ }
3442
+
3443
+ // src/protocols/evm/morpho/index.ts
3444
+ var MORPHO_PROTOCOL_ID = "morpho";
3445
+ var morphoProtocolModule = {
3446
+ id: MORPHO_PROTOCOL_ID,
3447
+ chainCategory: "evm",
3448
+ isChainSupported(ctx) {
3449
+ return ctx.chainCategory === "evm";
3450
+ },
3451
+ isTokenSupported(token) {
3452
+ return token.category === "evm" && (token.kind === "native" || token.kind === "erc20");
3453
+ },
3454
+ actions: [
3455
+ { id: "morpho.fetch-earn-vaults", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Search Morpho-listed earn vaults by asset or name", commonParams: [], params: {} },
3456
+ { id: "morpho.vault-deposit", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Deposit into Morpho-listed earn vault (V1 or V2)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3457
+ { id: "morpho.vault-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw from Morpho earn vault (V1 or V2)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3458
+ { id: "morpho.blue-collateral-deposit", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Supply collateral to Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3459
+ { id: "morpho.blue-borrow", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Borrow from Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3460
+ { id: "morpho.blue-repay", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Repay Morpho Blue borrow", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3461
+ { id: "morpho.blue-collateral-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw Morpho Blue collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3462
+ { id: "morpho.merkl-claim", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Claim Morpho Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
3463
+ { id: "morpho.midnight-borrow", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Morpho Midnight fixed-rate borrow (coming soon)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
3464
+ ]
3465
+ };
3466
+ registerProtocolModule(morphoProtocolModule);
3011
3467
  var skillsDir = join(dirname(fileURLToPath(import.meta.url)), "skills");
3012
3468
  var SKILL_PROTOCOL_IDS = [
3013
3469
  "aave-v4",
@@ -3019,7 +3475,8 @@ var SKILL_PROTOCOL_IDS = [
3019
3475
  "maple-syrup",
3020
3476
  "sky",
3021
3477
  "gmx",
3022
- "hyperliquid"
3478
+ "hyperliquid",
3479
+ "morpho"
3023
3480
  ];
3024
3481
  function getToolsForProtocol(protocolId) {
3025
3482
  return MCP_TOOL_DEFINITIONS.filter((t) => t.protocolId === protocolId);
@@ -3233,6 +3690,37 @@ var PROTOCOL_SUPPORT_ADVISORS = {
3233
3690
  return { tokens: [] };
3234
3691
  }
3235
3692
  }),
3693
+ morpho: advisor("morpho", "api_underlyings", {
3694
+ async supportedChainIds() {
3695
+ const set = await loadMorphoSupportedChainIds();
3696
+ return [...set].sort((a, b) => a - b);
3697
+ },
3698
+ async supportedTokens(chainId) {
3699
+ const cache = await ensureMorphoChainAssetCache(chainId);
3700
+ const tokens = [...cache.modesByUnderlying.entries()].map(([address, modes]) => ({
3701
+ address,
3702
+ roles: [
3703
+ ...modes.earn ? ["vault_underlying"] : [],
3704
+ ...modes.borrow ? ["loan"] : [],
3705
+ ...modes.collateral ? ["collateral"] : []
3706
+ ]
3707
+ }));
3708
+ return {
3709
+ tokens,
3710
+ notes: "Morpho vault assets and Blue market loan/collateral tokens from api.morpho.org."
3711
+ };
3712
+ },
3713
+ async isTokenSupported(chainId, address) {
3714
+ const cache = await ensureMorphoChainAssetCache(chainId);
3715
+ let normalized;
3716
+ try {
3717
+ normalized = getAddress(address).toLowerCase();
3718
+ } catch {
3719
+ return false;
3720
+ }
3721
+ return cache.modesByUnderlying.has(normalized);
3722
+ }
3723
+ }),
3236
3724
  "euler-v2": advisor("euler-v2", "subgraph_vaults", {
3237
3725
  async supportedChainIds() {
3238
3726
  return [...EULER_V2_SUBGRAPH_CHAIN_IDS];
@@ -3314,6 +3802,7 @@ registerProtocolModule(aaveV4ProtocolModule);
3314
3802
  registerProtocolModule(eulerV2ProtocolModule);
3315
3803
  registerProtocolModule(gmxProtocolModule);
3316
3804
  registerProtocolModule(hyperliquidProtocolModule);
3805
+ registerProtocolModule(morphoProtocolModule);
3317
3806
  function getAgentCatalog() {
3318
3807
  return {
3319
3808
  protocols: getProtocolModules(),
@@ -3332,11 +3821,12 @@ function getAgentCatalog() {
3332
3821
  eulerV2: eulerV2ProtocolModule,
3333
3822
  gmx: gmxProtocolModule,
3334
3823
  hyperliquid: hyperliquidProtocolModule,
3824
+ morpho: morphoProtocolModule,
3335
3825
  /** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
3336
3826
  mcp: getAgentCatalogForMcp()
3337
3827
  };
3338
3828
  }
3339
3829
 
3340
- export { EVM_COMMON_PARAM_DOCS, MANAGEMENT_SIG_DOC, MCP_NON_SUBMIT_TOOL_NAMES, MCP_TOOL_DEFINITIONS, MCP_TOOL_INPUT_SCHEMAS, MCP_TOOL_OUTPUT_SCHEMAS, MULTISIGN_OUTPUT_DOC, MULTISIGN_SUBMIT_OUTPUT_DOC, PROTOCOL_SUPPORT_ADVISORS, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4RepayInputSchema, mcpAaveV4WithdrawInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema, mcpServerSubmitOutputSchema as mcpGmxMultisignOutputSchema, mcpGmxStakeGmxInputSchema, mcpGmxUnstakeGmxInputSchema, mcpHyperliquidCancelInputSchema, mcpHyperliquidCloseInputSchema, mcpHyperliquidDelegateInputSchema, mcpHyperliquidFetchDelegationsInputSchema, mcpHyperliquidFetchDelegationsOutputSchema, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpMapleDepositInputSchema, mcpMapleRequestRedeemInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, mcpUniswapV4BuildCollectFeesMultisignInputSchema, mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildMintLiquidityMultisignInputSchema, mcpUniswapV4BuildSwapMultisignInputSchema, mcpUniswapV4CreateSwapInputSchema, mcpUniswapV4CreateSwapOutputSchema, mcpUniswapV4LpClaimInputSchema, mcpUniswapV4LpClaimOutputSchema, mcpUniswapV4LpCreatePositionInputSchema, mcpUniswapV4LpCreatePositionOutputSchema, mcpUniswapV4LpDecreaseInputSchema, mcpUniswapV4LpDecreaseOutputSchema, mcpUniswapV4LpIncreaseInputSchema, mcpUniswapV4LpIncreaseOutputSchema, mcpUniswapV4LpListPoolsInputSchema, mcpUniswapV4LpListPoolsOutputSchema, mcpUniswapV4LpListPositionsInputSchema, mcpUniswapV4LpListPositionsOutputSchema, mcpUniswapV4QuoteInputSchema, mcpUniswapV4QuoteOutputSchema, mcpUniswapV4RegisterPositionFromMintTxInputSchema, mcpUniswapV4RegisterPositionFromMintTxOutputSchema, mcpUniswapV4RegisterPositionNftInputSchema, mcpUniswapV4RegisterPositionNftOutputSchema, multisignOutputSchema, parseMcpToolInput, parseMcpToolOutput, parseMultisignBuilderOutput, uniswapQuoteTradeTypeSchema, zodSchemaToMcpJsonSchema };
3830
+ export { EVM_COMMON_PARAM_DOCS, MANAGEMENT_SIG_DOC, MCP_NON_SUBMIT_TOOL_NAMES, MCP_TOOL_DEFINITIONS, MCP_TOOL_INPUT_SCHEMAS, MCP_TOOL_OUTPUT_SCHEMAS, MULTISIGN_OUTPUT_DOC, MULTISIGN_SUBMIT_OUTPUT_DOC, PROTOCOL_SUPPORT_ADVISORS, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4RepayInputSchema, mcpAaveV4WithdrawInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema, mcpServerSubmitOutputSchema as mcpGmxMultisignOutputSchema, mcpGmxStakeGmxInputSchema, mcpGmxUnstakeGmxInputSchema, mcpHyperliquidCancelInputSchema, mcpHyperliquidCloseInputSchema, mcpHyperliquidDelegateInputSchema, mcpHyperliquidFetchDelegationsInputSchema, mcpHyperliquidFetchDelegationsOutputSchema, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOhlcvInputSchema, mcpHyperliquidFetchOhlcvOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidSearchMarketsInputSchema, mcpHyperliquidSearchMarketsOutputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpMapleDepositInputSchema, mcpMapleRequestRedeemInputSchema, mcpMorphoBlueBorrowInputSchema, mcpMorphoBlueCollateralDepositInputSchema, mcpMorphoBlueCollateralWithdrawInputSchema, mcpMorphoBlueRepayInputSchema, mcpMorphoFetchEarnVaultsInputSchema, mcpMorphoFetchEarnVaultsOutputSchema, mcpMorphoMerklClaimInputSchema, mcpMorphoVaultDepositInputSchema, mcpMorphoVaultWithdrawInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, mcpUniswapV4BuildCollectFeesMultisignInputSchema, mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildMintLiquidityMultisignInputSchema, mcpUniswapV4BuildSwapMultisignInputSchema, mcpUniswapV4CreateSwapInputSchema, mcpUniswapV4CreateSwapOutputSchema, mcpUniswapV4LpClaimInputSchema, mcpUniswapV4LpClaimOutputSchema, mcpUniswapV4LpCreatePositionInputSchema, mcpUniswapV4LpCreatePositionOutputSchema, mcpUniswapV4LpDecreaseInputSchema, mcpUniswapV4LpDecreaseOutputSchema, mcpUniswapV4LpIncreaseInputSchema, mcpUniswapV4LpIncreaseOutputSchema, mcpUniswapV4LpListPoolsInputSchema, mcpUniswapV4LpListPoolsOutputSchema, mcpUniswapV4LpListPositionsInputSchema, mcpUniswapV4LpListPositionsOutputSchema, mcpUniswapV4QuoteInputSchema, mcpUniswapV4QuoteOutputSchema, mcpUniswapV4RegisterPositionFromMintTxInputSchema, mcpUniswapV4RegisterPositionFromMintTxOutputSchema, mcpUniswapV4RegisterPositionNftInputSchema, mcpUniswapV4RegisterPositionNftOutputSchema, multisignOutputSchema, parseMcpToolInput, parseMcpToolOutput, parseMultisignBuilderOutput, uniswapQuoteTradeTypeSchema, zodSchemaToMcpJsonSchema };
3341
3831
  //# sourceMappingURL=catalog.js.map
3342
3832
  //# sourceMappingURL=catalog.js.map