@continuumdao/ctm-mpc-defi 0.2.43 → 0.2.45

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 (33) hide show
  1. package/dist/agent/catalog.cjs +276 -11
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +780 -9
  4. package/dist/agent/catalog.js +268 -12
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/aave-v4/SKILL.md +9 -1
  7. package/dist/agent/skills/euler-v2/SKILL.md +9 -0
  8. package/dist/agent/skills/hyperliquid/SKILL.md +32 -2
  9. package/dist/agent/skills/morpho/SKILL.md +8 -2
  10. package/dist/agent/skills/yield-compare/SKILL.md +4 -1
  11. package/dist/merklDistributor-CdqtZC9N.d.ts +65 -0
  12. package/dist/multisign-Dr0j9fHm.d.ts +489 -0
  13. package/dist/protocols/evm/aave-v4/index.cjs +207 -2
  14. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  15. package/dist/protocols/evm/aave-v4/index.d.ts +12 -467
  16. package/dist/protocols/evm/aave-v4/index.js +192 -3
  17. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  18. package/dist/protocols/evm/euler-v2/index.cjs +209 -1
  19. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  20. package/dist/protocols/evm/euler-v2/index.d.ts +9 -1
  21. package/dist/protocols/evm/euler-v2/index.js +208 -2
  22. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  23. package/dist/protocols/evm/hyperliquid/index.cjs +320 -0
  24. package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
  25. package/dist/protocols/evm/hyperliquid/index.d.ts +153 -1
  26. package/dist/protocols/evm/hyperliquid/index.js +303 -1
  27. package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
  28. package/dist/protocols/evm/morpho/index.cjs +169 -1
  29. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  30. package/dist/protocols/evm/morpho/index.d.ts +9 -1
  31. package/dist/protocols/evm/morpho/index.js +155 -2
  32. package/dist/protocols/evm/morpho/index.js.map +1 -1
  33. package/package.json +1 -1
@@ -1288,6 +1288,25 @@ function preprocessHyperliquidUndelegateInput(raw) {
1288
1288
  aliasField(o, "hypeHuman", "hypeHuman", "amount");
1289
1289
  return o;
1290
1290
  }
1291
+ function preprocessHyperliquidLendInput(raw) {
1292
+ const o = preprocessHyperliquidCoinInput(raw);
1293
+ if (!preprocessObject(o)) return raw;
1294
+ aliasField(o, "amountHuman", "amountHuman", "amount", "sz", "szHuman");
1295
+ const amount = String(o.amountHuman ?? "").trim().toLowerCase();
1296
+ if (amount === "max") {
1297
+ o.amountMax = true;
1298
+ o.amountHuman = void 0;
1299
+ }
1300
+ derivePurposeIfMissing(o, (x) => {
1301
+ const coin = String(x.coin ?? "").trim();
1302
+ const op = String(x.operation ?? "").trim();
1303
+ const amt = x.amountMax === true || x.amountMax === "true" ? "max" : String(x.amountHuman ?? "").trim();
1304
+ if (coin && op && amt) return `HL ${op} ${amt} ${coin}`;
1305
+ if (coin && op) return `HL ${op} ${coin}`;
1306
+ return void 0;
1307
+ });
1308
+ return o;
1309
+ }
1291
1310
  function preprocessUniswapLpCreateInput(raw) {
1292
1311
  const o = preprocessObject(raw);
1293
1312
  if (!o) return raw;
@@ -2489,6 +2508,45 @@ var mcpMorphoFetchMidnightOffersOutputSchema = zod.z.object({
2489
2508
  })
2490
2509
  )
2491
2510
  });
