@continuumdao/ctm-mpc-defi 0.2.41 → 0.2.43

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 (98) hide show
  1. package/dist/agent/catalog.cjs +219 -27
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +914 -197
  4. package/dist/agent/catalog.js +214 -28
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/aerodrome/SKILL.md +1 -1
  7. package/dist/agent/skills/arcus/SKILL.md +1 -1
  8. package/dist/agent/skills/morpho/SKILL.md +32 -5
  9. package/dist/agent/skills/yield-compare/SKILL.md +6 -2
  10. package/dist/chains/evm/index.cjs +6 -2
  11. package/dist/chains/evm/index.cjs.map +1 -1
  12. package/dist/chains/evm/index.js +7 -3
  13. package/dist/chains/evm/index.js.map +1 -1
  14. package/dist/core/index.cjs +14 -0
  15. package/dist/core/index.cjs.map +1 -1
  16. package/dist/core/index.d.ts +7 -2
  17. package/dist/core/index.js +13 -2
  18. package/dist/core/index.js.map +1 -1
  19. package/dist/index.cjs +45 -6
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +44 -8
  23. package/dist/index.js.map +1 -1
  24. package/dist/protocols/evm/aave-v4/index.cjs +11 -7
  25. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  26. package/dist/protocols/evm/aave-v4/index.js +12 -8
  27. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  28. package/dist/protocols/evm/aerodrome/index.cjs +81 -50
  29. package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
  30. package/dist/protocols/evm/aerodrome/index.d.ts +8 -8
  31. package/dist/protocols/evm/aerodrome/index.js +96 -65
  32. package/dist/protocols/evm/aerodrome/index.js.map +1 -1
  33. package/dist/protocols/evm/arcus/index.cjs +6 -2
  34. package/dist/protocols/evm/arcus/index.cjs.map +1 -1
  35. package/dist/protocols/evm/arcus/index.js +7 -3
  36. package/dist/protocols/evm/arcus/index.js.map +1 -1
  37. package/dist/protocols/evm/circle-cctp/index.cjs +7 -3
  38. package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
  39. package/dist/protocols/evm/circle-cctp/index.js +8 -4
  40. package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
  41. package/dist/protocols/evm/compound-v3/index.cjs +9 -3
  42. package/dist/protocols/evm/compound-v3/index.cjs.map +1 -1
  43. package/dist/protocols/evm/compound-v3/index.js +10 -4
  44. package/dist/protocols/evm/compound-v3/index.js.map +1 -1
  45. package/dist/protocols/evm/continuum-dao/index.cjs +11 -5
  46. package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
  47. package/dist/protocols/evm/continuum-dao/index.js +12 -6
  48. package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
  49. package/dist/protocols/evm/curve-dao/index.cjs +8 -4
  50. package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
  51. package/dist/protocols/evm/curve-dao/index.js +9 -5
  52. package/dist/protocols/evm/curve-dao/index.js.map +1 -1
  53. package/dist/protocols/evm/ethena/index.cjs +13 -9
  54. package/dist/protocols/evm/ethena/index.cjs.map +1 -1
  55. package/dist/protocols/evm/ethena/index.js +14 -10
  56. package/dist/protocols/evm/ethena/index.js.map +1 -1
  57. package/dist/protocols/evm/euler-v2/index.cjs +20 -16
  58. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  59. package/dist/protocols/evm/euler-v2/index.js +21 -17
  60. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  61. package/dist/protocols/evm/gmx/index.cjs +12 -8
  62. package/dist/protocols/evm/gmx/index.cjs.map +1 -1
  63. package/dist/protocols/evm/gmx/index.js +13 -9
  64. package/dist/protocols/evm/gmx/index.js.map +1 -1
  65. package/dist/protocols/evm/hyperliquid/index.cjs +5 -1
  66. package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
  67. package/dist/protocols/evm/hyperliquid/index.js +6 -2
  68. package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
  69. package/dist/protocols/evm/lido/index.cjs +7 -3
  70. package/dist/protocols/evm/lido/index.cjs.map +1 -1
  71. package/dist/protocols/evm/lido/index.js +8 -4
  72. package/dist/protocols/evm/lido/index.js.map +1 -1
  73. package/dist/protocols/evm/maple/index.cjs +7 -3
  74. package/dist/protocols/evm/maple/index.cjs.map +1 -1
  75. package/dist/protocols/evm/maple/index.js +8 -4
  76. package/dist/protocols/evm/maple/index.js.map +1 -1
  77. package/dist/protocols/evm/morpho/index.cjs +454 -64
  78. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  79. package/dist/protocols/evm/morpho/index.d.ts +123 -2
  80. package/dist/protocols/evm/morpho/index.js +432 -66
  81. package/dist/protocols/evm/morpho/index.js.map +1 -1
  82. package/dist/protocols/evm/pendle/index.cjs +9 -3
  83. package/dist/protocols/evm/pendle/index.cjs.map +1 -1
  84. package/dist/protocols/evm/pendle/index.js +10 -4
  85. package/dist/protocols/evm/pendle/index.js.map +1 -1
  86. package/dist/protocols/evm/sky/index.cjs +17 -13
  87. package/dist/protocols/evm/sky/index.cjs.map +1 -1
  88. package/dist/protocols/evm/sky/index.js +18 -14
  89. package/dist/protocols/evm/sky/index.js.map +1 -1
  90. package/dist/protocols/evm/uniswap-v4/index.cjs +13 -7
  91. package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
  92. package/dist/protocols/evm/uniswap-v4/index.js +14 -8
  93. package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
  94. package/dist/protocols/evm/venice/index.cjs +10 -4
  95. package/dist/protocols/evm/venice/index.cjs.map +1 -1
  96. package/dist/protocols/evm/venice/index.js +10 -4
  97. package/dist/protocols/evm/venice/index.js.map +1 -1
  98. package/package.json +1 -1