2511
+ var mcpMerklRewardsFetchInputSchema = zod.z.object({
2512
+ chainId: agentEvmChainIdSchema,
2513
+ user: zod.z.string().min(1).optional().describe("Wallet address. Omit when keyGenId is set \u2014 server fills from the KeyGen Ethereum address."),
2514
+ keyGenId: zod.z.string().min(1).optional().describe("Preferred. Server resolves user from get_preferred_key_gen / conversation KeyGen.")
2515
+ }).refine((d) => Boolean(d.user?.trim() || d.keyGenId?.trim()), {
2516
+ message: "Pass keyGenId (preferred) or user.",
2517
+ path: ["user"]
2518
+ });
2519
+ var mcpMerklRewardsFetchOutputSchema = zod.z.object({
2520
+ chainId: zod.z.number().int(),
2521
+ user: zod.z.string(),
2522
+ distributor: zod.z.string(),
2523
+ claimable: zod.z.array(
2524
+ zod.z.object({
2525
+ symbol: zod.z.string(),
2526
+ token: zod.z.string(),
2527
+ amountHuman: zod.z.string(),
2528
+ amountWei: zod.z.string(),
2529
+ decimals: zod.z.number().int(),
2530
+ root: zod.z.string()
2531
+ })
2532
+ ),
2533
+ claimableCount: zod.z.number().int(),
2534
+ firstRootClaimableCount: zod.z.number().int(),
2535
+ additionalRoots: zod.z.number().int(),
2536
+ skippedReulCount: zod.z.number().int(),
2537
+ notes: zod.z.string()
2538
+ });
2539
+ function preprocessMerklClaimInput(kind) {
2540
+ return (raw) => {
2541
+ if (!raw || typeof raw !== "object" || Array.isArray(raw)) return raw;
2542
+ const o = { ...raw };
2543
+ const purposeText = String(o.purposeText ?? o.purpose ?? "").trim();
2544
+ if (!purposeText) {
2545
+ o.purposeText = `${kind}: claim wallet-wide Merkl rewards`;
2546
+ }
2547
+ return o;
2548
+ };
2549
+ }
2492
2550
  var mcpServerCommonInputSchema = zod.z.object({
2493
2551
  keyGenId: zod.z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
2494
2552
  chainId: zod.z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
@@ -2856,11 +2914,42 @@ var mcpMorphoBlueCollateralWithdrawInputSchema = mcpMultisignInput({
2856
2914
  amountHuman: zod.z.string().min(1),
2857
2915
  collateralDecimals: agentCoercedOptionalIntSchema(zod.z.number().int().min(0).max(36))
2858
2916
  });
2859
- var mcpMorphoMerklClaimInputSchema = mcpMultisignInput({
2860
- claimData: zod.z.string().min(1).describe("Hex calldata for Merkl Distributor.claim from Merkl API."),
2861
- distributor: evmAddressSchema.optional(),
2862
- valueWei: zod.z.string().optional()
2863
- });
2917
+ var mcpMorphoMerklClaimInputSchema = withMultisignKeySourceRefine(
2918
+ zod.z.preprocess(
2919
+ preprocessMerklClaimInput("Morpho"),
2920
+ evmMultisignCommonInputSchema.extend({
2921
+ claimData: zod.z.string().min(1).optional().describe(
2922
+ "Optional. Hex calldata for Merkl Distributor.claim. Omit \u2014 server fetches wallet-wide Merkl proofs for keyGenId + chainId."
2923
+ ),
2924
+ distributor: evmAddressSchema.optional(),
2925
+ valueWei: zod.z.string().optional()
2926
+ })
2927
+ )
2928
+ );
2929
+ var mcpEulerV2MerklClaimInputSchema = withMultisignKeySourceRefine(
2930
+ zod.z.preprocess(
2931
+ preprocessMerklClaimInput("Euler v2"),
2932
+ evmMultisignCommonInputSchema.extend({
2933
+ claimData: zod.z.string().min(1).optional().describe(
2934
+ "Optional. Hex calldata for Merkl Distributor.claim. Omit \u2014 server fetches wallet-wide Merkl proofs for keyGenId + chainId."
2935
+ ),
2936
+ distributor: evmAddressSchema.optional(),
2937
+ valueWei: zod.z.string().optional()
2938
+ })
2939
+ )
2940
+ );
2941
+ var mcpAaveV4MerklClaimInputSchema = withMultisignKeySourceRefine(
2942
+ zod.z.preprocess(
2943
+ preprocessMerklClaimInput("Aave v4"),
2944
+ evmMultisignCommonInputSchema.extend({
2945
+ claimData: zod.z.string().min(1).optional().describe(
2946
+ "Optional. Hex calldata for Merkl Distributor.claim. Omit \u2014 server fetches wallet-wide Merkl proofs for keyGenId + chainId."
2947
+ ),
2948
+ distributor: evmAddressSchema.optional(),
2949
+ valueWei: zod.z.string().optional()
2950
+ })
2951
+ )
2952
+ );
2864
2953
  var mcpMorphoMidnightLendInputSchema = withMultisignKeySourceRefine(
2865
2954
  zod.z.preprocess(
2866
2955
  preprocessMorphoMidnightLendInput,
@@ -4434,6 +4523,57 @@ var mcpHyperliquidUpdateLeverageInputSchema = mcpHyperliquidMultisignInput(
4434
4523
  },
4435
4524
  preprocessHyperliquidCoinInput
4436
4525
  );
4526
+ var hyperliquidLendMarketRowSchema = zod.z.object({
4527
+ tokenIndex: zod.z.number(),
4528
+ coin: zod.z.string().describe("Spot token name \u2014 pass as coin to build_lend_multisign (USDT aliases to USDT0, BTC to UBTC)"),
4529
+ role: zod.z.enum(["collateral", "quote"]),
4530
+ szDecimals: zod.z.number().nullable(),
4531
+ supplyYearlyRate: zod.z.string().describe("Current supply APR as a yearly decimal (0.05 = 5% APR)"),
4532
+ borrowYearlyRate: zod.z.string().describe("Current borrow APR as a yearly decimal (0.05 = 5% APR)"),
4533
+ supplyAprPercent: zod.z.number().nullable(),
4534
+ borrowAprPercent: zod.z.number().nullable(),
4535
+ utilization: zod.z.string(),
4536
+ oraclePx: zod.z.string(),
4537
+ ltv: zod.z.string(),
4538
+ totalSupplied: zod.z.string(),
4539
+ totalBorrowed: zod.z.string(),
4540
+ balance: zod.z.string()
4541
+ });
4542
+ var mcpHyperliquidFetchLendMarketsInputSchema = hyperliquidFetchChainInputSchema;
4543
+ var mcpHyperliquidFetchLendMarketsOutputSchema = zod.z.object({
4544
+ markets: zod.z.array(hyperliquidLendMarketRowSchema),
4545
+ notes: zod.z.string()
4546
+ });
4547
+ var mcpHyperliquidFetchLendPositionsInputSchema = hyperliquidFetchChainInputSchema.extend({
4548
+ executorAddress: evmAddressSchema
4549
+ });
4550
+ var mcpHyperliquidFetchLendPositionsOutputSchema = zod.z.object({
4551
+ positions: zod.z.array(
4552
+ zod.z.object({
4553
+ tokenIndex: zod.z.number(),
4554
+ coin: zod.z.string(),
4555
+ role: zod.z.enum(["collateral", "quote"]).nullable(),
4556
+ suppliedBasis: zod.z.string(),
4557
+ suppliedValue: zod.z.string().describe("Copy as amountHuman for withdraw when not using amountMax"),
4558
+ borrowedBasis: zod.z.string(),
4559
+ borrowedValue: zod.z.string().describe("Copy as amountHuman for repay when not using amountMax")
4560
+ })
4561
+ ),
4562
+ health: zod.z.string(),
4563
+ healthFactor: zod.z.string().nullable(),
4564
+ userAbstraction: zod.z.string(),
4565
+ manualBorrowEnabled: zod.z.boolean(),
4566
+ notes: zod.z.string()
4567
+ });
4568
+ var mcpHyperliquidLendInputSchema = mcpHyperliquidMultisignInput(
4569
+ {
4570
+ coin: zod.z.string().min(1).describe("Spot token from fetch_lend_markets (USDC, USDT/USDT0, HYPE, BTC/UBTC)"),
4571
+ operation: zod.z.enum(["supply", "withdraw", "borrow", "repay"]),
4572
+ amountHuman: zod.z.string().min(1).optional().describe("Human amount. Omit or set amountMax for full withdraw/repay."),
4573
+ amountMax: agentBooleanSchema().optional().describe("true = wire amount null (max withdraw/repay).")
4574
+ },
4575
+ preprocessHyperliquidLendInput
4576
+ );
4437
4577
  var arcusFetchChainInputSchema = zod.z.object({
4438
4578
  chainId: zod.z.coerce.number().int().positive().default(4663).describe("Robinhood Chain (4663).")
4439
4579
  });
@@ -5039,6 +5179,16 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
5039
5179
  handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeRepay" },
5040
5180
  inputZod: mcpAaveV4RepayInputSchema
5041
5181
  }),
5182
+ defineProtocolMcpTool({
5183
+ name: "ctm_aave_v4_build_merkl_claim_multisign",
5184
+ actionId: "aave-v4.merkl-claim",
5185
+ protocolId: "aave-v4",
5186
+ chainCategory: "evm",
5187
+ description: "Build wallet-wide Merkl Distributor.claim. Pass keyGenId + chainId; server fetches proofs. Optional claimData override.",
5188
+ prerequisites: ["keyGenId", "chainId"],
5189
+ handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4MerklDistributorClaim" },
5190
+ inputZod: mcpAaveV4MerklClaimInputSchema
5191
+ }),
5042
5192
  defineProtocolMcpTool({
5043
5193
  name: "ctm_euler_v2_build_isolated_lend_multisign",
5044
5194
  actionId: "euler-v2.isolated-lend",
@@ -5099,6 +5249,16 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
5099
5249
  handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralWithdrawBatch" },
5100
5250
  inputZod: mcpEulerV2CollateralWithdrawInputSchema
5101
5251
  }),
5252
+ defineProtocolMcpTool({
5253
+ name: "ctm_euler_v2_build_merkl_claim_multisign",
5254
+ actionId: "euler-v2.merkl-claim",
5255
+ protocolId: "euler-v2",
5256
+ chainCategory: "evm",
5257
+ description: "Build wallet-wide Merkl Distributor.claim. Pass keyGenId + chainId; server fetches proofs. Optional claimData override. rEUL is omitted (Euler unlock stays in the node app).",
5258
+ prerequisites: ["keyGenId", "chainId"],
5259
+ handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2MerklDistributorClaim" },
5260
+ inputZod: mcpEulerV2MerklClaimInputSchema
5261
+ }),
5102
5262
  defineProtocolMcpTool({
5103
5263
  name: "ctm_morpho_build_vault_deposit_multisign",
5104
5264
  actionId: "morpho.vault-deposit",
@@ -5194,8 +5354,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
5194
5354
  actionId: "morpho.merkl-claim",
5195
5355
  protocolId: "morpho",
5196
5356
  chainCategory: "evm",
5197
- description: "Build Morpho Merkl Distributor.claim transaction.",
5198
- prerequisites: ["keyGenId", "chainId", "claim calldata from Merkl API"],
5357
+ description: "Build wallet-wide Merkl Distributor.claim. Pass keyGenId + chainId; server fetches proofs. Optional claimData override.",
5358
+ prerequisites: ["keyGenId", "chainId"],
5199
5359
  handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoMerklDistributorClaim" },
5200
5360
  inputZod: mcpMorphoMerklClaimInputSchema
5201
5361
  }),
@@ -5476,6 +5636,24 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
5476
5636
  handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildHyperliquidUpdateLeverageMultisign" },
5477
5637
  inputZod: mcpHyperliquidUpdateLeverageInputSchema
5478
5638
  }),