@@ -19,6 +19,14 @@ var __export = (target, all) => {
19
19
  for (var name in all)
20
20
  __defProp(target, name, { get: all[name], enumerable: true });
21
21
  };
22
+ function defiEvmTransport(rpcUrl, opts) {
23
+ const url = rpcUrl.trim();
24
+ return viem.http(url, opts);
25
+ }
26
+ var init_defiEvmClient = __esm({
27
+ "src/core/defiEvmClient.ts"() {
28
+ }
29
+ });
22
30
 
23
31
  // src/core/defiProxy.ts
24
32
  function getAaveGraphqlProxyUrl() {
@@ -379,6 +387,27 @@ var init_midnightApi = __esm({
379
387
  init_midnightConstants();
380
388
  }
381
389
  });
390
+ var COINBASE_B20_STOCK_TOKENS, COINBASE_B20_STOCK_DECIMALS;
391
+ var init_coinbaseB20 = __esm({
392
+ "src/protocols/evm/shared/coinbaseB20.ts"() {
393
+ COINBASE_B20_STOCK_TOKENS = [
394
+ { symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
395
+ { symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
396
+ { symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
397
+ { symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
398
+ { symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
399
+ { symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
400
+ { symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
401
+ { symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
402
+ { symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
403
+ { symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
404
+ { symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
405
+ { symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
406
+ { symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
407
+ ];
408
+ COINBASE_B20_STOCK_DECIMALS = 8;
409
+ }
410
+ });
382
411
  function isAerodromeChainSupported(chainId) {
383
412
  const n = typeof chainId === "number" ? chainId : Number.parseInt(String(chainId), 10);
384
413
  return n === AERODROME_CHAIN_ID;
@@ -428,25 +457,9 @@ var init_addresses = __esm({
428
457
  };
429
458
  }
430
459
  });
431
- var AERODROME_COINBASE_STOCK_TOKENS, AERODROME_COINBASE_STOCK_DECIMALS;
432
460
  var init_stockTokens = __esm({
433
461
  "src/protocols/evm/aerodrome/stockTokens.ts"() {
434
- AERODROME_COINBASE_STOCK_TOKENS = [
435
- { symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
436
- { symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
437
- { symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
438
- { symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
439
- { symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
440
- { symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
441
- { symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
442
- { symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
443
- { symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
444
- { symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
445
- { symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
446
- { symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
447
- { symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
448
- ];
449
- AERODROME_COINBASE_STOCK_DECIMALS = 8;
462
+ init_coinbaseB20();
450
463
  }
451
464
  });
452
465
  var init_discover = __esm({
@@ -1381,6 +1394,26 @@ function preprocessMorphoBlueBorrowRepayInput(raw) {
1381
1394
  aliasField(o, "loanToken", "loanToken", "loanTokenAddress");
1382
1395
  return o;
1383
1396
  }
1397
+ function preprocessMorphoBlueLoanMarketInput(raw, verb) {
1398
+ const o = preprocessObject(raw);
1399
+ if (!o) return raw;
1400
+ aliasField(o, "loanToken", "loanToken", "loanTokenAddress");
1401
+ aliasField(o, "marketId", "marketId", "marketID");
1402
+ derivePurposeIfMissing(o, (x) => {
1403
+ const amt = String(x.amountHuman ?? "").trim();
1404
+ const label = String(x.marketLabel ?? "").trim();
1405
+ if (amt && label) return `Morpho Blue ${verb} ${amt} for ${label}`;
1406
+ if (amt) return `Morpho Blue ${verb} ${amt}`;
1407
+ return void 0;
1408
+ });
1409
+ return o;
1410
+ }
1411
+ function preprocessMorphoBlueSupplyInput(raw) {
1412
+ return preprocessMorphoBlueLoanMarketInput(raw, "supply");
1413
+ }
1414
+ function preprocessMorphoBlueWithdrawInput(raw) {
1415
+ return preprocessMorphoBlueLoanMarketInput(raw, "withdraw");
1416
+ }
1384
1417
  function preprocessEulerV2IsolatedLendInput(raw) {
1385
1418
  const o = preprocessObject(raw);
1386
1419
  if (!o) return raw;
@@ -2206,9 +2239,9 @@ var mcpMorphoFetchEarnVaultsOutputSchema = zod.z.object({
2206
2239
  });
2207
2240
  var mcpMorphoFetchBlueMarketsInputSchema = zod.z.object({
2208
2241
  chainId: agentEvmChainIdSchema,
2209
- collateral: zod.z.string().trim().min(1).optional().describe("Collateral asset symbol or address (e.g. WETH, cbETH)."),
2210
- loan: zod.z.string().trim().min(1).optional().describe("Loan asset symbol or address (e.g. USDC)."),
2211
- query: zod.z.string().trim().min(1).optional().describe("Filter on market label, symbols, or marketId."),
2242
+ collateral: zod.z.string().trim().min(1).optional().describe("Collateral ticker or address (AAPLc, WETH, 0x\u2026). B20 stock tickers resolve on Base."),
2243
+ loan: zod.z.string().trim().min(1).optional().describe("Loan ticker or address (USDC, USDT, 0x\u2026)."),
2244
+ query: zod.z.string().trim().min(1).optional().describe('Filter on market label, symbols, or marketId. "stock" / "tokenized" / "coinbase" lists B20 collateral markets.'),
2212
2245
  limit: agentCoercedOptionalIntSchema(zod.z.number().int().min(1).max(200))
2213
2246
  });
2214
2247
  var mcpMorphoFetchBlueMarketsOutputSchema = zod.z.object({
@@ -2226,6 +2259,10 @@ var mcpMorphoFetchBlueMarketsOutputSchema = zod.z.object({
2226
2259
  borrowApyLabel: zod.z.string(),
2227
2260
  supplyApyLabel: zod.z.string(),
2228
2261
  netSupplyApyLabel: zod.z.string().describe("Blue net supply APY including incentives when Morpho publishes it."),
2262
+ lltvLabel: zod.z.string(),
2263
+ borrowAssetsUsdLabel: zod.z.string(),
2264
+ supplyAssetsUsdLabel: zod.z.string(),
2265
+ utilizationLabel: zod.z.string(),
2229
2266
  rewards: zod.z.array(
2230
2267
  zod.z.object({
2231
2268
  symbol: zod.z.string(),
@@ -2288,10 +2325,72 @@ function preprocessMorphoMidnightRepayInput(raw) {
2288
2325
  if (!purposeText) o.purposeText = "Morpho Midnight repay";
2289
2326
  return o;
2290
2327
  }
2328
+ var mcpMorphoFetchStockMarketsInputSchema = zod.z.object({
2329
+ chainId: agentEvmChainIdSchema.optional().describe("Defaults to Base 8453."),
2330
+ collateral: zod.z.string().trim().min(1).optional().describe("B20 ticker or address (AAPLc). Omit to list all stock-collateral markets."),
2331
+ rate: zod.z.enum(["variable", "fixed", "both"]).optional().describe("Blue variable, Midnight fixed, or both (default)."),
2332
+ limit: agentCoercedOptionalIntSchema(zod.z.number().int().min(1).max(200))
2333
+ });
2334
+ var mcpMorphoFetchStockMarketsOutputSchema = zod.z.object({
2335
+ chainId: zod.z.number().int(),
2336
+ markets: mcpMorphoFetchBlueMarketsOutputSchema.shape.markets,
2337
+ books: zod.z.array(
2338
+ zod.z.object({
2339
+ marketId: zod.z.string(),
2340
+ chainId: zod.z.number().int(),
2341
+ midnightAddress: zod.z.string(),
2342
+ loanTokenAddress: zod.z.string(),
2343
+ maturity: zod.z.number(),
2344
+ maturityIso: zod.z.string(),
2345
+ collateralTokenAddresses: zod.z.array(zod.z.string()),
2346
+ primaryCollateralTokenAddress: zod.z.string().nullable(),
2347
+ primaryCollateralLltv: zod.z.string().nullable(),
2348
+ bestAskPriceWad: zod.z.string().nullable(),
2349
+ bestBidPriceWad: zod.z.string().nullable(),
2350
+ bestAskAssets: zod.z.string().nullable(),
2351
+ bestBidAssets: zod.z.string().nullable(),
2352
+ lendApr: zod.z.string(),
2353
+ borrowApr: zod.z.string(),
2354
+ lendAprNumeric: zod.z.number().nullable(),
2355
+ borrowAprNumeric: zod.z.number().nullable(),
2356
+ marketLabel: zod.z.string()
2357
+ })
2358
+ ),
2359
+ notes: zod.z.string()
2360
+ });
2361
+ var mcpMorphoFetchPositionsInputSchema = zod.z.object({
2362
+ user: zod.z.string().min(1).describe("User EVM address"),
2363
+ chainId: agentEvmChainIdSchema
2364
+ });
2365
+ var mcpMorphoFetchPositionsOutputSchema = zod.z.object({
2366
+ vaults: zod.z.array(
2367
+ zod.z.object({
2368
+ vaultAddress: zod.z.string(),
2369
+ vaultSymbol: zod.z.string(),
2370
+ underlyingSymbol: zod.z.string(),
2371
+ assetsHuman: zod.z.string(),
2372
+ assetsUsdLabel: zod.z.string(),
2373
+ shares: zod.z.string()
2374
+ })
2375
+ ),
2376
+ blue: zod.z.array(
2377
+ zod.z.object({
2378
+ marketId: zod.z.string(),
2379
+ marketLabel: zod.z.string(),
2380
+ loanAssetSymbol: zod.z.string(),
2381
+ collateralAssetSymbol: zod.z.string(),
2382
+ collateralHuman: zod.z.string(),
2383
+ borrowHuman: zod.z.string(),
2384
+ supplyHuman: zod.z.string(),
2385
+ supplyUsdLabel: zod.z.string(),
2386
+ healthFactorLabel: zod.z.string()
2387
+ })
2388
+ )
2389
+ });
2291
2390
  var mcpMorphoFetchMidnightBooksInputSchema = zod.z.object({
2292
2391
  chainId: agentEvmChainIdSchema,
2293
- loan: zod.z.string().trim().min(1).optional().describe("Loan token address filter."),
2294
- collateral: zod.z.string().trim().min(1).optional().describe("Collateral token address filter."),
2392
+ loan: zod.z.string().trim().min(1).optional().describe("Loan ticker or address (USDC)."),
2393
+ collateral: zod.z.string().trim().min(1).optional().describe("Collateral ticker or address (AAPLc)."),
2295
2394
  query: zod.z.string().trim().min(1).optional().describe("Filter on marketId or addresses."),
2296
2395
  side: zod.z.enum(["bids", "asks", "either"]).optional().describe("Require bid depth (borrow) or ask depth (lend)."),
2297
2396
  limit: agentCoercedOptionalIntSchema(zod.z.number().int().min(1).max(200))
@@ -2710,6 +2809,28 @@ var mcpMorphoBlueCollateralDepositInputSchema = withMultisignKeySourceRefine(
2710
2809
  })
2711
2810
  )
2712
2811
  );
2812
+ var mcpMorphoBlueSupplyInputSchema = withMultisignKeySourceRefine(
2813
+ zod.z.preprocess(
2814
+ preprocessMorphoBlueSupplyInput,
2815
+ evmMultisignCommonInputSchema.extend({
2816
+ marketId: zod.z.string().min(1).describe("marketId from ctm_morpho_fetch_blue_markets or fetch_stock_markets"),
2817
+ loanToken: evmAddressSchema.describe("loanTokenAddress from fetch row (USDC)"),
2818
+ amountHuman: zod.z.string().min(1),
2819
+ marketLabel: zod.z.string().optional()
2820
+ })
2821
+ )
2822
+ );
2823
+ var mcpMorphoBlueWithdrawInputSchema = withMultisignKeySourceRefine(
2824
+ zod.z.preprocess(
2825
+ preprocessMorphoBlueWithdrawInput,
2826
+ evmMultisignCommonInputSchema.extend({
2827
+ marketId: zod.z.string().min(1).describe("marketId from ctm_morpho_fetch_positions or fetch_blue_markets"),
2828
+ loanToken: evmAddressSchema.describe("loanTokenAddress from fetch row"),
2829
+ amountHuman: zod.z.string().min(1),
2830
+ marketLabel: zod.z.string().optional()
2831
+ })
2832
+ )
2833
+ );
2713
2834
  var mcpMorphoBlueBorrowInputSchema = withMultisignKeySourceRefine(
2714
2835
  zod.z.preprocess(
2715
2836
  preprocessMorphoBlueBorrowRepayInput,
@@ -5018,6 +5139,26 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
5018
5139
  handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueSupplyCollateralBatch" },
5019
5140
  inputZod: mcpMorphoBlueCollateralDepositInputSchema
5020
5141
  }),
5142
+ defineProtocolMcpTool({
5143
+ name: "ctm_morpho_build_blue_supply_multisign",
5144
+ actionId: "morpho.blue-supply",
5145
+ protocolId: "morpho",
5146
+ chainCategory: "evm",
5147
+ description: "Build Morpho Blue supply batch (lend loan token, e.g. USDC, into a market).",
5148
+ prerequisites: ["keyGenId", "chainId", "marketId", "loanToken", "amountHuman"],
5149
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueSupplyBatch" },
5150
+ inputZod: mcpMorphoBlueSupplyInputSchema
5151
+ }),
5152
+ defineProtocolMcpTool({
5153
+ name: "ctm_morpho_build_blue_withdraw_multisign",
5154
+ actionId: "morpho.blue-withdraw",
5155
+ protocolId: "morpho",
5156
+ chainCategory: "evm",
5157
+ description: "Build Morpho Blue withdraw batch (withdraw supplied loan token).",
5158
+ prerequisites: ["keyGenId", "chainId", "marketId", "loanToken", "amountHuman"],
5159
+ handler: { importPath: "protocols/evm/morpho", exportName: "buildEvmMultisignBodyMorphoBlueWithdrawBatch" },
5160
+ inputZod: mcpMorphoBlueWithdrawInputSchema
5161
+ }),
5021
5162
  defineProtocolMcpTool({
5022
5163
  name: "ctm_morpho_build_blue_borrow_multisign",
5023
5164
  actionId: "morpho.blue-borrow",
@@ -6820,10 +6961,11 @@ var CORE_MCP_TOOL_DEFINITIONS = [
6820
6961
  actionId: "morpho.fetch-blue-markets",
6821
6962
  protocolId: "morpho",
6822
6963
  chainCategory: "evm",
6823
- description: "Morpho Blue borrow markets. Filter by collateral/loan asset; returns marketId and token addresses for blue multisign tools.",
6964
+ description: 'Morpho Blue variable-rate markets. Filter by collateral/loan ticker or address (AAPLc, USDC). query "stock" lists Coinbase B20 collateral books. Returns marketId, LLTV, TVL, and token addresses for blue multisign tools.',
6824
6965
  prerequisites: ["chainId"],
6825
6966
  followUp: [
6826
6967
  "ctm_morpho_build_blue_collateral_deposit_multisign",
6968
+ "ctm_morpho_build_blue_supply_multisign",
6827
6969
  "ctm_morpho_build_blue_borrow_multisign",
6828
6970
  "ctm_morpho_build_blue_repay_multisign"
6829
6971
  ],
@@ -6831,6 +6973,42 @@ var CORE_MCP_TOOL_DEFINITIONS = [
6831
6973
  inputZod: mcpMorphoFetchBlueMarketsInputSchema,
6832
6974
  outputZod: mcpMorphoFetchBlueMarketsOutputSchema
6833
6975
  }),
6976
+ defineMcpTool({
6977
+ name: "ctm_morpho_fetch_stock_markets",
6978
+ actionId: "morpho.fetch-stock-markets",
6979
+ protocolId: "morpho",
6980
+ chainCategory: "evm",
6981
+ description: "Coinbase B20 stock-backed Morpho markets on Base (default 8453). Variable Blue + fixed Midnight. Tickers OK (AAPLc). Not idle stable yield \u2014 isolated equity collateral, thin books, 24/5 oracles.",
6982
+ prerequisites: ["chainId 8453 or omit"],
6983
+ followUp: [
6984
+ "ctm_morpho_build_blue_collateral_deposit_multisign",
6985
+ "ctm_morpho_build_blue_supply_multisign",
6986
+ "ctm_morpho_build_blue_borrow_multisign",
6987
+ "ctm_morpho_fetch_midnight_books",
6988
+ "ctm_morpho_build_midnight_lend_multisign",
6989
+ "ctm_morpho_build_midnight_borrow_multisign"
6990
+ ],
6991
+ handler: { importPath: "protocols/evm/morpho", exportName: "morphoFetchStockMarketsSummary" },
6992
+ inputZod: mcpMorphoFetchStockMarketsInputSchema,
6993
+ outputZod: mcpMorphoFetchStockMarketsOutputSchema
6994
+ }),
6995
+ defineMcpTool({
6996
+ name: "ctm_morpho_fetch_positions",
6997
+ actionId: "morpho.fetch-positions",
6998
+ protocolId: "morpho",
6999
+ chainCategory: "evm",
7000
+ description: "Morpho vault and Blue positions (collateral, borrow, and loan-token supply) for a user. Midnight positions stay on ctm_morpho_fetch_midnight_positions.",
7001
+ prerequisites: ["user address", "chainId"],
7002
+ followUp: [
7003
+ "ctm_morpho_build_vault_withdraw_multisign",
7004
+ "ctm_morpho_build_blue_repay_multisign",
7005
+ "ctm_morpho_build_blue_withdraw_multisign",
7006
+ "ctm_morpho_build_blue_collateral_withdraw_multisign"
7007
+ ],
7008
+ handler: { importPath: "protocols/evm/morpho", exportName: "morphoFetchPositionsSummary" },
7009
+ inputZod: mcpMorphoFetchPositionsInputSchema,
7010
+ outputZod: mcpMorphoFetchPositionsOutputSchema
7011
+ }),
6834
7012
  defineMcpTool({
6835
7013
  name: "ctm_morpho_fetch_midnight_books",
6836
7014
  actionId: "morpho.fetch-midnight-books",
@@ -9193,10 +9371,15 @@ var morphoProtocolModule = {
9193
9371
  { 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: {} },
9194
9372
  { id: "morpho.vault-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw from Morpho earn vault (V1 or V2)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9195
9373
  { id: "morpho.blue-collateral-deposit", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Supply collateral to Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9374
+ { id: "morpho.blue-supply", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Supply loan token to Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9375
+ { id: "morpho.blue-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw supplied loan token from Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9196
9376
  { id: "morpho.blue-borrow", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Borrow from Morpho Blue market", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9197
9377
  { id: "morpho.blue-repay", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Repay Morpho Blue borrow", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9198
9378
  { id: "morpho.blue-collateral-withdraw", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Withdraw Morpho Blue collateral", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9199
9379
  { id: "morpho.merkl-claim", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Claim Morpho Merkl rewards", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
9380
+ { id: "morpho.fetch-blue-markets", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Search Morpho Blue variable-rate markets", commonParams: [], params: {} },
9381
+ { 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
+ { id: "morpho.fetch-positions", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List Morpho vault and Blue positions for a user", commonParams: [], params: {} },
9200
9383
  { id: "morpho.fetch-midnight-books", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List Morpho Midnight fixed-rate books", commonParams: [], params: {} },
9201
9384
  { id: "morpho.fetch-midnight-quote", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "Quote Morpho Midnight lend/borrow fill", commonParams: [], params: {} },
9202
9385
  { id: "morpho.fetch-midnight-positions", protocolId: MORPHO_PROTOCOL_ID, chainCategory: "evm", description: "List Morpho Midnight user positions", commonParams: [], params: {} },
@@ -10152,6 +10335,9 @@ async function fetchCompoundV3SubgraphMarkets(args) {
10152
10335
  return null;
10153
10336
  }
10154
10337
  }
10338
+
10339
+ // src/protocols/evm/compound-v3/reads.ts
10340
+ init_defiEvmClient();
10155
10341
  function publicClient(rpcUrl, chainId) {
10156
10342
  const chain = viem.defineChain({
10157
10343
  id: chainId,
@@ -10159,7 +10345,7 @@ function publicClient(rpcUrl, chainId) {
10159
10345
  nativeCurrency: { decimals: 18, name: "Ether", symbol: "ETH" },
10160
10346
  rpcUrls: { default: { http: [rpcUrl] } }
10161
10347
  });
10162
- return viem.createPublicClient({ chain, transport: viem.http(rpcUrl) });
10348
+ return viem.createPublicClient({ chain, transport: defiEvmTransport(rpcUrl) });
10163
10349
  }
10164
10350
  async function readTokenMeta(client, asset) {
10165
10351
  const [symbol, decimals] = await Promise.all([
@@ -10869,11 +11055,11 @@ function aerodromeAdvisorPriorityTokens() {
10869
11055
  decimals: 18,
10870
11056
  roles: ["swappable"]
10871
11057
  },
10872
- ...AERODROME_COINBASE_STOCK_TOKENS.map((t) => ({
11058
+ ...COINBASE_B20_STOCK_TOKENS.map((t) => ({
10873
11059
  address: t.address,
10874
11060
  symbol: t.symbol,
10875
11061
  name: t.name,
10876
- decimals: AERODROME_COINBASE_STOCK_DECIMALS,
11062
+ decimals: COINBASE_B20_STOCK_DECIMALS,
10877
11063
  roles: ["swappable", "listed", "coinbase_b20"]
10878
11064
  }))
10879
11065
  ];
@@ -11058,7 +11244,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
11058
11244
  }));
11059
11245
  return {
11060
11246
  tokens,
11061
- 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." : "Morpho vault assets, Blue market loan/collateral tokens, and Midnight book loan/collateral tokens from api.morpho.org."
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."
11062
11248
  };
11063
11249
  },
11064
11250
  async isTokenSupported(chainId, address) {
@@ -11687,6 +11873,8 @@ exports.mcpMorphoBlueBorrowInputSchema = mcpMorphoBlueBorrowInputSchema;
11687
11873
  exports.mcpMorphoBlueCollateralDepositInputSchema = mcpMorphoBlueCollateralDepositInputSchema;
11688
11874
  exports.mcpMorphoBlueCollateralWithdrawInputSchema = mcpMorphoBlueCollateralWithdrawInputSchema;
11689
11875
  exports.mcpMorphoBlueRepayInputSchema = mcpMorphoBlueRepayInputSchema;
11876
+ exports.mcpMorphoBlueSupplyInputSchema = mcpMorphoBlueSupplyInputSchema;
11877
+ exports.mcpMorphoBlueWithdrawInputSchema = mcpMorphoBlueWithdrawInputSchema;
11690
11878
  exports.mcpMorphoFetchBlueMarketsInputSchema = mcpMorphoFetchBlueMarketsInputSchema;
11691
11879
  exports.mcpMorphoFetchBlueMarketsOutputSchema = mcpMorphoFetchBlueMarketsOutputSchema;
11692
11880
  exports.mcpMorphoFetchEarnVaultsInputSchema = mcpMorphoFetchEarnVaultsInputSchema;
@@ -11699,6 +11887,10 @@ exports.mcpMorphoFetchMidnightPositionsInputSchema = mcpMorphoFetchMidnightPosit
11699
11887
  exports.mcpMorphoFetchMidnightPositionsOutputSchema = mcpMorphoFetchMidnightPositionsOutputSchema;
11700
11888
  exports.mcpMorphoFetchMidnightQuoteInputSchema = mcpMorphoFetchMidnightQuoteInputSchema;
11701
11889
  exports.mcpMorphoFetchMidnightQuoteOutputSchema = mcpMorphoFetchMidnightQuoteOutputSchema;
11890
+ exports.mcpMorphoFetchPositionsInputSchema = mcpMorphoFetchPositionsInputSchema;
11891
+ exports.mcpMorphoFetchPositionsOutputSchema = mcpMorphoFetchPositionsOutputSchema;
11892
+ exports.mcpMorphoFetchStockMarketsInputSchema = mcpMorphoFetchStockMarketsInputSchema;
11893
+ exports.mcpMorphoFetchStockMarketsOutputSchema = mcpMorphoFetchStockMarketsOutputSchema;
11702
11894
  exports.mcpMorphoMerklClaimInputSchema = mcpMorphoMerklClaimInputSchema;
11703
11895
  exports.mcpMorphoMidnightBorrowInputSchema = mcpMorphoMidnightBorrowInputSchema;
11704
11896
  exports.mcpMorphoMidnightCancelLendOfferInputSchema = mcpMorphoMidnightCancelLendOfferInputSchema;