5639
+ defineProtocolMcpTool({
5640
+ name: "ctm_hyperliquid_build_lend_multisign",
5641
+ actionId: "hyperliquid.lend",
5642
+ protocolId: "hyperliquid",
5643
+ chainCategory: "evm",
5644
+ description: "Supply, withdraw, borrow, or repay on Hyperliquid Core lend via L1 /exchange EIP-712 \u2014 not CoreWriter. No useCustomGas. trigger_sign_result without txParams; broadcast_sign_result POSTs to /exchange. Manual borrow is disabled on portfolio-margin accounts. HYPE/UBTC supply is collateral (no yield); USDC/USDT0 supply earns APR but does not increase borrow capacity.",
5645
+ prerequisites: [
5646
+ "keyGenId",
5647
+ "chainId 999 or 998",
5648
+ "coin from ctm_hyperliquid_fetch_lend_markets",
5649
+ "operation supply|withdraw|borrow|repay",
5650
+ "amountHuman or amountMax",
5651
+ "ctm_hyperliquid_fetch_lend_positions for health and manualBorrowEnabled before borrow"
5652
+ ],
5653
+ followUp: ["sign_request_agree", "trigger_sign_result", "broadcast_sign_result"],
5654
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildHyperliquidBorrowLendMultisign" },
5655
+ inputZod: mcpHyperliquidLendInputSchema
5656
+ }),
5479
5657
  defineProtocolMcpTool({
5480
5658
  name: "ctm_arcus_build_create_api_key_multisign",
5481
5659
  actionId: "arcus.createApiKey",
@@ -6804,6 +6982,30 @@ var CORE_MCP_TOOL_DEFINITIONS = [
6804
6982
  inputZod: mcpHyperliquidFetchDelegationsInputSchema,
6805
6983
  outputZod: mcpHyperliquidFetchDelegationsOutputSchema
6806
6984
  }),
6985
+ defineMcpTool({
6986
+ name: "ctm_hyperliquid_fetch_lend_markets",
6987
+ actionId: "hyperliquid.fetch-lend-markets",
6988
+ protocolId: "hyperliquid",
6989
+ chainCategory: "evm",
6990
+ description: "Hyperliquid Core lend reserves with current supply APR and borrow APR (yearly rates, not APY), utilization, LTV, and totals. Collateral (HYPE, UBTC) earns no supply interest. Quote (USDC, USDT0, USDH) earns utilization APR. chainId 999 mainnet or 998 testnet.",
6991
+ prerequisites: ["chainId 999 or 998"],
6992
+ followUp: ["ctm_hyperliquid_fetch_lend_positions", "ctm_hyperliquid_build_lend_multisign"],
6993
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchLendMarketsSummary" },
6994
+ inputZod: mcpHyperliquidFetchLendMarketsInputSchema,
6995
+ outputZod: mcpHyperliquidFetchLendMarketsOutputSchema
6996
+ }),
6997
+ defineMcpTool({
6998
+ name: "ctm_hyperliquid_fetch_lend_positions",
6999
+ actionId: "hyperliquid.fetch-lend-positions",
7000
+ protocolId: "hyperliquid",
7001
+ chainCategory: "evm",
7002
+ description: "User Hyperliquid Core lend positions (supplied/borrowed), health, and whether manual borrow is enabled. Portfolio-margin accounts disable the manual borrow action.",
7003
+ prerequisites: ["chainId 999 or 998", "executorAddress"],
7004
+ followUp: ["ctm_hyperliquid_build_lend_multisign"],
7005
+ handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchLendPositionsSummary" },
7006
+ inputZod: mcpHyperliquidFetchLendPositionsInputSchema,
7007
+ outputZod: mcpHyperliquidFetchLendPositionsOutputSchema
7008
+ }),
6807
7009
  defineMcpTool({
6808
7010
  name: "ctm_arcus_fetch_markets",
6809
7011
  actionId: "arcus.fetch-markets",
@@ -7009,6 +7211,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7009
7211
  inputZod: mcpMorphoFetchPositionsInputSchema,
7010
7212
  outputZod: mcpMorphoFetchPositionsOutputSchema
7011
7213
  }),
7214
+ defineMcpTool({
7215
+ name: "ctm_morpho_fetch_merkl_rewards",
7216
+ actionId: "morpho.fetch-merkl-rewards",
7217
+ protocolId: "morpho",
7218
+ chainCategory: "evm",
7219
+ description: "Wallet-wide Merkl claimables for this address on a chain (not Morpho-only). Pass keyGenId or user. Other venues\u2019 campaigns can appear. rEUL is omitted. Follow with ctm_morpho_build_merkl_claim_multisign (keyGenId + chainId).",
7220
+ prerequisites: ["keyGenId or user", "chainId"],
7221
+ followUp: ["ctm_morpho_build_merkl_claim_multisign"],
7222
+ handler: { importPath: "protocols/evm/morpho", exportName: "morphoFetchMerklRewardsSummary" },
7223
+ inputZod: mcpMerklRewardsFetchInputSchema,
7224
+ outputZod: mcpMerklRewardsFetchOutputSchema
7225
+ }),
7012
7226
  defineMcpTool({
7013
7227
  name: "ctm_morpho_fetch_midnight_books",
7014
7228
  actionId: "morpho.fetch-midnight-books",
@@ -7090,6 +7304,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7090
7304
  inputZod: mcpEulerV2FetchEarnVaultsInputSchema,
7091
7305
  outputZod: mcpEulerV2FetchEarnVaultsOutputSchema
7092
7306
  }),
7307
+ defineMcpTool({
7308
+ name: "ctm_euler_v2_fetch_merkl_rewards",
7309
+ actionId: "euler-v2.fetch-merkl-rewards",
7310
+ protocolId: "euler-v2",
7311
+ chainCategory: "evm",
7312
+ description: "Wallet-wide Merkl claimables for this address on a chain (not Euler-only). Pass keyGenId or user. Other venues\u2019 campaigns can appear. rEUL is omitted (skippedReulCount; unlock in the node app). Follow with ctm_euler_v2_build_merkl_claim_multisign.",
7313
+ prerequisites: ["keyGenId or user", "chainId"],
7314
+ followUp: ["ctm_euler_v2_build_merkl_claim_multisign"],
7315
+ handler: { importPath: "protocols/evm/euler-v2", exportName: "eulerV2FetchMerklRewardsSummary" },
7316
+ inputZod: mcpMerklRewardsFetchInputSchema,
7317
+ outputZod: mcpMerklRewardsFetchOutputSchema
7318
+ }),
7093
7319
  defineMcpTool({
7094
7320
  name: "ctm_cctp_fetch_supported_routes",
7095
7321
  actionId: "circle-cctp.fetch-routes",
@@ -7699,6 +7925,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
7699
7925
  inputZod: mcpAaveV4FetchMarketInputSchema,
7700
7926
  outputZod: mcpAaveV4FetchMarketOutputSchema
7701
7927
  }),
7928
+ defineMcpTool({
7929
+ name: "ctm_aave_v4_fetch_merkl_rewards",
7930
+ actionId: "aave-v4.fetch-merkl-rewards",
7931
+ protocolId: "aave-v4",
7932
+ chainCategory: "evm",
7933
+ description: "Wallet-wide Merkl claimables for this address on a chain (not Aave-only). Pass keyGenId or user. Other venues\u2019 campaigns can appear. rEUL is omitted. Follow with ctm_aave_v4_build_merkl_claim_multisign (keyGenId + chainId).",
7934
+ prerequisites: ["keyGenId or user", "chainId"],
7935
+ followUp: ["ctm_aave_v4_build_merkl_claim_multisign"],
7936
+ handler: { importPath: "protocols/evm/aave-v4", exportName: "aaveV4FetchMerklRewardsSummary" },
7937
+ inputZod: mcpMerklRewardsFetchInputSchema,
7938
+ outputZod: mcpMerklRewardsFetchOutputSchema
7939
+ }),
7702
7940
  defineMcpTool({
7703
7941
  name: "ctm_lido_fetch_steth_apr",
7704
7942
  actionId: "lido.fetch-steth-apr",
@@ -8407,7 +8645,9 @@ var aaveV4ProtocolModule = {
8407
8645
  { id: "aave-v4.deposit", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Supply to Aave v4 Spoke", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8408
8646
  { id: "aave-v4.withdraw", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw from Spoke", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8409
8647
  { id: "aave-v4.borrow", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Borrow from Spoke", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8410
- { id: "aave-v4.repay", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Repay Spoke debt", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
8648
+ { id: "aave-v4.repay", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Repay Spoke debt", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8649
+ { id: "aave-v4.fetch-merkl-rewards", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "List wallet-wide Merkl claimables on a chain", commonParams: [], params: {} },
8650
+ { id: "aave-v4.merkl-claim", protocolId: AAVE_V4_PROTOCOL_ID, chainCategory: "evm", description: "Claim wallet-wide Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
8411
8651
  ]
8412
8652
  };
8413
8653
  registerProtocolModule(aaveV4ProtocolModule);
@@ -8621,7 +8861,9 @@ var eulerV2ProtocolModule = {
8621
8861
  { id: "euler-v2.vault-withdraw", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw from Euler vault", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8622
8862
  { id: "euler-v2.borrow-repay", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Repay Euler borrow", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8623
8863
  { id: "euler-v2.collateral-deposit", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Deposit borrow collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8624
- { id: "euler-v2.collateral-withdraw", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw borrow collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
8864
+ { id: "euler-v2.collateral-withdraw", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw borrow collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
8865
+ { id: "euler-v2.fetch-merkl-rewards", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "List wallet-wide Merkl claimables on a chain", commonParams: [], params: {} },
8866
+ { id: "euler-v2.merkl-claim", protocolId: EULER_V2_PROTOCOL_ID, chainCategory: "evm", description: "Claim wallet-wide Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
8625
8867
  ]
8626
8868
  };
8627
8869
  registerProtocolModule(eulerV2ProtocolModule);
@@ -9021,6 +9263,19 @@ var hyperliquidProtocolModule = {
9021
9263
  marketKind: { type: "string", required: false, description: "perp (default) or spot" }
9022
9264
  }
9023
9265
  },
9266
+ {
9267
+ id: "hyperliquid.lend",
9268
+ protocolId: HYPERLIQUID_PROTOCOL_ID,
9269
+ chainCategory: "evm",
9270
+ description: "Hyperliquid Core borrow/lend via L1 /exchange EIP-712 (supply, withdraw, borrow, repay). Not CoreWriter.",
9271
+ commonParams: ["keyGen", "purposeText"],
9272
+ params: {
9273
+ coin: { type: "string", required: true, description: "Spot token e.g. USDC, USDT, HYPE, BTC/UBTC" },
9274
+ operation: { type: "string", required: true, description: "supply | withdraw | borrow | repay" },
9275
+ amountHuman: { type: "string", required: false, description: "Amount; omit or max for full withdraw/repay" },
9276
+ amountMax: { type: "boolean", required: false, description: "true = full amount (amount null on wire)" }
9277
+ }
9278
+ },
9024
9279
  {
9025
9280
  id: "hyperliquid.undelegate",
9026
9281
  protocolId: HYPERLIQUID_PROTOCOL_ID,
@@ -9376,7 +9631,8 @@ var morphoProtocolModule = {
9376
9631
  { id: "morpho.blue-borrow", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Borrow from Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9377
9632
  { id: "morpho.blue-repay", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Repay Morpho Blue borrow", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9378
9633
  { id: "morpho.blue-collateral-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw Morpho Blue collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9379
- { id: "morpho.merkl-claim", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Claim Morpho Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9634
+ { id: "morpho.fetch-merkl-rewards", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List wallet-wide Merkl claimables on a chain", commonParams: [], params: {} },
9635
+ { id: "morpho.merkl-claim", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Claim wallet-wide Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9380
9636
  { id: "morpho.fetch-blue-markets", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Search Morpho Blue variable-rate markets", commonParams: [], params: {} },
9381
9637
  { id: "morpho.fetch-stock-markets", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List Coinbase B20 stock-backed Morpho Blue and Midnight markets on Base", commonParams: [], params: {} },
9382
9638
  { id: "morpho.fetch-positions", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List Morpho vault and Blue positions for a user", commonParams: [], params: {} },
@@ -11244,7 +11500,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
11244
11500
  }));
11245
11501
  return {
11246
11502
  tokens,
11247
- notes: chainId === ROBINHOOD_CHAIN_ID ? 'Morpho vault assets on Robinhood Chain. Robinhood Earn USDG yield uses Steakhouse USDG (steakUSDG) \u2014 query "robinhood earn" or robinhoodEarn: true on deposit multisign; not Arcus collateral.' : isMorphoArcChainId(chainId) ? "Morpho vault and Blue market assets on Arc (USDC-native gas). Mainnet is 5042; testnet is 5042002. Midnight remains Ethereum/Base only." : chainId === 8453 ? 'Morpho vault, Blue, and Midnight assets on Base. Coinbase B20 stocks (AAPLc, NVDAc, \u2026) are collateral for stock-backed USDC loans \u2014 use ctm_morpho_fetch_stock_markets or fetch_blue_markets collateral/query "stock". Tickers OK.' : "Morpho vault assets, Blue market loan/collateral tokens, and Midnight book loan/collateral tokens from api.morpho.org."
11503
+ notes: chainId === ROBINHOOD_CHAIN_ID ? 'Morpho vault assets on Robinhood Chain. Robinhood Earn USDG yield uses Steakhouse USDG (steakUSDG) \u2014 query "robinhood earn" or robinhoodEarn: true on deposit multisign; not Arcus collateral.' : isMorphoArcChainId(chainId) ? "Morpho vault and Blue market assets on Arc (USDC-native gas). Mainnet is 5042; testnet is 5042002. Midnight remains Ethereum/Base only." : chainId === 8453 ? "Morpho vault, Lend (Blue USDC supply / Midnight lend), Blue borrow, and Midnight borrow on Base. Coinbase B20 stocks (AAPLc, NVDAc, \u2026) are collateral for stock-backed USDC loans \u2014 activate defi:morpho:lend then ctm_morpho_fetch_stock_markets. Tickers OK." : "Morpho vault assets, Blue market loan/collateral tokens, and Midnight book loan/collateral tokens from api.morpho.org."
11248
11504
  };
11249
11505
  },
11250
11506
  async isTokenSupported(chainId, address) {
@@ -11605,6 +11861,7 @@ exports.mcpAaveV4FetchMarketInputSchema = mcpAaveV4FetchMarketInputSchema;
11605
11861
  exports.mcpAaveV4FetchMarketOutputSchema = mcpAaveV4FetchMarketOutputSchema;
11606
11862
  exports.mcpAaveV4FetchMarketsInputSchema = mcpAaveV4FetchMarketsInputSchema;
11607
11863
  exports.mcpAaveV4FetchMarketsOutputSchema = mcpAaveV4FetchMarketsOutputSchema;
11864
+ exports.mcpAaveV4MerklClaimInputSchema = mcpAaveV4MerklClaimInputSchema;
11608
11865
  exports.mcpAaveV4RepayInputSchema = mcpAaveV4RepayInputSchema;
11609
11866
  exports.mcpAaveV4WithdrawInputSchema = mcpAaveV4WithdrawInputSchema;
11610
11867
  exports.mcpAerodromeBuildAddLiquidityMultisignInputSchema = mcpAerodromeBuildAddLiquidityMultisignInputSchema;
@@ -11790,6 +12047,7 @@ exports.mcpEulerV2FetchLendVaultsInputSchema = mcpEulerV2FetchLendVaultsInputSch
11790
12047
  exports.mcpEulerV2FetchLendVaultsOutputSchema = mcpEulerV2FetchLendVaultsOutputSchema;
11791
12048
  exports.mcpEulerV2IsolatedBorrowInputSchema = mcpEulerV2IsolatedBorrowInputSchema;
11792
12049
  exports.mcpEulerV2IsolatedLendInputSchema = mcpEulerV2IsolatedLendInputSchema;
12050
+ exports.mcpEulerV2MerklClaimInputSchema = mcpEulerV2MerklClaimInputSchema;
11793
12051
  exports.mcpEulerV2VaultWithdrawInputSchema = mcpEulerV2VaultWithdrawInputSchema;
11794
12052
  exports.mcpGmxCancelInputSchema = mcpGmxCancelInputSchema;
11795
12053
  exports.mcpGmxDecreaseInputSchema = mcpGmxDecreaseInputSchema;
@@ -11822,6 +12080,10 @@ exports.mcpHyperliquidCloseInputSchema = mcpHyperliquidCloseInputSchema;
11822
12080
  exports.mcpHyperliquidDelegateInputSchema = mcpHyperliquidDelegateInputSchema;
11823
12081
  exports.mcpHyperliquidFetchDelegationsInputSchema = mcpHyperliquidFetchDelegationsInputSchema;
11824
12082
  exports.mcpHyperliquidFetchDelegationsOutputSchema = mcpHyperliquidFetchDelegationsOutputSchema;
12083
+ exports.mcpHyperliquidFetchLendMarketsInputSchema = mcpHyperliquidFetchLendMarketsInputSchema;
12084
+ exports.mcpHyperliquidFetchLendMarketsOutputSchema = mcpHyperliquidFetchLendMarketsOutputSchema;
12085
+ exports.mcpHyperliquidFetchLendPositionsInputSchema = mcpHyperliquidFetchLendPositionsInputSchema;
12086
+ exports.mcpHyperliquidFetchLendPositionsOutputSchema = mcpHyperliquidFetchLendPositionsOutputSchema;
11825
12087
  exports.mcpHyperliquidFetchMarketSnapshotInputSchema = mcpHyperliquidFetchMarketSnapshotInputSchema;
11826
12088
  exports.mcpHyperliquidFetchMarketSnapshotOutputSchema = mcpHyperliquidFetchMarketSnapshotOutputSchema;
11827
12089
  exports.mcpHyperliquidFetchMarketsInputSchema = mcpHyperliquidFetchMarketsInputSchema;
@@ -11846,6 +12108,7 @@ exports.mcpHyperliquidFetchVaultApysInputSchema = mcpHyperliquidFetchVaultApysIn
11846
12108
  exports.mcpHyperliquidFetchVaultApysOutputSchema = mcpHyperliquidFetchVaultApysOutputSchema;
11847
12109
  exports.mcpHyperliquidFetchVaultsInputSchema = mcpHyperliquidFetchVaultsInputSchema;
11848
12110
  exports.mcpHyperliquidFetchVaultsOutputSchema = mcpHyperliquidFetchVaultsOutputSchema;
12111
+ exports.mcpHyperliquidLendInputSchema = mcpHyperliquidLendInputSchema;
11849
12112
  exports.mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidLimitOrderInputSchema;
11850
12113
  exports.mcpHyperliquidSearchMarketsInputSchema = mcpHyperliquidSearchMarketsInputSchema;
11851
12114
  exports.mcpHyperliquidSearchMarketsOutputSchema = mcpHyperliquidSearchMarketsOutputSchema;
@@ -11869,6 +12132,8 @@ exports.mcpMapleFetchMarketOutputSchema = mcpMapleFetchMarketOutputSchema;
11869
12132
  exports.mcpMapleFetchMarketsInputSchema = mcpMapleFetchMarketsInputSchema;
11870
12133
  exports.mcpMapleFetchMarketsOutputSchema = mcpMapleFetchMarketsOutputSchema;
11871
12134
  exports.mcpMapleRequestRedeemInputSchema = mcpMapleRequestRedeemInputSchema;
12135
+ exports.mcpMerklRewardsFetchInputSchema = mcpMerklRewardsFetchInputSchema;
12136
+ exports.mcpMerklRewardsFetchOutputSchema = mcpMerklRewardsFetchOutputSchema;
11872
12137
  exports.mcpMorphoBlueBorrowInputSchema = mcpMorphoBlueBorrowInputSchema;
11873
12138
  exports.mcpMorphoBlueCollateralDepositInputSchema = mcpMorphoBlueCollateralDepositInputSchema;
11874
12139
  exports.mcpMorphoBlueCollateralWithdrawInputSchema = mcpMorphoBlueCollateralWithdrawInputSchema;