@continuumdao/ctm-mpc-defi 0.2.56 → 0.2.58

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 (66) hide show
  1. package/dist/agent/catalog.cjs +749 -171
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +373 -44
  4. package/dist/agent/catalog.js +738 -173
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/aave-v4/SKILL.md +26 -3
  7. package/dist/agent/skills/aerodrome/SKILL.md +3 -1
  8. package/dist/agent/skills/circle-cctp/SKILL.md +1 -1
  9. package/dist/agent/skills/curve-dao/SKILL.md +2 -2
  10. package/dist/agent/skills/railgun/SKILL.md +39 -0
  11. package/dist/agent/skills/uniswap-v4/SKILL.md +2 -2
  12. package/dist/index.cjs +165 -19
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.js +166 -20
  15. package/dist/index.js.map +1 -1
  16. package/dist/protocols/evm/aave-v4/index.cjs +198 -15
  17. package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
  18. package/dist/protocols/evm/aave-v4/index.d.ts +62 -7
  19. package/dist/protocols/evm/aave-v4/index.js +189 -16
  20. package/dist/protocols/evm/aave-v4/index.js.map +1 -1
  21. package/dist/protocols/evm/aerodrome/index.cjs +152 -63
  22. package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
  23. package/dist/protocols/evm/aerodrome/index.d.ts +30 -58
  24. package/dist/protocols/evm/aerodrome/index.js +151 -64
  25. package/dist/protocols/evm/aerodrome/index.js.map +1 -1
  26. package/dist/protocols/evm/circle-cctp/index.cjs +5 -3
  27. package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
  28. package/dist/protocols/evm/circle-cctp/index.d.ts +3 -1
  29. package/dist/protocols/evm/circle-cctp/index.js +5 -4
  30. package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
  31. package/dist/protocols/evm/compound-v3/index.cjs +115 -2
  32. package/dist/protocols/evm/compound-v3/index.cjs.map +1 -1
  33. package/dist/protocols/evm/compound-v3/index.js +116 -3
  34. package/dist/protocols/evm/compound-v3/index.js.map +1 -1
  35. package/dist/protocols/evm/continuum-dao/index.cjs +1 -1
  36. package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
  37. package/dist/protocols/evm/continuum-dao/index.d.ts +1 -1
  38. package/dist/protocols/evm/continuum-dao/index.js +1 -1
  39. package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
  40. package/dist/protocols/evm/curve-dao/index.cjs +120 -5
  41. package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
  42. package/dist/protocols/evm/curve-dao/index.js +120 -5
  43. package/dist/protocols/evm/curve-dao/index.js.map +1 -1
  44. package/dist/protocols/evm/euler-v2/index.cjs +121 -6
  45. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  46. package/dist/protocols/evm/euler-v2/index.js +121 -6
  47. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  48. package/dist/protocols/evm/morpho/index.cjs +129 -57
  49. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  50. package/dist/protocols/evm/morpho/index.d.ts +2 -1
  51. package/dist/protocols/evm/morpho/index.js +129 -58
  52. package/dist/protocols/evm/morpho/index.js.map +1 -1
  53. package/dist/protocols/evm/pendle/index.cjs +129 -10
  54. package/dist/protocols/evm/pendle/index.cjs.map +1 -1
  55. package/dist/protocols/evm/pendle/index.js +129 -10
  56. package/dist/protocols/evm/pendle/index.js.map +1 -1
  57. package/dist/protocols/evm/railgun/index.cjs +1261 -0
  58. package/dist/protocols/evm/railgun/index.cjs.map +1 -0
  59. package/dist/protocols/evm/railgun/index.d.ts +294 -0
  60. package/dist/protocols/evm/railgun/index.js +1218 -0
  61. package/dist/protocols/evm/railgun/index.js.map +1 -0
  62. package/dist/protocols/evm/uniswap-v4/index.cjs +164 -17
  63. package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
  64. package/dist/protocols/evm/uniswap-v4/index.js +165 -18
  65. package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
  66. package/package.json +17 -1
@@ -1,4 +1,4 @@
1
- import { getAddress, parseAbi, stringToHex, formatUnits, isAddress, zeroAddress, keccak256, toBytes, defineChain, createPublicClient, http } from 'viem';
1
+ import { getAddress, parseAbi, stringToHex, isAddress, formatUnits, zeroAddress, keccak256, toBytes, defineChain, createPublicClient, http } from 'viem';
2
2
  import { MidnightApi } from '@morpho-org/midnight-sdk/api';
3
3
  import { zodToJsonSchema } from 'zod-to-json-schema';
4
4
  import { z } from 'zod';
@@ -45,6 +45,111 @@ var init_chainIdParse = __esm({
45
45
  "src/chains/evm/chainIdParse.ts"() {
46
46
  }
47
47
  });
48
+ function isCoinbaseB20AssetToken(address) {
49
+ try {
50
+ return getAddress(address).toLowerCase().startsWith(COINBASE_B20_ASSET_PREFIX);
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+ function looksLikeCoinbaseStockSymbol(symbol) {
56
+ return /^[A-Za-z][A-Za-z0-9]{0,8}(?:\.[A-Za-z][A-Za-z0-9]{0,4})?c$/.test((symbol ?? "").trim());
57
+ }
58
+ function indexCatalog(rows) {
59
+ catalogRows = rows;
60
+ catalogAt = Date.now();
61
+ catalogBySymbol.clear();
62
+ catalogByAddress.clear();
63
+ for (const row of rows) {
64
+ catalogBySymbol.set(row.symbol.toLowerCase(), row);
65
+ catalogByAddress.set(row.address.toLowerCase(), row);
66
+ }
67
+ }
68
+ function parseCoinbaseTokenizedStocksPayload(payload) {
69
+ const tokens = Array.isArray(payload) ? payload : payload && typeof payload === "object" && Array.isArray(payload.tokens) ? payload.tokens : [];
70
+ const out = [];
71
+ const seen = /* @__PURE__ */ new Set();
72
+ for (const row of tokens) {
73
+ if (!row || typeof row !== "object") continue;
74
+ const rec = row;
75
+ const symbol = typeof rec.symbol === "string" ? rec.symbol.trim() : "";
76
+ const addressRaw = typeof rec.contract_address === "string" ? rec.contract_address.trim() : "";
77
+ if (!looksLikeCoinbaseStockSymbol(symbol) || !isCoinbaseB20AssetToken(addressRaw)) continue;
78
+ const address = getAddress(addressRaw);
79
+ const key = address.toLowerCase();
80
+ if (seen.has(key)) continue;
81
+ seen.add(key);
82
+ const name = typeof rec.name === "string" && rec.name.trim() ? rec.name.trim() : symbol;
83
+ const iconUrl = typeof rec.icon_url === "string" && rec.icon_url.trim() ? rec.icon_url.trim() : void 0;
84
+ const decimals = typeof rec.decimals === "number" && Number.isInteger(rec.decimals) && rec.decimals >= 0 && rec.decimals <= 18 ? rec.decimals : COINBASE_B20_STOCK_DECIMALS;
85
+ out.push({ address, symbol, name, decimals, iconUrl });
86
+ if (out.length >= CATALOG_MAX) break;
87
+ }
88
+ return out;
89
+ }
90
+ async function fetchCoinbaseB20StockCatalog() {
91
+ const merged = [];
92
+ const seen = /* @__PURE__ */ new Set();
93
+ let pageToken = "";
94
+ for (let page = 0; page < 4; page++) {
95
+ const url = new URL(COINBASE_TOKENIZED_STOCKS_API_URL);
96
+ url.searchParams.set("page_size", "500");
97
+ if (pageToken) url.searchParams.set("page_token", pageToken);
98
+ const res = await fetch(url, { cache: "no-store", signal: AbortSignal.timeout(8e3) });
99
+ if (!res.ok) break;
100
+ const json = await res.json();
101
+ for (const row of parseCoinbaseTokenizedStocksPayload(json)) {
102
+ const key = row.address.toLowerCase();
103
+ if (seen.has(key)) continue;
104
+ seen.add(key);
105
+ merged.push(row);
106
+ if (merged.length >= CATALOG_MAX) break;
107
+ }
108
+ pageToken = typeof json.next_page_token === "string" ? json.next_page_token.trim() : "";
109
+ if (!pageToken || merged.length >= CATALOG_MAX) break;
110
+ }
111
+ if (merged.length > 0) indexCatalog(merged);
112
+ return catalogRows ?? [];
113
+ }
114
+ async function ensureCoinbaseB20StockCatalog() {
115
+ if (catalogRows && catalogRows.length > 0 && Date.now() - catalogAt < CATALOG_TTL_MS) return catalogRows;
116
+ if (!catalogInflight) {
117
+ catalogInflight = fetchCoinbaseB20StockCatalog().finally(() => {
118
+ catalogInflight = null;
119
+ });
120
+ }
121
+ try {
122
+ return await catalogInflight;
123
+ } catch {
124
+ return catalogRows ?? [];
125
+ }
126
+ }
127
+ function lookupCoinbaseB20StockToken(token) {
128
+ const key = (token ?? "").trim();
129
+ if (!key) return null;
130
+ const fromCatalog = catalogBySymbol.get(key.toLowerCase());
131
+ if (fromCatalog) return fromCatalog;
132
+ try {
133
+ return catalogByAddress.get(getAddress(key).toLowerCase()) ?? null;
134
+ } catch {
135
+ return null;
136
+ }
137
+ }
138
+ var COINBASE_B20_STOCK_DECIMALS, COINBASE_B20_ASSET_PREFIX, COINBASE_TOKENIZED_STOCKS_API_URL, CATALOG_TTL_MS, CATALOG_MAX, catalogRows, catalogAt, catalogInflight, catalogBySymbol, catalogByAddress;
139
+ var init_coinbaseB20 = __esm({
140
+ "src/protocols/evm/shared/coinbaseB20.ts"() {
141
+ COINBASE_B20_STOCK_DECIMALS = 8;
142
+ COINBASE_B20_ASSET_PREFIX = "0xb200000000000000000000";
143
+ COINBASE_TOKENIZED_STOCKS_API_URL = "https://api.coinbase.com/v1/tokenized-stocks";
144
+ CATALOG_TTL_MS = 15 * 60 * 1e3;
145
+ CATALOG_MAX = 500;
146
+ catalogRows = null;
147
+ catalogAt = 0;
148
+ catalogInflight = null;
149
+ catalogBySymbol = /* @__PURE__ */ new Map();
150
+ catalogByAddress = /* @__PURE__ */ new Map();
151
+ }
152
+ });
48
153
  function defiEvmTransport(rpcUrl, opts) {
49
154
  const url = rpcUrl.trim();
50
155
  return http(url, opts);
@@ -180,7 +285,7 @@ var init_constants = __esm({
180
285
  rewards: zeroAddress,
181
286
  governor: zeroAddress
182
287
  };
183
- CTM_TOKEN_ADDRESS = getAddress("0x2026027054F5beBCEB650aBD62dC623e327658e7");
288
+ CTM_TOKEN_ADDRESS = getAddress("0x7581696b0ED142f6534E5797baaABBb9a1b27086");
184
289
  VOTING_ESCROW_LINEA_ADDRESS = getAddress("0x221EC90B3B083A8501A37bdeb7035CeaedF3C31f");
185
290
  getAddress("0x4ebd7cCBe32a51d1638cFE90E8eD1c4BdF42f729");
186
291
  VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS = getAddress("0x92557d38beAe4658d3c03A02F349FFB60c3bfFA5");
@@ -517,27 +622,6 @@ var init_midnightApi = __esm({
517
622
  init_midnightConstants();
518
623
  }
519
624
  });
520
- var COINBASE_B20_STOCK_TOKENS, COINBASE_B20_STOCK_DECIMALS;
521
- var init_coinbaseB20 = __esm({
522
- "src/protocols/evm/shared/coinbaseB20.ts"() {
523
- COINBASE_B20_STOCK_TOKENS = [
524
- { symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
525
- { symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
526
- { symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
527
- { symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
528
- { symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
529
- { symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
530
- { symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
531
- { symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
532
- { symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
533
- { symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
534
- { symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
535
- { symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
536
- { symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
537
- ];
538
- COINBASE_B20_STOCK_DECIMALS = 8;
539
- }
540
- });
541
625
  function isAerodromeChainSupported(chainId) {
542
626
  const n = typeof chainId === "number" ? chainId : Number.parseInt(String(chainId), 10);
543
627
  return n === AERODROME_CHAIN_ID;
@@ -941,9 +1025,9 @@ async function loadFullCurveSessionForRpc(rpcUrl) {
941
1025
  if (!url) {
942
1026
  throw new Error("rpcUrl is required.");
943
1027
  }
944
- const cached2 = curveSessionCache.get(url);
945
- if (cached2 && cached2.expiresAt > Date.now()) {
946
- return cached2.session;
1028
+ const cached3 = curveSessionCache.get(url);
1029
+ if (cached3 && cached3.expiresAt > Date.now()) {
1030
+ return cached3.session;
947
1031
  }
948
1032
  try {
949
1033
  const { default: curve } = await import('@curvefi/api');
@@ -1306,7 +1390,108 @@ function parseMultisignBuilderOutput(data) {
1306
1390
  return multisignOutputSchema.parse(data);
1307
1391
  }
1308
1392
 
1393
+ // src/protocols/evm/aave-v4/api.ts
1394
+ init_defiProxy();
1395
+ init_coinbaseB20();
1396
+ var AAVE_V4_GRAPHQL_URL = "https://api.v4.aave.com/graphql";
1397
+ async function aaveV4Gql(query, variables) {
1398
+ const body = { query, variables: variables ?? {} };
1399
+ const j = await postJsonViaOptionalProxy({
1400
+ directUrl: AAVE_V4_GRAPHQL_URL,
1401
+ body,
1402
+ proxyUrl: getAaveGraphqlProxyUrl(),
1403
+ proxyEnvelope: body
1404
+ });
1405
+ if (j.errors?.length) {
1406
+ const msg = j.errors.map((e) => e.message ?? "Unknown").join("; ");
1407
+ throw new Error(msg);
1408
+ }
1409
+ if (j.data == null) {
1410
+ throw new Error("Aave V4 API: empty response");
1411
+ }
1412
+ return j.data;
1413
+ }
1414
+ async function fetchAaveV4Chains() {
1415
+ const d = await aaveV4Gql(`
1416
+ query C($c: ChainsRequest!) { chains(request: $c) { chainId name nativeWrappedToken } }
1417
+ `, { c: { query: { filter: "ALL" } } });
1418
+ return d.chains ?? [];
1419
+ }
1420
+ async function loadAaveV4SupportedChainIdsFromV4Api() {
1421
+ const rows = await fetchAaveV4Chains();
1422
+ const s = /* @__PURE__ */ new Set();
1423
+ for (const c of rows) s.add(c.chainId);
1424
+ return s;
1425
+ }
1426
+ var RESERVES_ADDRESS_FRAGMENT = `
1427
+ asset { underlying { address } }
1428
+ `;
1429
+ async function fetchAaveV4NativeWrappedToken(chainId) {
1430
+ const all = await fetchAaveV4Chains();
1431
+ const c = all.find((x) => x.chainId === chainId);
1432
+ const t = (c?.nativeWrappedToken ?? "").trim();
1433
+ if (t && isAddress(t)) return getAddress(t);
1434
+ return null;
1435
+ }
1436
+ async function fetchAaveV4SupportedUnderlyingAddressSet(chainId) {
1437
+ const d = await aaveV4Gql(
1438
+ `
1439
+ query A($r: ReservesRequest!) { reserves(request: $r) { ${RESERVES_ADDRESS_FRAGMENT} } }
1440
+ `,
1441
+ {
1442
+ r: {
1443
+ query: { chainIds: [chainId] },
1444
+ filter: "ALL",
1445
+ orderBy: { supplyApy: "DESC" }
1446
+ }
1447
+ }
1448
+ );
1449
+ const s = /* @__PURE__ */ new Set();
1450
+ for (const r of d.reserves ?? []) {
1451
+ const a = (r.asset?.underlying?.address ?? "").trim();
1452
+ if (a && isAddress(a)) s.add(a.toLowerCase());
1453
+ }
1454
+ return s;
1455
+ }
1456
+ var aaveV4ChainTokenCache = /* @__PURE__ */ new Map();
1457
+ function ensureAaveV4ChainTokenCache(chainId) {
1458
+ const hit = aaveV4ChainTokenCache.get(chainId);
1459
+ if (hit) return hit;
1460
+ const p = (async () => {
1461
+ const [nativeWrapped, supportedUnderlying] = await Promise.all([
1462
+ fetchAaveV4NativeWrappedToken(chainId),
1463
+ fetchAaveV4SupportedUnderlyingAddressSet(chainId)
1464
+ ]);
1465
+ return { supportedUnderlying, nativeWrapped };
1466
+ })();
1467
+ aaveV4ChainTokenCache.set(chainId, p);
1468
+ return p;
1469
+ }
1470
+ function parseAaveV4UiMarketId(raw) {
1471
+ const t = (raw ?? "").trim().toLowerCase().replace(/\s+/g, " ");
1472
+ if (!t) return void 0;
1473
+ if (t === "core") return "core";
1474
+ if (t === "bluechip" || t === "prime" || t === "institutional") return "bluechip";
1475
+ if (t === "main" || t === "plus" || t === "default") return "main";
1476
+ if (t === "bstocks" || t === "bstock" || t === "b stocks" || t === "stocks" || t === "stock" || t === "equities" || t === "equity" || t === "coinbase stocks" || t === "tokenized stocks" || t === "tokenised stocks") {
1477
+ return "bstocks";
1478
+ }
1479
+ return void 0;
1480
+ }
1481
+ function resolveAaveV4UnderlyingAddress(token) {
1482
+ const raw = (token ?? "").trim();
1483
+ if (!raw) return null;
1484
+ if (isAddress(raw)) return getAddress(raw);
1485
+ return lookupCoinbaseB20StockToken(raw)?.address ?? null;
1486
+ }
1487
+
1309
1488
  // src/agent/schemas/chainPreprocess.ts
1489
+ function rewriteAaveV4AssetField(o, key) {
1490
+ const raw = String(o[key] ?? "").trim();
1491
+ if (!raw || isAddress(raw)) return;
1492
+ const resolved = resolveAaveV4UnderlyingAddress(raw);
1493
+ if (resolved) o[key] = resolved;
1494
+ }
1310
1495
  function preprocessObject(raw) {
1311
1496
  if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
1312
1497
  return { ...raw };
@@ -1648,6 +1833,12 @@ function preprocessAaveMultisignInput(action) {
1648
1833
  return (raw) => {
1649
1834
  const o = preprocessObject(raw);
1650
1835
  if (!o) return raw;
1836
+ rewriteAaveV4AssetField(o, "underlying");
1837
+ rewriteAaveV4AssetField(o, "collateralUnderlying");
1838
+ if (typeof o.marketId === "string") {
1839
+ const id = parseAaveV4UiMarketId(o.marketId);
1840
+ if (id) o.marketId = id;
1841
+ }
1651
1842
  derivePurposeIfMissing(o, (x) => {
1652
1843
  const amt = String(x.amountHuman ?? "").trim();
1653
1844
  const asset = String(x.underlying ?? "").trim();
@@ -1664,8 +1855,8 @@ var uniswapQuoteTradeTypeSchema = z.enum(["EXACT_INPUT", "EXACT_OUTPUT"]);
1664
1855
  var mcpUniswapV4QuoteInputSchema = z.object({
1665
1856
  type: uniswapQuoteTradeTypeSchema.describe("EXACT_INPUT or EXACT_OUTPUT"),
1666
1857
  amount: z.string().min(1).describe("Amount in token-in base units (wei string for ERC-20)"),
1667
- tokenIn: z.string().min(1).describe("Input token; 0x0 for native ETH"),
1668
- tokenOut: z.string().min(1).describe("Output token address"),
1858
+ tokenIn: z.string().min(1).describe("Input token address or Coinbase stock ticker (AAPLc); 0x0 for native ETH"),
1859
+ tokenOut: z.string().min(1).describe("Output token address or Coinbase stock ticker (AAPLc)"),
1669
1860
  chainId: agentEvmChainIdSchema.describe("tokenInChainId / same-chain default"),
1670
1861
  uniswapApiKey: z.string().min(1).describe("Uniswap Trade API x-api-key"),
1671
1862
  swapper: evmAddressSchema.optional().describe("MPC executor; omit if keyGen + managementNodeUrl provided"),
@@ -1701,7 +1892,9 @@ var mcpUniswapV4BuildSwapMultisignInputSchema = withMultisignKeySourceRefine(
1701
1892
  z.preprocess(
1702
1893
  preprocessUniswapBuildSwapInput,
1703
1894
  evmMultisignCommonInputSchema.extend({
1704
- tokenIn: evmAddressSchema.describe("Token in; 0x0 for native ETH"),
1895
+ tokenIn: evmAddressSchema.describe(
1896
+ "Token in address or Coinbase stock ticker (AAPLc); 0x0 for native ETH"
1897
+ ),
1705
1898
  swap: swapTxRequestSchema,
1706
1899
  createSwapResponse: z.object({
1707
1900
  swap: swapTxRequestSchema,
@@ -1718,8 +1911,8 @@ var mcpUniswapV4LimitOrderQuoteInputSchema = z.object({
1718
1911
  type: uniswapQuoteTradeTypeSchema.describe("EXACT_INPUT or EXACT_OUTPUT"),
1719
1912
  amount: z.string().min(1).describe("Amount in token-in base units (wei string for ERC-20)"),
1720
1913
  limitPrice: z.string().min(1).describe("Limit price string from Trade API (pair exchange rate)"),
1721
- tokenIn: z.string().min(1).describe("Input token; 0x0 for native ETH"),
1722
- tokenOut: z.string().min(1).describe("Output token address"),
1914
+ tokenIn: z.string().min(1).describe("Input token address or Coinbase stock ticker (AAPLc); 0x0 for native ETH"),
1915
+ tokenOut: z.string().min(1).describe("Output token address or Coinbase stock ticker (AAPLc)"),
1723
1916
  chainId: agentEvmChainIdSchema.describe("Must be 1 (Ethereum mainnet) for limit orders"),
1724
1917
  orderDeadline: agentCoercedIntSchema(z.number().int().positive()).describe("Unix seconds when unfilled order expires"),
1725
1918
  uniswapApiKey: z.string().min(1).describe("Uniswap Trade API x-api-key"),
@@ -2066,8 +2259,8 @@ var mcpUniswapV4BuildAllowlistFinalizeMultisignInputSchema = withMultisignKeySou
2066
2259
  var mcpCurveDaoQuoteInputSchema = z.object({
2067
2260
  chainId: agentEvmChainIdSchema.describe("EVM chain id (rpcUrl resolved from get_chain_registry rpcGateway)"),
2068
2261
  rpcUrl: z.string().min(1).optional().describe("JSON-RPC URL; continuum-mcp-server injects from chain registry \u2014 do not pass a public RPC URL"),
2069
- tokenIn: z.string().min(1).describe("Input token address, or 0xeeee\u2026 / 0x0 / eth for native"),
2070
- tokenOut: z.string().min(1).describe("Output token address or 0xeeee\u2026 native placeholder"),
2262
+ tokenIn: z.string().min(1).describe("Input token address, Coinbase stock ticker (AAPLc), or 0xeeee\u2026 / 0x0 / eth for native"),
2263
+ tokenOut: z.string().min(1).describe("Output token address, Coinbase stock ticker (AAPLc), or 0xeeee\u2026 native placeholder"),
2071
2264
  amountHuman: z.string().min(1).describe("Human-readable amount of tokenIn"),
2072
2265
  tokenInDecimals: z.number().int().min(0).max(18).optional().describe("Token-in decimals; omit to read on-chain (native uses 18)")
2073
2266
  });
@@ -2078,8 +2271,10 @@ var mcpCurveDaoBuildSwapMultisignInputSchema = withMultisignKeySourceRefine(
2078
2271
  z.preprocess(
2079
2272
  preprocessCurveBuildSwapInput,
2080
2273
  evmMultisignCommonInputSchema.extend({
2081
- tokenIn: evmAddressSchema.describe("ERC-20 sold (native in uses WETH path in UI)"),
2082
- tokenOut: z.string().min(1).describe("Output token or 0xeeee\u2026 native placeholder"),
2274
+ tokenIn: evmAddressSchema.describe(
2275
+ "ERC-20 sold, or a Coinbase stock ticker (AAPLc). Native in uses the WETH path in the UI."
2276
+ ),
2277
+ tokenOut: z.string().min(1).describe("Output token, Coinbase stock ticker (AAPLc), or 0xeeee\u2026 native placeholder"),
2083
2278
  amountHuman: z.string().min(1).describe("Human-readable amount of tokenIn"),
2084
2279
  slippagePercent: z.number().gt(0).lt(100).describe("Slippage 0\u2013100 exclusive"),
2085
2280
  quoteSnapshot: jsonObjectSchema.optional().describe("Optional quote row from ctm_curve_dao_quote \u2014 aliases tokenIn/tokenOut/amountHuman")
@@ -3030,7 +3225,9 @@ var mcpSkySusdsDepositInputSchema = mcpMultisignInput({
3030
3225
  var mcpSkySusdsRedeemInputSchema = mcpMultisignInput({
3031
3226
  sharesHuman: z.string().min(1)
3032
3227
  });
3033
- var mcpAaveV4MarketIdSchema = z.string().min(1).optional().describe("UI market segment: main (Plus), core, or bluechip (Prime). Default main.");
3228
+ var mcpAaveV4MarketIdSchema = z.string().min(1).optional().describe(
3229
+ "UI market segment: main (Plus), core, bluechip (Prime), or bstocks (Base Coinbase tokenized stocks). Aliases: stocks, equities. Default main."
3230
+ );
3034
3231
  function mcpAaveV4MultisignInput(fields, action) {
3035
3232
  return withMultisignKeySourceRefine(
3036
3233
  z.preprocess(preprocessAaveMultisignInput(action), evmMultisignCommonInputSchema.extend(fields))
@@ -3048,7 +3245,7 @@ var mcpAaveV4DepositInputSchema = mcpAaveV4MultisignInput(
3048
3245
  {
3049
3246
  spoke: evmAddressSchema.optional().describe("Omit \u2014 continuum-mcp-server resolves spoke from Aave v4 API."),
3050
3247
  underlying: evmAddressSchema.describe(
3051
- "Asset to supply. Native ETH: 0x0 or wrapped native with isNativeIn true."
3248
+ "Asset to supply. Address, or a Base bStock ticker (AAPLc). Native ETH: 0x0 or wrapped native with isNativeIn true."
3052
3249
  ),
3053
3250
  amountHuman: z.string().min(1),
3054
3251
  marketId: mcpAaveV4MarketIdSchema,
@@ -3064,7 +3261,7 @@ var mcpAaveV4DepositInputSchema = mcpAaveV4MultisignInput(
3064
3261
  var mcpAaveV4WithdrawInputSchema = mcpAaveV4MultisignInput(
3065
3262
  {
3066
3263
  spoke: evmAddressSchema.optional().describe("Omit \u2014 server resolves from Aave v4 API."),
3067
- underlying: evmAddressSchema.describe("Supplied asset to withdraw."),
3264
+ underlying: evmAddressSchema.describe("Supplied asset to withdraw. Address or bStock ticker (AAPLc)."),
3068
3265
  amountHuman: z.string().min(1),
3069
3266
  marketId: mcpAaveV4MarketIdSchema,
3070
3267
  ...mcpAaveV4HealthPreviewFields
@@ -3074,10 +3271,14 @@ var mcpAaveV4WithdrawInputSchema = mcpAaveV4MultisignInput(
3074
3271
  var mcpAaveV4BorrowInputSchema = mcpAaveV4MultisignInput(
3075
3272
  {
3076
3273
  spoke: evmAddressSchema.optional().describe("Omit \u2014 server resolves from Aave v4 API."),
3077
- underlying: evmAddressSchema.describe("Debt asset to borrow (e.g. USDC), not collateral."),
3274
+ underlying: evmAddressSchema.describe(
3275
+ "Debt asset to borrow (e.g. USDC), not collateral. On bstocks the equities are not borrowable."
3276
+ ),
3078
3277
  amountHuman: z.string().min(1),
3079
3278
  marketId: mcpAaveV4MarketIdSchema,
3080
- collateralUnderlying: evmAddressSchema.optional().describe("Collateral token already supplied; helps pick hub when debt exists on multiple hubs."),
3279
+ collateralUnderlying: evmAddressSchema.optional().describe(
3280
+ "Collateral token already supplied (address or bStock ticker such as AAPLc). Helps pick the hub when debt exists on multiple hubs."
3281
+ ),
3081
3282
  ...mcpAaveV4HealthPreviewFields
3082
3283
  },
3083
3284
  "borrow"
@@ -3085,7 +3286,7 @@ var mcpAaveV4BorrowInputSchema = mcpAaveV4MultisignInput(
3085
3286
  var mcpAaveV4RepayInputSchema = mcpAaveV4MultisignInput(
3086
3287
  {
3087
3288
  spoke: evmAddressSchema.optional().describe("Omit \u2014 server resolves from Aave v4 API."),
3088
- underlying: evmAddressSchema.describe("Debt token to repay."),
3289
+ underlying: evmAddressSchema.describe("Debt token to repay. On bstocks this is USDC."),
3089
3290
  amountHuman: z.string().min(1),
3090
3291
  marketId: mcpAaveV4MarketIdSchema,
3091
3292
  ...mcpAaveV4HealthPreviewFields
@@ -4263,11 +4464,18 @@ var mcpMapleFetchMarketInputSchema = z.object({
4263
4464
  underlying: z.string().trim().min(1).optional().describe("Deposit asset address or ticker (USDC, USDT, USDG).")
4264
4465
  });
4265
4466
  var mcpMapleFetchMarketOutputSchema = mcpMapleFetchMarketsOutputSchema;
4266
- var mcpAaveV4UiMarketIdSchema = z.enum(["main", "core", "bluechip"]).optional().describe("UI market segment: main (Plus), core, or bluechip (Prime). Omit to list all hubs.");
4467
+ var aaveV4UiMarketIdEnum = z.enum(["main", "core", "bluechip", "bstocks"]);
4468
+ function preprocessAaveV4MarketId(value) {
4469
+ if (typeof value !== "string") return value;
4470
+ return parseAaveV4UiMarketId(value) ?? value;
4471
+ }
4472
+ var mcpAaveV4UiMarketIdSchema = z.preprocess(preprocessAaveV4MarketId, aaveV4UiMarketIdEnum.optional()).describe(
4473
+ "UI market segment: main (Plus), core, bluechip (Prime), or bstocks (Base Coinbase tokenized stocks). Aliases: stocks, equities. Omit to list all hubs."
4474
+ );
4267
4475
  var mcpAaveV4MarketSummarySchema = z.object({
4268
4476
  chainId: z.number(),
4269
4477
  hubName: z.string(),
4270
- marketId: z.enum(["main", "core", "bluechip"]),
4478
+ marketId: aaveV4UiMarketIdEnum,
4271
4479
  hubAddress: z.string(),
4272
4480
  symbol: z.string(),
4273
4481
  name: z.string(),
@@ -4287,7 +4495,9 @@ var mcpAaveV4MarketSummarySchema = z.object({
4287
4495
  var mcpAaveV4FetchMarketsInputSchema = z.object({
4288
4496
  chainId: agentEvmChainIdSchema,
4289
4497
  marketId: mcpAaveV4UiMarketIdSchema,
4290
- underlying: z.string().trim().min(1).optional().describe("Optional filter: ERC-20 address or ticker (USDT, USDC). Omit to list all reserves.")
4498
+ underlying: z.string().trim().min(1).optional().describe(
4499
+ 'Optional filter: ERC-20 address or ticker (USDT, USDC, AAPLc). "stock" lists bStock collateral. Omit to list all reserves.'
4500
+ )
4291
4501
  });
4292
4502
  var mcpAaveV4FetchMarketsOutputSchema = z.object({
4293
4503
  chainId: z.number(),
@@ -4296,14 +4506,21 @@ var mcpAaveV4FetchMarketsOutputSchema = z.object({
4296
4506
  });
4297
4507
  var mcpAaveV4FetchMarketInputSchema = z.object({
4298
4508
  chainId: agentEvmChainIdSchema,
4299
- underlying: z.string().trim().min(1).describe("Reserve underlying address or ticker (e.g. USDT). Prefer fetch_markets when listing rates."),
4509
+ underlying: z.string().trim().min(1).describe(
4510
+ "Reserve underlying address or ticker (USDT, AAPLc). Prefer fetch_markets or fetch_stock_markets when listing rates."
4511
+ ),
4300
4512
  marketId: mcpAaveV4UiMarketIdSchema
4301
4513
  });
4302
4514
  var mcpAaveV4FetchMarketOutputSchema = mcpAaveV4FetchMarketsOutputSchema;
4515
+ var mcpAaveV4FetchStockMarketsInputSchema = z.object({
4516
+ chainId: agentEvmChainIdSchema.optional().describe("Defaults to Base 8453 (Coinbase Stocks hub)."),
4517
+ underlying: z.string().trim().min(1).optional().describe("B20 ticker or address (AAPLc), or USDC. Omit to list the whole Coinbase Stocks hub.")
4518
+ });
4519
+ var mcpAaveV4FetchStockMarketsOutputSchema = mcpAaveV4FetchMarketsOutputSchema;
4303
4520
  var mcpEulerV2FetchLendVaultsInputSchema = z.object({
4304
4521
  chainId: agentEvmChainIdSchema,
4305
4522
  underlyingAddress: evmAddressSchema.describe(
4306
- "Underlying asset address from get_defi_protocol_supported_tokens."
4523
+ "Underlying asset address, or a Coinbase stock ticker (AAPLc) from the live catalog."
4307
4524
  ),
4308
4525
  limit: agentCoercedOptionalIntSchema(z.number().int().min(1).max(100)).describe("Max vault rows (default 30).")
4309
4526
  });
@@ -4325,7 +4542,7 @@ var mcpEulerV2FetchLendVaultsOutputSchema = z.object({
4325
4542
  var mcpEulerV2FetchEarnVaultsInputSchema = z.object({
4326
4543
  chainId: agentEvmChainIdSchema,
4327
4544
  underlyingAddress: evmAddressSchema.describe(
4328
- "Underlying asset address from get_defi_protocol_supported_tokens."
4545
+ "Underlying asset address, or a Coinbase stock ticker (AAPLc) from the live catalog."
4329
4546
  ),
4330
4547
  limit: agentCoercedOptionalIntSchema(z.number().int().min(1).max(100)).describe("Max vault rows (default 30).")
4331
4548
  });
@@ -4352,6 +4569,77 @@ var mcpLidoFetchStethAprOutputSchema = z.object({
4352
4569
  source: z.string(),
4353
4570
  notes: z.string()
4354
4571
  });
4572
+ var mcpRailgunFetchPopularAssetsInputSchema = z.object({
4573
+ chainId: agentEvmChainIdSchema,
4574
+ rpcUrl: z.string().min(1).optional().describe("Server-filled from the chain registry. Agents should omit.")
4575
+ }).strict();
4576
+ var mcpRailgunFetchPopularAssetsOutputSchema = z.object({
4577
+ chainId: z.number(),
4578
+ tokens: z.array(z.object({ address: z.string() }).strict()),
4579
+ nativeWrapped: z.string().optional(),
4580
+ notes: z.string()
4581
+ }).strict();
4582
+ var mcpRailgunFetchPrivateBalancesInputSchema = z.object({
4583
+ keyGenId: z.string().min(1).describe("KeyGen request id. The shielded wallet is stored on that KeyGen record."),
4584
+ chainId: agentEvmChainIdSchema,
4585
+ refresh: z.boolean().optional().describe("Scan again and write the KeyGen record. Default reads the stored scan, and scans when none is stored.")
4586
+ }).strict();
4587
+ var mcpRailgunPrivateBalanceSchema = z.object({
4588
+ tokenAddress: z.string(),
4589
+ spendable: z.string(),
4590
+ pending: z.string(),
4591
+ symbol: z.string().optional()
4592
+ }).strict();
4593
+ var mcpRailgunFetchPrivateBalancesOutputSchema = z.object({
4594
+ railgunAddress: z.string(),
4595
+ walletConfigured: z.boolean(),
4596
+ chainId: z.number(),
4597
+ scanned: z.boolean(),
4598
+ scanStatus: z.enum(["scanning", "ready", "empty", "error", "unscanned"]),
4599
+ balances: z.array(mcpRailgunPrivateBalanceSchema),
4600
+ notes: z.string()
4601
+ }).strict();
4602
+ var mcpRailgunEnsureWalletInputSchema = z.object({
4603
+ keyGenId: z.string().min(1),
4604
+ chainId: agentEvmChainIdSchema.optional()
4605
+ }).strict();
4606
+ var mcpRailgunEnsureWalletOutputSchema = z.object({
4607
+ railgunAddress: z.string(),
4608
+ created: z.boolean()
4609
+ }).strict();
4610
+ var mcpRailgunShieldInputSchema = mcpMultisignInput({
4611
+ tokenAddress: evmAddressSchema.describe("ERC-20 contract to shield"),
4612
+ amountWei: z.string().min(1).describe("Amount in wei"),
4613
+ railgunAddress: z.string().min(1).describe("Recipient 0zk address"),
4614
+ shieldSignature: z.string().min(1).optional().describe("personal_sign result from the first shield call. Omit on the first call.")
4615
+ });
4616
+ var mcpRailgunPrivateTransferInputSchema = z.object({
4617
+ keyGenId: z.string().min(1),
4618
+ chainId: agentEvmChainIdSchema,
4619
+ tokenAddress: evmAddressSchema,
4620
+ amountWei: z.string().min(1),
4621
+ recipientAddress: z.string().min(1).describe("Recipient 0zk address"),
4622
+ memoText: z.string().optional()
4623
+ }).strict();
4624
+ var mcpRailgunUnshieldInputSchema = z.object({
4625
+ keyGenId: z.string().min(1),
4626
+ chainId: agentEvmChainIdSchema,
4627
+ tokenAddress: evmAddressSchema,
4628
+ amountWei: z.string().min(1),
4629
+ recipientAddress: evmAddressSchema.optional().describe("Public recipient. Defaults to this KeyGen Ethereum address.")
4630
+ }).strict();
4631
+ var mcpRailgunAgreeSpendInputSchema = z.object({
4632
+ keyGenId: z.string().min(1),
4633
+ spendId: z.string().min(1)
4634
+ }).strict();
4635
+ var mcpRailgunPrivateActionOutputSchema = z.object({
4636
+ status: z.enum(["pending", "submitted", "failed"]),
4637
+ spendId: z.string(),
4638
+ approvals: z.number().int().nonnegative(),
4639
+ quorum: z.number().int().positive(),
4640
+ txHash: z.string().optional(),
4641
+ error: z.string().optional()
4642
+ }).strict();
4355
4643
  var mcpSkyFetchSusdsRateInputSchema = z.object({
4356
4644
  rpcUrl: z.string().min(1).optional().describe("Server-filled from chain registry. Agents should omit.")
4357
4645
  }).strict();
@@ -4420,7 +4708,7 @@ var mcpPendleFetchMerkleRewardsOutputSchema = jsonObjectSchema.describe(
4420
4708
  var mcpPendleQuoteSwapInputSchema = z.object({
4421
4709
  chainId: agentEvmChainIdSchema,
4422
4710
  rpcUrl: z.string().min(1).optional(),
4423
- tokenIn: z.string().min(1).describe("Underlying, PT, or YT (0xeeee / 0x0 = native)."),
4711
+ tokenIn: z.string().min(1).describe("Underlying, PT, YT, or Coinbase stock ticker (AAPLc). 0xeeee / 0x0 = native."),
4424
4712
  tokenOut: z.string().min(1),
4425
4713
  amountHuman: z.string().min(1),
4426
4714
  slippagePercent: z.number().gt(0).lt(100),
@@ -6094,7 +6382,7 @@ var mcpCctpFetchBurnFeesInputSchema = z.object({
6094
6382
  transferAmountHuman: z.string().min(1).optional().describe(
6095
6383
  "Human USDC amount the recipient receives (6 decimals). Required for a maxFee that includes the fast-transfer protocol fee and for totalBurn. Omit only to inspect raw forwarding tiers."
6096
6384
  ),
6097
- feeTier: z.enum(["low", "med", "high"]).optional().describe("Iris forwardFee tier; default med"),
6385
+ feeTier: z.enum(["low", "med", "high"]).optional().describe("Iris forwardFee tier; default high"),
6098
6386
  minFinalityThreshold: agentCoercedOptionalIntSchema(z.number().int().positive()).describe(
6099
6387
  "Iris fee row. 1000 (default) is fast transfer and includes minimumFee bps. 2000 is standard transfer."
6100
6388
  )
@@ -6131,7 +6419,7 @@ var mcpCctpBuildBurnMultisignInputSchema = mcpMultisignInput({
6131
6419
  destChainId: agentEvmChainIdSchema.describe("Destination chain EIP-155 id (mint chain)"),
6132
6420
  transferAmountHuman: z.string().min(1).describe("Human USDC amount recipient receives"),
6133
6421
  mintRecipient: evmAddressSchema.optional().describe("Recipient on destination chain; defaults to MPC executor address"),
6134
- feeTier: z.enum(["low", "med", "high"]).optional(),
6422
+ feeTier: z.enum(["low", "med", "high"]).optional().describe("Iris forwardFee tier; default high"),
6135
6423
  minFinalityThreshold: agentCoercedOptionalIntSchema(z.number().int().positive()),
6136
6424
  feeSnapshot: jsonObjectSchema.optional().describe(
6137
6425
  "Optional output from ctm_cctp_fetch_burn_fees. Build re-quotes Iris. A snapshot maxFee below the live forward+protocol total is ignored; a higher snapshot is kept as a cap."
@@ -6555,7 +6843,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
6555
6843
  actionId: "aave-v4.deposit",
6556
6844
  protocolId: "aave-v4",
6557
6845
  chainCategory: "evm",
6558
- description: "Build Aave v4 Spoke supply/deposit batch (wrap native, approve, supply).",
6846
+ description: "Build Aave v4 Spoke supply/deposit batch (wrap native, approve, supply). Base bStocks: marketId bstocks and underlying ticker (AAPLc) or address.",
6559
6847
  prerequisites: ["keyGenId", "chainId", "underlying", "amountHuman", "get_defi_protocol_skill for hubs/spokes"],
6560
6848
  handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4DepositBatch" },
6561
6849
  inputZod: mcpAaveV4DepositInputSchema
@@ -6575,7 +6863,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
6575
6863
  actionId: "aave-v4.borrow",
6576
6864
  protocolId: "aave-v4",
6577
6865
  chainCategory: "evm",
6578
- description: "Build Aave v4 Spoke borrow; underlying is debt asset; collateral must be supplied first.",
6866
+ description: "Build Aave v4 Spoke borrow; underlying is the debt asset (USDC on bstocks). Equities are collateral-only. collateralUnderlying may be a bStock ticker (AAPLc).",
6579
6867
  prerequisites: [
6580
6868
  "keyGenId",
6581
6869
  "chainId",
@@ -7709,6 +7997,16 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
7709
7997
  prerequisites: ["keyGenId", "chainId 999", "question", "outcome", "amountHuman", "purposeText"],
7710
7998
  handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeNegate" },
7711
7999
  inputZod: mcpHyperliquidOutcomeNegateInputSchema
8000
+ }),
8001
+ defineProtocolMcpTool({
8002
+ name: "ctm_railgun_build_shield_multisign",
8003
+ actionId: "railgun.shield",
8004
+ protocolId: "railgun",
8005
+ chainCategory: "evm",
8006
+ description: "Shield an ERC-20 into a Railgun 0zk address. The first call omits shieldSignature and returns a personal_sign. Submit it, then call again with shieldSignature to build the approve-and-shield transaction.",
8007
+ prerequisites: ["keyGen", "executorAddress", "RPC URL", "0zk recipient"],
8008
+ handler: { importPath: "protocols/evm/railgun", exportName: "buildEvmMultisignBodyRailgunShield" },
8009
+ inputZod: mcpRailgunShieldInputSchema
7712
8010
  })
7713
8011
  ];
7714
8012
  var catalogQuery = {
@@ -10009,10 +10307,11 @@ var CORE_MCP_TOOL_DEFINITIONS = [
10009
10307
  actionId: "aave-v4.fetch-markets",
10010
10308
  protocolId: "aave-v4",
10011
10309
  chainCategory: "evm",
10012
- description: "List Aave v4 hub reserves on a chain with live supply/borrow APY, liquidity, and collateral factor. Use this (not web search) to compare lending rates or pick an underlying + marketId for build_*_multisign. Optional marketId (main/core/bluechip) or underlying filter.",
10310
+ description: "List Aave v4 hub reserves on a chain with live supply/borrow APY, liquidity, and collateral factor. Use this (not web search) to compare lending rates or pick an underlying + marketId for build_*_multisign. Optional marketId (main/core/bluechip/bstocks) or underlying filter. Base tokenized stocks: marketId bstocks or ctm_aave_v4_fetch_stock_markets. Tickers (AAPLc) OK.",
10013
10311
  prerequisites: ["chainId", "get_defi_protocol_supported_chains"],
10014
10312
  followUp: [
10015
10313
  "ctm_aave_v4_fetch_market",
10314
+ "ctm_aave_v4_fetch_stock_markets",
10016
10315
  "ctm_aave_v4_build_deposit_multisign",
10017
10316
  "ctm_aave_v4_build_borrow_multisign"
10018
10317
  ],
@@ -10025,7 +10324,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
10025
10324
  actionId: "aave-v4.fetch-market",
10026
10325
  protocolId: "aave-v4",
10027
10326
  chainCategory: "evm",
10028
- description: "One Aave v4 reserve (or the same underlying across hubs) with supply/borrow APY and liquidity. Copy underlying + marketId for deposit/borrow/repay. Do not web-search Aave rates.",
10327
+ description: "One Aave v4 reserve (or the same underlying across hubs) with supply/borrow APY and liquidity. Copy underlying + marketId for deposit/borrow/repay. Tickers OK (USDT, AAPLc). Do not web-search Aave rates.",
10029
10328
  prerequisites: ["chainId", "underlying from ctm_aave_v4_fetch_markets or get_defi_protocol_supported_tokens"],
10030
10329
  followUp: [
10031
10330
  "ctm_aave_v4_build_deposit_multisign",
@@ -10037,6 +10336,23 @@ var CORE_MCP_TOOL_DEFINITIONS = [
10037
10336
  inputZod: mcpAaveV4FetchMarketInputSchema,
10038
10337
  outputZod: mcpAaveV4FetchMarketOutputSchema
10039
10338
  }),
10339
+ defineMcpTool({
10340
+ name: "ctm_aave_v4_fetch_stock_markets",
10341
+ actionId: "aave-v4.fetch-stock-markets",
10342
+ protocolId: "aave-v4",
10343
+ chainCategory: "evm",
10344
+ description: "Coinbase tokenized stocks (bStocks) on the Aave v4 Coinbase Stocks hub, Base chainId 8453 by default. Equities (AAPLc, NVDAc, \u2026) are collateral-only; USDC is the borrow asset. Tickers OK. Same rows as ctm_aave_v4_fetch_markets with marketId bstocks. Chainlink feeds are 24/5. Not for U.S. persons.",
10345
+ prerequisites: ["chainId 8453 or omit"],
10346
+ followUp: [
10347
+ "ctm_aave_v4_build_deposit_multisign",
10348
+ "ctm_aave_v4_build_borrow_multisign",
10349
+ "ctm_aave_v4_build_repay_multisign",
10350
+ "ctm_aave_v4_build_withdraw_multisign"
10351
+ ],
10352
+ handler: { importPath: "protocols/evm/aave-v4", exportName: "aaveV4FetchStockMarketsSummary" },
10353
+ inputZod: mcpAaveV4FetchStockMarketsInputSchema,
10354
+ outputZod: mcpAaveV4FetchStockMarketsOutputSchema
10355
+ }),
10040
10356
  defineMcpTool({
10041
10357
  name: "ctm_aave_v4_fetch_merkl_rewards",
10042
10358
  actionId: "aave-v4.fetch-merkl-rewards",
@@ -10721,6 +11037,78 @@ var CORE_MCP_TOOL_DEFINITIONS = [
10721
11037
  handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchOrderbookSummary" },
10722
11038
  inputZod: mcpTrueoFetchOrderbookInputSchema,
10723
11039
  outputZod: mcpTrueoFetchOrderbookOutputSchema
11040
+ }),
11041
+ defineMcpTool({
11042
+ name: "ctm_railgun_fetch_popular_assets",
11043
+ actionId: "railgun.fetch-popular-assets",
11044
+ protocolId: "railgun",
11045
+ chainCategory: "evm",
11046
+ description: "Top 5 public ERC-20s on a Railgun chain by recent shield count. This is the asset-row icon list, not the user shielded holdings. rpcUrl is injected.",
11047
+ prerequisites: ["chainId", "get_defi_protocol_supported_chains"],
11048
+ followUp: ["ctm_railgun_build_shield_multisign"],
11049
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunFetchPopularAssets" },
11050
+ inputZod: mcpRailgunFetchPopularAssetsInputSchema,
11051
+ outputZod: mcpRailgunFetchPopularAssetsOutputSchema
11052
+ }),
11053
+ defineMcpTool({
11054
+ name: "ctm_railgun_ensure_wallet",
11055
+ actionId: "railgun.ensure-wallet",
11056
+ protocolId: "railgun",
11057
+ chainCategory: "evm",
11058
+ description: "Create the Railgun wallet on this KeyGen if it does not exist yet, and return its 0zk address. The spending key is split across the KeyGen nodes. No node receives a key it can spend alone. Does not return a mnemonic. Use this from the node agent and from Telegram before shield, unshield, or private transfer.",
11059
+ prerequisites: ["keyGenId"],
11060
+ followUp: ["ctm_railgun_fetch_private_balances", "ctm_railgun_build_shield_multisign"],
11061
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunFetchPrivateBalancesSummary" },
11062
+ inputZod: mcpRailgunEnsureWalletInputSchema,
11063
+ outputZod: mcpRailgunEnsureWalletOutputSchema
11064
+ }),
11065
+ defineMcpTool({
11066
+ name: "ctm_railgun_fetch_private_balances",
11067
+ actionId: "railgun.fetch-private-balances",
11068
+ protocolId: "railgun",
11069
+ chainCategory: "evm",
11070
+ description: "Shielded balances stored on the KeyGen record for this chain. Scans on the node when no scan is stored, or when refresh is true, then writes the result back to the KeyGen. Does not return a mnemonic or viewing key. Works from the node agent and from Telegram.",
11071
+ prerequisites: ["keyGenId", "chainId", "ctm_railgun_ensure_wallet"],
11072
+ followUp: ["ctm_railgun_private_transfer", "ctm_railgun_unshield"],
11073
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunFetchPrivateBalancesSummary" },
11074
+ inputZod: mcpRailgunFetchPrivateBalancesInputSchema,
11075
+ outputZod: mcpRailgunFetchPrivateBalancesOutputSchema
11076
+ }),
11077
+ defineMcpTool({
11078
+ name: "ctm_railgun_private_transfer",
11079
+ actionId: "railgun.private-transfer",
11080
+ protocolId: "railgun",
11081
+ chainCategory: "evm",
11082
+ description: "Start a private Railgun transfer. It stays pending until the KeyGen signing quorum agrees with ctm_railgun_agree_spend. No single node can spend. Do not pass a mnemonic.",
11083
+ prerequisites: ["keyGenId", "chainId", "0zk recipient", "ctm_railgun_ensure_wallet"],
11084
+ followUp: ["ctm_railgun_fetch_private_balances"],
11085
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunPrivateTransfer" },
11086
+ inputZod: mcpRailgunPrivateTransferInputSchema,
11087
+ outputZod: mcpRailgunPrivateActionOutputSchema
11088
+ }),
11089
+ defineMcpTool({
11090
+ name: "ctm_railgun_unshield",
11091
+ actionId: "railgun.unshield",
11092
+ protocolId: "railgun",
11093
+ chainCategory: "evm",
11094
+ description: "Start an unshield to a public address. It stays pending until the KeyGen signing quorum agrees with ctm_railgun_agree_spend. Recipient defaults to the KeyGen Ethereum address. No single node can spend. Do not pass a mnemonic.",
11095
+ prerequisites: ["keyGenId", "chainId", "ctm_railgun_ensure_wallet"],
11096
+ followUp: ["ctm_railgun_fetch_private_balances"],
11097
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunUnshield" },
11098
+ inputZod: mcpRailgunUnshieldInputSchema,
11099
+ outputZod: mcpRailgunPrivateActionOutputSchema
11100
+ }),
11101
+ defineMcpTool({
11102
+ name: "ctm_railgun_agree_spend",
11103
+ actionId: "railgun.agree-spend",
11104
+ protocolId: "railgun",
11105
+ chainCategory: "evm",
11106
+ description: "Agree this node\u2019s Railgun spending share for a pending spendId. Read the pending spend on the KeyGen record before agreeing. One share cannot spend the 0zk wallet.",
11107
+ prerequisites: ["keyGenId", "spendId"],
11108
+ followUp: ["ctm_railgun_fetch_private_balances"],
11109
+ handler: { importPath: "protocols/evm/railgun", exportName: "railgunFetchPrivateBalancesSummary" },
11110
+ inputZod: mcpRailgunAgreeSpendInputSchema,
11111
+ outputZod: mcpRailgunPrivateActionOutputSchema
10724
11112
  })
10725
11113
  ];
10726
11114
  var MCP_TOOL_DEFINITIONS = [
@@ -10837,6 +11225,222 @@ var lidoProtocolModule = {
10837
11225
  ]
10838
11226
  };
10839
11227
  registerProtocolModule(lidoProtocolModule);
11228
+
11229
+ // src/protocols/evm/railgun/networks.ts
11230
+ function selectRailgunNetworks(config) {
11231
+ const rows = [];
11232
+ for (const entry of Object.values(config)) {
11233
+ if (!entry || entry.deprecated || entry.isDevOnlyNetwork) continue;
11234
+ const chainId = Number(entry.chain?.id);
11235
+ const proxyContract = String(entry.proxyContract ?? "").trim();
11236
+ const wrappedAddress = String(entry.baseToken?.wrappedAddress ?? "").trim();
11237
+ if (!Number.isFinite(chainId) || chainId <= 0 || !proxyContract || !wrappedAddress) continue;
11238
+ rows.push({
11239
+ chainId,
11240
+ networkName: String(entry.name ?? ""),
11241
+ publicName: String(entry.publicName ?? entry.name ?? ""),
11242
+ proxyContract,
11243
+ deploymentBlock: Number(entry.deploymentBlock ?? 0),
11244
+ wrappedAddress,
11245
+ wrappedSymbol: String(entry.baseToken?.wrappedSymbol ?? entry.baseToken?.symbol ?? ""),
11246
+ wrappedDecimals: Number(entry.baseToken?.decimals ?? 18),
11247
+ isTestnet: Boolean(entry.isTestnet)
11248
+ });
11249
+ }
11250
+ rows.sort((a, b) => a.chainId - b.chainId);
11251
+ return rows;
11252
+ }
11253
+ var cached = null;
11254
+ async function loadRailgunNetworks() {
11255
+ if (cached) return cached;
11256
+ const mod = await import('@railgun-community/shared-models');
11257
+ cached = selectRailgunNetworks(mod.NETWORK_CONFIG);
11258
+ return cached;
11259
+ }
11260
+ async function loadRailgunSupportedChainIds() {
11261
+ const rows = await loadRailgunNetworks();
11262
+ return new Set(rows.map((row) => row.chainId));
11263
+ }
11264
+ async function railgunNetworkByChainId(chainId) {
11265
+ const rows = await loadRailgunNetworks();
11266
+ return rows.find((row) => row.chainId === chainId);
11267
+ }
11268
+
11269
+ // src/protocols/evm/railgun/popular-assets.ts
11270
+ init_constants();
11271
+ var RAILGUN_POPULAR_ASSET_LIMIT = 5;
11272
+ var POPULAR_ASSET_CACHE_MS = 10 * 60 * 1e3;
11273
+ var RECENT_SHIELD_LIMIT = 200;
11274
+ var SHIELD_INDEX_BY_NETWORK_NAME = {
11275
+ Ethereum: "https://rail-squid.squids.live/squid-railgun-ethereum-v2/graphql",
11276
+ BNB_Chain: "https://rail-squid.squids.live/squid-railgun-bsc-v2/graphql",
11277
+ Polygon: "https://rail-squid.squids.live/squid-railgun-polygon-v2/graphql",
11278
+ Arbitrum: "https://rail-squid.squids.live/squid-railgun-arbitrum-v2/graphql"
11279
+ };
11280
+ var RECENT_SHIELDS_QUERY = `query RecentShields($limit: Int!) {
11281
+ shieldCommitments(orderBy: [blockNumber_DESC], limit: $limit) {
11282
+ preimage { token { tokenType tokenAddress } }
11283
+ }
11284
+ }`;
11285
+ var cache = /* @__PURE__ */ new Map();
11286
+ function rankPopularShieldTokens(rows, limit = RAILGUN_POPULAR_ASSET_LIMIT) {
11287
+ const counts = /* @__PURE__ */ new Map();
11288
+ for (const row of rows) {
11289
+ if (Number(row.tokenType) !== 0) continue;
11290
+ let address;
11291
+ try {
11292
+ address = getAddress(row.tokenAddress);
11293
+ } catch {
11294
+ continue;
11295
+ }
11296
+ if (address === zeroAddress) continue;
11297
+ const key = address.toLowerCase();
11298
+ counts.set(key, (counts.get(key) ?? 0) + 1);
11299
+ }
11300
+ return [...counts.entries()].sort((a, b) => b[1] - a[1] || (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)).slice(0, limit).map(([address]) => getAddress(address));
11301
+ }
11302
+ function shieldIndexEndpoint(networkName) {
11303
+ return SHIELD_INDEX_BY_NETWORK_NAME[networkName] ?? null;
11304
+ }
11305
+ function commitmentsFromShieldIndex(payload) {
11306
+ const rows = payload?.data?.shieldCommitments;
11307
+ if (!Array.isArray(rows)) return [];
11308
+ return rows.map((row) => {
11309
+ const token = row?.preimage?.token;
11310
+ const tokenType = token?.tokenType === "ERC20" || token?.tokenType === 0 ? 0 : Number(token?.tokenType ?? -1);
11311
+ return {
11312
+ tokenAddress: String(token?.tokenAddress ?? ""),
11313
+ tokenType: Number.isFinite(tokenType) ? tokenType : -1
11314
+ };
11315
+ });
11316
+ }
11317
+ var shieldLogReaderOverride = null;
11318
+ async function readShieldCommitments(args) {
11319
+ const endpoint = shieldIndexEndpoint(args.networkName);
11320
+ if (!endpoint) return [];
11321
+ const response = await fetch(endpoint, {
11322
+ method: "POST",
11323
+ headers: { "content-type": "application/json" },
11324
+ body: JSON.stringify({
11325
+ query: RECENT_SHIELDS_QUERY,
11326
+ variables: { limit: RECENT_SHIELD_LIMIT }
11327
+ })
11328
+ });
11329
+ if (!response.ok) throw new Error(`Railgun shield index returned ${response.status}`);
11330
+ return commitmentsFromShieldIndex(await response.json());
11331
+ }
11332
+ function applyContinuumToken(chainId, result) {
11333
+ const ctm = ctmTokenAddressOnEvmChain(chainId);
11334
+ if (!ctm) return result;
11335
+ const present = result.tokens.some((token) => token.address.toLowerCase() === ctm.toLowerCase());
11336
+ {
11337
+ if (!present) return result;
11338
+ return {
11339
+ ...result,
11340
+ tokens: result.tokens.filter((token) => token.address.toLowerCase() !== ctm.toLowerCase())
11341
+ };
11342
+ }
11343
+ }
11344
+ async function loadRailgunPopularAssets(args) {
11345
+ const network = await railgunNetworkByChainId(args.chainId);
11346
+ if (!network) {
11347
+ return { tokens: [], notes: "Railgun is not deployed on this chain." };
11348
+ }
11349
+ const cached3 = cache.get(args.chainId);
11350
+ if (cached3 && Date.now() - cached3.at < POPULAR_ASSET_CACHE_MS) {
11351
+ return applyContinuumToken(args.chainId, {
11352
+ tokens: cached3.tokens,
11353
+ nativeWrapped: cached3.nativeWrapped,
11354
+ notes: cached3.notes
11355
+ });
11356
+ }
11357
+ const rpcUrl = args.rpcUrl?.trim() ?? "";
11358
+ if (!shieldIndexEndpoint(network.networkName) && !shieldLogReaderOverride) {
11359
+ return applyContinuumToken(args.chainId, {
11360
+ tokens: [],
11361
+ nativeWrapped: network.wrappedAddress,
11362
+ notes: "This chain has no indexed Railgun shield feed."
11363
+ });
11364
+ }
11365
+ try {
11366
+ const commitments = await (shieldLogReaderOverride ?? readShieldCommitments)({
11367
+ rpcUrl,
11368
+ chainId: args.chainId,
11369
+ proxy: getAddress(network.proxyContract),
11370
+ deploymentBlock: network.deploymentBlock,
11371
+ networkName: network.networkName
11372
+ });
11373
+ const tokens = rankPopularShieldTokens(commitments).map((address) => ({ address }));
11374
+ const notes = tokens.length === 0 ? "No recent ERC-20 shields were returned for this chain." : `Top ${tokens.length} ERC-20s by recent indexed shield count.`;
11375
+ const entry = {
11376
+ at: Date.now(),
11377
+ tokens,
11378
+ nativeWrapped: network.wrappedAddress,
11379
+ notes
11380
+ };
11381
+ cache.set(args.chainId, entry);
11382
+ return applyContinuumToken(args.chainId, { tokens, nativeWrapped: network.wrappedAddress, notes });
11383
+ } catch {
11384
+ return applyContinuumToken(args.chainId, {
11385
+ tokens: [],
11386
+ nativeWrapped: network.wrappedAddress,
11387
+ notes: "The Railgun shield index could not be read."
11388
+ });
11389
+ }
11390
+ }
11391
+
11392
+ // src/protocols/evm/railgun/index.ts
11393
+ var RAILGUN_PROTOCOL_ID = "railgun";
11394
+ var railgunProtocolModule = {
11395
+ id: RAILGUN_PROTOCOL_ID,
11396
+ chainCategory: "evm",
11397
+ isChainSupported(ctx) {
11398
+ if (ctx.chainCategory !== "evm") return false;
11399
+ return loadRailgunSupportedChainIds().then((ids) => ids.has(Number(ctx.chainId)));
11400
+ },
11401
+ isTokenSupported(token) {
11402
+ return token.category === "evm" && (token.kind === "native" || token.kind === "erc20");
11403
+ },
11404
+ actions: [
11405
+ {
11406
+ id: "railgun.shield",
11407
+ protocolId: RAILGUN_PROTOCOL_ID,
11408
+ chainCategory: "evm",
11409
+ description: "Shield an ERC-20 into a Railgun 0zk address",
11410
+ commonParams: ["keyGen", "purposeText", "useCustomGas"],
11411
+ params: {
11412
+ tokenAddress: { type: "string", required: true, description: "ERC-20 to shield" },
11413
+ amountWei: { type: "string", required: true, description: "Amount in wei" },
11414
+ railgunAddress: { type: "string", required: true, description: "Recipient 0zk address" }
11415
+ }
11416
+ },
11417
+ {
11418
+ id: "railgun.private-transfer",
11419
+ protocolId: RAILGUN_PROTOCOL_ID,
11420
+ chainCategory: "evm",
11421
+ description: "Private transfer from the unlocked Railgun wallet",
11422
+ commonParams: ["purposeText"],
11423
+ params: {
11424
+ tokenAddress: { type: "string", required: true, description: "Shielded ERC-20" },
11425
+ amountWei: { type: "string", required: true, description: "Amount in wei" },
11426
+ recipientAddress: { type: "string", required: true, description: "Recipient 0zk address" }
11427
+ }
11428
+ },
11429
+ {
11430
+ id: "railgun.unshield",
11431
+ protocolId: RAILGUN_PROTOCOL_ID,
11432
+ chainCategory: "evm",
11433
+ description: "Unshield from the unlocked Railgun wallet to a public address",
11434
+ commonParams: ["purposeText"],
11435
+ params: {
11436
+ tokenAddress: { type: "string", required: true, description: "Shielded ERC-20" },
11437
+ amountWei: { type: "string", required: true, description: "Amount in wei" },
11438
+ recipientAddress: { type: "string", required: true, description: "Public recipient" }
11439
+ }
11440
+ }
11441
+ ]
11442
+ };
11443
+ registerProtocolModule(railgunProtocolModule);
10840
11444
  var USDE_ETHEREUM_MAINNET = "0x4c9edd5852cd905f086c759e8383e09bff1e68b3";
10841
11445
  var SUSDE_ETHEREUM_MAINNET = "0x9d39a5de30e57443bff2a8307a4256c8797a3497";
10842
11446
  var USDE_MOST_L2S = "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34";
@@ -11030,83 +11634,6 @@ var skyProtocolModule = {
11030
11634
  };
11031
11635
  registerProtocolModule(skyProtocolModule);
11032
11636
 
11033
- // src/protocols/evm/aave-v4/api.ts
11034
- init_defiProxy();
11035
- var AAVE_V4_GRAPHQL_URL = "https://api.v4.aave.com/graphql";
11036
- async function aaveV4Gql(query, variables) {
11037
- const body = { query, variables: variables ?? {} };
11038
- const j = await postJsonViaOptionalProxy({
11039
- directUrl: AAVE_V4_GRAPHQL_URL,
11040
- body,
11041
- proxyUrl: getAaveGraphqlProxyUrl(),
11042
- proxyEnvelope: body
11043
- });
11044
- if (j.errors?.length) {
11045
- const msg = j.errors.map((e) => e.message ?? "Unknown").join("; ");
11046
- throw new Error(msg);
11047
- }
11048
- if (j.data == null) {
11049
- throw new Error("Aave V4 API: empty response");
11050
- }
11051
- return j.data;
11052
- }
11053
- async function fetchAaveV4Chains() {
11054
- const d = await aaveV4Gql(`
11055
- query C($c: ChainsRequest!) { chains(request: $c) { chainId name nativeWrappedToken } }
11056
- `, { c: { query: { filter: "ALL" } } });
11057
- return d.chains ?? [];
11058
- }
11059
- async function loadAaveV4SupportedChainIdsFromV4Api() {
11060
- const rows = await fetchAaveV4Chains();
11061
- const s = /* @__PURE__ */ new Set();
11062
- for (const c of rows) s.add(c.chainId);
11063
- return s;
11064
- }
11065
- var RESERVES_ADDRESS_FRAGMENT = `
11066
- asset { underlying { address } }
11067
- `;
11068
- async function fetchAaveV4NativeWrappedToken(chainId) {
11069
- const all = await fetchAaveV4Chains();
11070
- const c = all.find((x) => x.chainId === chainId);
11071
- const t = (c?.nativeWrappedToken ?? "").trim();
11072
- if (t && isAddress(t)) return getAddress(t);
11073
- return null;
11074
- }
11075
- async function fetchAaveV4SupportedUnderlyingAddressSet(chainId) {
11076
- const d = await aaveV4Gql(
11077
- `
11078
- query A($r: ReservesRequest!) { reserves(request: $r) { ${RESERVES_ADDRESS_FRAGMENT} } }
11079
- `,
11080
- {
11081
- r: {
11082
- query: { chainIds: [chainId] },
11083
- filter: "ALL",
11084
- orderBy: { supplyApy: "DESC" }
11085
- }
11086
- }
11087
- );
11088
- const s = /* @__PURE__ */ new Set();
11089
- for (const r of d.reserves ?? []) {
11090
- const a = (r.asset?.underlying?.address ?? "").trim();
11091
- if (a && isAddress(a)) s.add(a.toLowerCase());
11092
- }
11093
- return s;
11094
- }
11095
- var aaveV4ChainTokenCache = /* @__PURE__ */ new Map();
11096
- function ensureAaveV4ChainTokenCache(chainId) {
11097
- const hit = aaveV4ChainTokenCache.get(chainId);
11098
- if (hit) return hit;
11099
- const p = (async () => {
11100
- const [nativeWrapped, supportedUnderlying] = await Promise.all([
11101
- fetchAaveV4NativeWrappedToken(chainId),
11102
- fetchAaveV4SupportedUnderlyingAddressSet(chainId)
11103
- ]);
11104
- return { supportedUnderlying, nativeWrapped };
11105
- })();
11106
- aaveV4ChainTokenCache.set(chainId, p);
11107
- return p;
11108
- }
11109
-
11110
11637
  // src/protocols/evm/aave-v4/index.ts
11111
11638
  var AAVE_V4_PROTOCOL_ID = "aave-v4";
11112
11639
  var aaveV4ProtocolModule = {
@@ -11306,19 +11833,19 @@ function ensureEulerV2ChainAssetCache(chainId) {
11306
11833
  }
11307
11834
 
11308
11835
  // src/protocols/evm/euler-v2/loadEulerV2SupportedChainIds.ts
11309
- var cached = null;
11836
+ var cached2 = null;
11310
11837
  async function loadEulerV2SupportedChainIds() {
11311
- if (cached) return cached;
11838
+ if (cached2) return cached2;
11312
11839
  try {
11313
11840
  const ids = await fetchEulerV3ActiveChainIds();
11314
11841
  if (ids.length) {
11315
- cached = new Set(ids);
11316
- return cached;
11842
+ cached2 = new Set(ids);
11843
+ return cached2;
11317
11844
  }
11318
11845
  } catch {
11319
11846
  }
11320
- cached = new Set(Object.keys(EULER_V2_GOLDSKY_SUBGRAPH_URL_BY_CHAIN_ID).map((k) => Number(k)));
11321
- return cached;
11847
+ cached2 = new Set(Object.keys(EULER_V2_GOLDSKY_SUBGRAPH_URL_BY_CHAIN_ID).map((k) => Number(k)));
11848
+ return cached2;
11322
11849
  }
11323
11850
 
11324
11851
  // src/protocols/evm/euler-v2/index.ts
@@ -12099,9 +12626,9 @@ async function ensureMorphoChainAssetCache(chainId) {
12099
12626
  }
12100
12627
  } catch {
12101
12628
  }
12102
- const cache = { modesByUnderlying: modes, nativeWrapped: null };
12103
- chainAssetCache.set(chainId, cache);
12104
- return cache;
12629
+ const cache2 = { modesByUnderlying: modes, nativeWrapped: null };
12630
+ chainAssetCache.set(chainId, cache2);
12631
+ return cache2;
12105
12632
  }
12106
12633
 
12107
12634
  // src/protocols/evm/morpho/index.ts
@@ -13599,8 +14126,8 @@ async function pendleFetchMarketsPage(args) {
13599
14126
  }
13600
14127
  async function pendleFetchMarketsForChain(chainId) {
13601
14128
  const now = Date.now();
13602
- const cached2 = marketsCacheByChain.get(chainId);
13603
- if (cached2 && now - cached2.at < PENDLE_ICON_CACHE_MS) return cached2.rows;
14129
+ const cached3 = marketsCacheByChain.get(chainId);
14130
+ if (cached3 && now - cached3.at < PENDLE_ICON_CACHE_MS) return cached3.rows;
13604
14131
  const rows = [];
13605
14132
  for (let page = 0; page < PENDLE_LISTING_MAX_PAGES; page++) {
13606
14133
  const batch = await pendleFetchMarketsPage({
@@ -14139,6 +14666,7 @@ var skillsDir = join(dirname(fileURLToPath(import.meta.url)), "skills");
14139
14666
  var SKILL_PROTOCOL_IDS = [
14140
14667
  "aave-v4",
14141
14668
  "lido",
14669
+ "railgun",
14142
14670
  "uniswap-v4",
14143
14671
  "curve-dao",
14144
14672
  "ethena",
@@ -14206,6 +14734,7 @@ function getProtocolDiscoverySummary(protocolId) {
14206
14734
  }))
14207
14735
  };
14208
14736
  }
14737
+ init_coinbaseB20();
14209
14738
  init_support();
14210
14739
  init_support2();
14211
14740
  init_addresses();
@@ -14214,7 +14743,8 @@ init_constants();
14214
14743
  function advisor(protocolId, tokenFilter, impl) {
14215
14744
  return { protocolId, tokenFilter, ...impl };
14216
14745
  }
14217
- function aerodromeAdvisorPriorityTokens() {
14746
+ async function aerodromeAdvisorPriorityTokens() {
14747
+ const stocks = await ensureCoinbaseB20StockCatalog().catch(() => []);
14218
14748
  return [
14219
14749
  {
14220
14750
  address: "0x0000000000000000000000000000000000000000",
@@ -14240,11 +14770,11 @@ function aerodromeAdvisorPriorityTokens() {
14240
14770
  decimals: 18,
14241
14771
  roles: ["swappable"]
14242
14772
  },
14243
- ...COINBASE_B20_STOCK_TOKENS.map((t) => ({
14773
+ ...stocks.map((t) => ({
14244
14774
  address: t.address,
14245
14775
  symbol: t.symbol,
14246
14776
  name: t.name,
14247
- decimals: COINBASE_B20_STOCK_DECIMALS,
14777
+ decimals: t.decimals || COINBASE_B20_STOCK_DECIMALS,
14248
14778
  roles: ["swappable", "listed", "coinbase_b20"]
14249
14779
  }))
14250
14780
  ];
@@ -14256,36 +14786,44 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14256
14786
  return [...set].sort((a, b) => a - b);
14257
14787
  },
14258
14788
  async supportedTokens(chainId) {
14259
- const cache = await ensureAaveV4ChainTokenCache(chainId);
14260
- const tokens = [...cache.supportedUnderlying].map((address) => ({
14261
- address,
14262
- roles: ["underlying"]
14263
- }));
14264
- if (cache.nativeWrapped) {
14789
+ const cache2 = await ensureAaveV4ChainTokenCache(chainId);
14790
+ await ensureCoinbaseB20StockCatalog().catch(() => []);
14791
+ const tokens = [...cache2.supportedUnderlying].map((address) => {
14792
+ const known = lookupCoinbaseB20StockToken(address);
14793
+ if (!known) return { address, roles: ["underlying"] };
14794
+ return {
14795
+ address,
14796
+ symbol: known.symbol,
14797
+ name: "name" in known ? known.name : void 0,
14798
+ decimals: COINBASE_B20_STOCK_DECIMALS,
14799
+ roles: ["underlying", "coinbase_b20", "collateral"]
14800
+ };
14801
+ });
14802
+ if (cache2.nativeWrapped) {
14265
14803
  tokens.unshift({
14266
- address: cache.nativeWrapped,
14804
+ address: cache2.nativeWrapped,
14267
14805
  symbol: "WETH",
14268
14806
  roles: ["native_wrapped"]
14269
14807
  });
14270
14808
  }
14271
14809
  return {
14272
14810
  tokens,
14273
- nativeWrapped: cache.nativeWrapped ?? void 0,
14274
- notes: "Native ETH deposits use wrapped native token address from Aave v4 API."
14811
+ nativeWrapped: cache2.nativeWrapped ?? void 0,
14812
+ notes: "Native ETH deposits use wrapped native token address from Aave v4 API. Base chainId 8453 Coinbase Stocks hub is marketId bstocks. Listed equities come from the Aave v4 API; tickers resolve from the live Coinbase catalog. Equities are collateral-only; USDC is the borrow asset."
14275
14813
  };
14276
14814
  },
14277
14815
  async isTokenSupported(chainId, address) {
14278
- const cache = await ensureAaveV4ChainTokenCache(chainId);
14816
+ const cache2 = await ensureAaveV4ChainTokenCache(chainId);
14279
14817
  let normalized;
14280
14818
  try {
14281
14819
  normalized = getAddress(address).toLowerCase();
14282
14820
  } catch {
14283
14821
  return false;
14284
14822
  }
14285
- if (cache.nativeWrapped && getAddress(cache.nativeWrapped).toLowerCase() === normalized) {
14823
+ if (cache2.nativeWrapped && getAddress(cache2.nativeWrapped).toLowerCase() === normalized) {
14286
14824
  return true;
14287
14825
  }
14288
- return cache.supportedUnderlying.has(normalized);
14826
+ return cache2.supportedUnderlying.has(normalized);
14289
14827
  }
14290
14828
  }),
14291
14829
  "uniswap-v4": advisor("uniswap-v4", "any_erc20_on_chain", {
@@ -14418,8 +14956,8 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14418
14956
  return [...set].sort((a, b) => a - b);
14419
14957
  },
14420
14958
  async supportedTokens(chainId) {
14421
- const cache = await ensureMorphoChainAssetCache(chainId);
14422
- const tokens = [...cache.modesByUnderlying.entries()].map(([address, modes]) => ({
14959
+ const cache2 = await ensureMorphoChainAssetCache(chainId);
14960
+ const tokens = [...cache2.modesByUnderlying.entries()].map(([address, modes]) => ({
14423
14961
  address,
14424
14962
  roles: [
14425
14963
  ...modes.earn ? ["vault_underlying"] : [],
@@ -14433,14 +14971,14 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14433
14971
  };
14434
14972
  },
14435
14973
  async isTokenSupported(chainId, address) {
14436
- const cache = await ensureMorphoChainAssetCache(chainId);
14974
+ const cache2 = await ensureMorphoChainAssetCache(chainId);
14437
14975
  let normalized;
14438
14976
  try {
14439
14977
  normalized = getAddress(address).toLowerCase();
14440
14978
  } catch {
14441
14979
  return false;
14442
14980
  }
14443
- return cache.modesByUnderlying.has(normalized);
14981
+ return cache2.modesByUnderlying.has(normalized);
14444
14982
  }
14445
14983
  }),
14446
14984
  "euler-v2": advisor("euler-v2", "subgraph_vaults", {
@@ -14449,8 +14987,8 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14449
14987
  return [...set].sort((a, b) => a - b);
14450
14988
  },
14451
14989
  async supportedTokens(chainId) {
14452
- const cache = await ensureEulerV2ChainAssetCache(chainId);
14453
- const tokens = [...cache.modesByUnderlying.entries()].map(([address, modes]) => ({
14990
+ const cache2 = await ensureEulerV2ChainAssetCache(chainId);
14991
+ const tokens = [...cache2.modesByUnderlying.entries()].map(([address, modes]) => ({
14454
14992
  address,
14455
14993
  roles: [
14456
14994
  ...modes.lend ? ["vault_underlying"] : [],
@@ -14460,19 +14998,19 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14460
14998
  }));
14461
14999
  return {
14462
15000
  tokens,
14463
- nativeWrapped: cache.nativeWrapped ?? void 0,
15001
+ nativeWrapped: cache2.nativeWrapped ?? void 0,
14464
15002
  notes: "Euler EVK vault underlyings and Earn vault assets from the Euler V3 API. Use address as underlyingAddress for ctm_euler_v2_fetch_lend_vaults."
14465
15003
  };
14466
15004
  },
14467
15005
  async isTokenSupported(chainId, address) {
14468
- const cache = await ensureEulerV2ChainAssetCache(chainId);
15006
+ const cache2 = await ensureEulerV2ChainAssetCache(chainId);
14469
15007
  let normalized;
14470
15008
  try {
14471
15009
  normalized = getAddress(address).toLowerCase();
14472
15010
  } catch {
14473
15011
  return false;
14474
15012
  }
14475
- return cache.modesByUnderlying.has(normalized);
15013
+ return cache2.modesByUnderlying.has(normalized);
14476
15014
  }
14477
15015
  }),
14478
15016
  [MAPLE_PROTOCOL_ID]: advisor(MAPLE_PROTOCOL_ID, "fixed_addresses", {
@@ -14557,9 +15095,9 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14557
15095
  return { tokens: [], notes: "Aerodrome is Base-only (chainId 8453)." };
14558
15096
  }
14559
15097
  return {
14560
- tokens: aerodromeAdvisorPriorityTokens(),
15098
+ tokens: await aerodromeAdvisorPriorityTokens(),
14561
15099
  nativeWrapped: AERODROME_WETH_BASE,
14562
- notes: "Slim directory: ETH, WETH, USDC, AERO, and Coinbase B20 stocks (AAPLc, \u2026). For a price call ctm_aerodrome_quote with tickers. To see pools for one token call ctm_aerodrome_discover_pools. Do not dump LpSugar."
15100
+ notes: "ETH, WETH, USDC, AERO, plus the live Coinbase B20 catalog. For a price call ctm_aerodrome_quote with a ticker. To see pools for one token call ctm_aerodrome_discover_pools. Do not dump LpSugar."
14563
15101
  };
14564
15102
  }
14565
15103
  }),
@@ -14622,7 +15160,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14622
15160
  return listCompoundV3SupportedChainIds();
14623
15161
  },
14624
15162
  async supportedTokens(chainId, ctx) {
14625
- const cache = await ensureCompoundV3ChainAssetCache({ chainId, rpcUrl: ctx?.rpcUrl });
15163
+ const cache2 = await ensureCompoundV3ChainAssetCache({ chainId, rpcUrl: ctx?.rpcUrl });
14626
15164
  const nativeWrapped = compoundV3WrappedNative(chainId);
14627
15165
  const tokens = [];
14628
15166
  if (nativeWrapped) {
@@ -14638,7 +15176,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14638
15176
  roles: ["native_wrapped"]
14639
15177
  });
14640
15178
  }
14641
- for (const [address, modes] of cache) {
15179
+ for (const [address, modes] of cache2) {
14642
15180
  if (nativeWrapped && address === nativeWrapped.toLowerCase()) continue;
14643
15181
  tokens.push({
14644
15182
  address,
@@ -14652,7 +15190,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14652
15190
  };
14653
15191
  },
14654
15192
  async isTokenSupported(chainId, address, ctx) {
14655
- const cache = await ensureCompoundV3ChainAssetCache({ chainId, rpcUrl: ctx?.rpcUrl });
15193
+ const cache2 = await ensureCompoundV3ChainAssetCache({ chainId, rpcUrl: ctx?.rpcUrl });
14656
15194
  let normalized;
14657
15195
  try {
14658
15196
  normalized = getAddress(address).toLowerCase();
@@ -14662,7 +15200,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14662
15200
  if (normalized === "0x0000000000000000000000000000000000000000") return true;
14663
15201
  const wrapped = compoundV3WrappedNative(chainId);
14664
15202
  if (wrapped && wrapped.toLowerCase() === normalized) return true;
14665
- return cache.has(normalized);
15203
+ return cache2.has(normalized);
14666
15204
  }
14667
15205
  }),
14668
15206
  [PENDLE_PROTOCOL_ID]: advisor(PENDLE_PROTOCOL_ID, "api_underlyings", {
@@ -14790,6 +15328,32 @@ var PROTOCOL_SUPPORT_ADVISORS = {
14790
15328
  return false;
14791
15329
  }
14792
15330
  }
15331
+ }),
15332
+ railgun: advisor("railgun", "api_underlyings", {
15333
+ async supportedChainIds() {
15334
+ return [...await loadRailgunSupportedChainIds()];
15335
+ },
15336
+ async supportedTokens(chainId, ctx) {
15337
+ const result = await loadRailgunPopularAssets({ chainId, rpcUrl: ctx?.rpcUrl });
15338
+ return {
15339
+ tokens: result.tokens.map((token) => ({ address: token.address, roles: ["shield"] })),
15340
+ nativeWrapped: result.nativeWrapped,
15341
+ notes: result.notes
15342
+ };
15343
+ },
15344
+ async isTokenSupported(chainId, address, ctx) {
15345
+ const result = await loadRailgunPopularAssets({ chainId, rpcUrl: ctx?.rpcUrl });
15346
+ const listed = new Set(result.tokens.map((token) => token.address.toLowerCase()));
15347
+ try {
15348
+ const normalized = getAddress(address);
15349
+ if (normalized === zeroAddress) {
15350
+ return Boolean(result.nativeWrapped && listed.has(result.nativeWrapped.toLowerCase()));
15351
+ }
15352
+ return listed.has(normalized.toLowerCase());
15353
+ } catch {
15354
+ return false;
15355
+ }
15356
+ }
14793
15357
  })
14794
15358
  };
14795
15359
  function getProtocolSupportAdvisor(protocolId) {
@@ -14811,6 +15375,7 @@ function getAgentCatalog() {
14811
15375
  uniswapV4: uniswapV4ProtocolModule,
14812
15376
  curveDao: curveDaoProtocolModule,
14813
15377
  lido: lidoProtocolModule,
15378
+ railgun: railgunProtocolModule,
14814
15379
  ethena: ethenaProtocolModule,
14815
15380
  maple: mapleProtocolModule,
14816
15381
  sky: skyProtocolModule,
@@ -14834,6 +15399,6 @@ function getAgentCatalog() {
14834
15399
  };
14835
15400
  }
14836
15401
 
14837
- 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, agentEvmChainIdSchema, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4FetchMarketInputSchema, mcpAaveV4FetchMarketOutputSchema, mcpAaveV4FetchMarketsInputSchema, mcpAaveV4FetchMarketsOutputSchema, mcpAaveV4MerklClaimInputSchema, mcpAaveV4RepayInputSchema, mcpAaveV4WithdrawInputSchema, mcpAerodromeBuildAddLiquidityMultisignInputSchema, mcpAerodromeBuildClBurnMultisignInputSchema, mcpAerodromeBuildClCollectFeesMultisignInputSchema, mcpAerodromeBuildClDecreaseMultisignInputSchema, mcpAerodromeBuildClIncreaseMultisignInputSchema, mcpAerodromeBuildClMintMultisignInputSchema, mcpAerodromeBuildClaimEmissionsMultisignInputSchema, mcpAerodromeBuildClaimFeesMultisignInputSchema, mcpAerodromeBuildGaugeStakeMultisignInputSchema, mcpAerodromeBuildGaugeUnstakeMultisignInputSchema, mcpAerodromeBuildRemoveLiquidityMultisignInputSchema, mcpAerodromeBuildSwapMultisignInputSchema, mcpAerodromeDiscoverPoolsInputSchema, mcpAerodromeDiscoverPoolsOutputSchema, mcpAerodromeFetchLpYieldsInputSchema, mcpAerodromeFetchLpYieldsOutputSchema, mcpAerodromeFetchPoolsInputSchema, mcpAerodromeFetchPoolsOutputSchema, mcpAerodromeFetchPositionsInputSchema, mcpAerodromeFetchPositionsOutputSchema, mcpAerodromeFetchStockLpYieldsInputSchema, mcpAerodromeFetchStockLpYieldsOutputSchema, mcpAerodromeQuoteAddLiquidityInputSchema, mcpAerodromeQuoteAddLiquidityOutputSchema, mcpAerodromeQuoteClDepositInputSchema, mcpAerodromeQuoteClDepositOutputSchema, mcpAerodromeQuoteInputSchema, mcpAerodromeQuoteOutputSchema, mcpArcusBuildCancelOrderMultisignInputSchema, mcpArcusBuildCloseMultisignInputSchema, mcpArcusBuildCreateApiKeyMultisignInputSchema, mcpArcusBuildDepositMultisignInputSchema, mcpArcusBuildPlaceOrderMultisignInputSchema, mcpArcusBuildSetLeverageMultisignInputSchema, mcpArcusBuildWithdrawMultisignInputSchema, mcpArcusFetchAccountInputSchema, mcpArcusFetchAccountOutputSchema, mcpArcusFetchMarketSnapshotInputSchema, mcpArcusFetchMarketSnapshotOutputSchema, mcpArcusFetchMarketsInputSchema, mcpArcusFetchMarketsOutputSchema, mcpArcusFetchOhlcvInputSchema, mcpArcusFetchOhlcvOutputSchema, mcpArcusFetchOpenContextInputSchema, mcpArcusFetchOpenContextOutputSchema, mcpArcusFetchOpenOrdersInputSchema, mcpArcusFetchOpenOrdersOutputSchema, mcpArcusFetchPositionsInputSchema, mcpArcusFetchPositionsOutputSchema, mcpArcusSearchMarketsInputSchema, mcpArcusSearchMarketsOutputSchema, mcpArcusSpotBuildRfqMultisignInputSchema, mcpArcusSpotFetchBalancesInputSchema, mcpArcusSpotFetchBalancesOutputSchema, mcpArcusSpotFetchMarketsInputSchema, mcpArcusSpotFetchMarketsOutputSchema, mcpArcusSpotFetchOhlcvInputSchema, mcpArcusSpotFetchOhlcvOutputSchema, mcpCompoundV3BulkerInputSchema, mcpCompoundV3ClaimRewardsInputSchema, mcpCompoundV3FetchAccountInputSchema, mcpCompoundV3FetchAccountOutputSchema, mcpCompoundV3FetchMarketInputSchema, mcpCompoundV3FetchMarketOutputSchema, mcpCompoundV3FetchMarketsInputSchema, mcpCompoundV3FetchMarketsOutputSchema, mcpCompoundV3RepayInputSchema, mcpCompoundV3SupplyInputSchema, mcpCompoundV3WithdrawInputSchema, mcpContinuumDaoAttachInputSchema, mcpContinuumDaoCancelInputSchema, mcpContinuumDaoCastVoteBravoInputSchema, mcpContinuumDaoCastVoteDeltaInputSchema, mcpContinuumDaoComposeProposalActionInputSchema, mcpContinuumDaoComposeProposalActionOutputSchema, mcpContinuumDaoCreateLockInputSchema, mcpContinuumDaoDelegateInputSchema, mcpContinuumDaoExecuteInputSchema, mcpContinuumDaoExplainProposalInputSchema, mcpContinuumDaoExplainProposalOutputSchema, mcpContinuumDaoFetchDelegatesInputSchema, mcpContinuumDaoFetchDelegatesOutputSchema, mcpContinuumDaoFetchLiveProposalsInputSchema, mcpContinuumDaoFetchLiveProposalsOutputSchema, mcpContinuumDaoFetchProposalInputSchema, mcpContinuumDaoFetchProposalOutputSchema, mcpContinuumDaoFetchProposalStateInputSchema, mcpContinuumDaoFetchProposalStateOutputSchema, mcpContinuumDaoFetchProposalVotesInputSchema, mcpContinuumDaoFetchProposalVotesOutputSchema, mcpContinuumDaoFetchProposalsInputSchema, mcpContinuumDaoFetchProposalsOutputSchema, mcpContinuumDaoFetchVotingPowerInputSchema, mcpContinuumDaoFetchVotingPowerOutputSchema, mcpContinuumDaoForumCreateIdeaInputSchema, mcpContinuumDaoForumCreateIdeaOutputSchema, mcpContinuumDaoForumCreateTopicInputSchema, mcpContinuumDaoForumCreateTopicOutputSchema, mcpContinuumDaoForumDeleteInputSchema, mcpContinuumDaoForumDeleteOutputSchema, mcpContinuumDaoForumFetchPostInputSchema, mcpContinuumDaoForumFetchPostOutputSchema, mcpContinuumDaoForumFetchThreadInputSchema, mcpContinuumDaoForumFetchThreadOutputSchema, mcpContinuumDaoForumMarkReadInputSchema, mcpContinuumDaoForumMarkReadOutputSchema, mcpContinuumDaoForumMarkUnreadInputSchema, mcpContinuumDaoForumMarkUnreadOutputSchema, mcpContinuumDaoForumMeInputSchema, mcpContinuumDaoForumMeOutputSchema, mcpContinuumDaoForumReactInputSchema, mcpContinuumDaoForumReactOutputSchema, mcpContinuumDaoForumRecentInputSchema, mcpContinuumDaoForumRecentOutputSchema, mcpContinuumDaoForumReplyCountInputSchema, mcpContinuumDaoForumReplyCountOutputSchema, mcpContinuumDaoForumReplyInputSchema, mcpContinuumDaoForumReplyOutputSchema, mcpContinuumDaoForumResolveInputSchema, mcpContinuumDaoForumResolveOutputSchema, mcpContinuumDaoForumSearchInputSchema, mcpContinuumDaoForumSearchOutputSchema, mcpContinuumDaoForumSectionsInputSchema, mcpContinuumDaoForumSectionsOutputSchema, mcpContinuumDaoForumSignInEligibleInputSchema, mcpContinuumDaoForumSignInEligibleOutputSchema, mcpContinuumDaoForumSignInInputSchema, mcpContinuumDaoForumSignOutInputSchema, mcpContinuumDaoForumSignOutOutputSchema, mcpContinuumDaoForumUnreadInputSchema, mcpContinuumDaoForumUnreadOutputSchema, mcpContinuumDaoForumUserPostIdsInputSchema, mcpContinuumDaoForumUserPostIdsOutputSchema, mcpContinuumDaoIncreaseAmountInputSchema, mcpContinuumDaoIncreaseUnlockTimeInputSchema, mcpContinuumDaoLiquidateInputSchema, mcpContinuumDaoMergeInputSchema, mcpContinuumDaoMpaFlagInputSchema, mcpContinuumDaoMpaFlagOutputSchema, mcpContinuumDaoMpaListingInputSchema, mcpContinuumDaoMpaListingOutputSchema, mcpContinuumDaoMpaMailboxListInputSchema, mcpContinuumDaoMpaMailboxListOutputSchema, mcpContinuumDaoMpaMailboxOpenInputSchema, mcpContinuumDaoMpaMailboxOpenOutputSchema, mcpContinuumDaoMpaMailboxSendInputSchema, mcpContinuumDaoMpaMailboxSendOutputSchema, mcpContinuumDaoMpaRetractInputSchema, mcpContinuumDaoMpaRetractOutputSchema, mcpContinuumDaoProposalIdInputSchema, mcpContinuumDaoProposalVoteRowSchema, mcpContinuumDaoProposeBravoInputSchema, mcpContinuumDaoProposeDeltaInputSchema, mcpContinuumDaoRegisterProposalInputSchema, mcpContinuumDaoRegisterProposalOutputSchema, mcpContinuumDaoRequestDetachInputSchema, mcpContinuumDaoSimulateProposalInputSchema, mcpContinuumDaoSimulateProposalOutputSchema, mcpContinuumDaoSplitInputSchema, mcpContinuumDaoTechnocoreBindInputSchema, mcpContinuumDaoTechnocoreBindOutputSchema, mcpContinuumDaoTokenIdInputSchema, mcpContinuumDaoTransferInputSchema, mcpContinuumDaoUndelegateInputSchema, mcpContinuumDaoWithdrawInputSchema, mcpContinuumDaoWriteInput, mcpCurveDaoBuildAddLiquidityMultisignInputSchema, mcpCurveDaoBuildGaugeDepositMultisignInputSchema, mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoFetchImportantPoolsInputSchema, mcpCurveDaoFetchImportantPoolsOutputSchema, mcpCurveDaoFetchLpYieldsInputSchema, mcpCurveDaoFetchLpYieldsOutputSchema, mcpCurveDaoQuoteAddLiquidityInputSchema, mcpCurveDaoQuoteAddLiquidityOutputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpCurveDaoQuoteRemoveLiquidityInputSchema, mcpCurveDaoQuoteRemoveLiquidityOutputSchema, mcpDeriveCancelInputSchema, mcpDeriveDepositAddressTransferInputSchema, mcpDeriveDepositNewSubaccountInputSchema, mcpDeriveFetchCurrenciesInputSchema, mcpDeriveFetchCurrenciesOutputSchema, mcpDeriveFetchMarketSnapshotInputSchema, mcpDeriveFetchMarketSnapshotOutputSchema, mcpDeriveFetchOhlcvInputSchema, mcpDeriveFetchOhlcvOutputSchema, mcpDeriveFetchOpenOrdersInputSchema, mcpDeriveFetchOpenOrdersOutputSchema, mcpDeriveFetchOptionChainInputSchema, mcpDeriveFetchOptionChainOutputSchema, mcpDeriveFetchPendingDepositsInputSchema, mcpDeriveFetchPendingDepositsOutputSchema, mcpDeriveFetchPortfolioInputSchema, mcpDeriveFetchPortfolioOutputSchema, mcpDeriveFetchPositionsInputSchema, mcpDeriveFetchPositionsOutputSchema, mcpDeriveFetchRiskUniversesInputSchema, mcpDeriveFetchRiskUniversesOutputSchema, mcpDeriveFetchSubaccountsInputSchema, mcpDeriveFetchSubaccountsOutputSchema, mcpDeriveFetchTickersInputSchema, mcpDeriveFetchTickersOutputSchema, mcpDeriveHypeVaultDepositInputSchema, mcpDeriveOrderQuoteInputSchema, mcpDeriveOrderQuoteOutputSchema, mcpDerivePlaceOrderInputSchema, mcpDeriveRegisterDepositAddressInputSchema, mcpDeriveRegisterDepositAddressOutputSchema, mcpDeriveReplaceOrderInputSchema, mcpDeriveSearchInstrumentsInputSchema, mcpDeriveSearchInstrumentsOutputSchema, mcpDeriveSocketDepositInputSchema, mcpDeriveTransferSpotInputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaFetchSusdeApyInputSchema, mcpEthenaFetchSusdeApyOutputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2FetchEarnVaultsInputSchema, mcpEulerV2FetchEarnVaultsOutputSchema, mcpEulerV2FetchLendVaultsInputSchema, mcpEulerV2FetchLendVaultsOutputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2MerklClaimInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGetPredictionMarketInputSchema, mcpGetPredictionMarketOutputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchOrdersInputSchema, mcpGmxFetchOrdersOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema, mcpServerSubmitOutputSchema as mcpGmxMultisignOutputSchema, mcpGmxStakeGmxInputSchema, mcpGmxUnstakeGmxInputSchema, mcpHyperliquidBridgeDepositInputSchema, mcpHyperliquidBridgeWithdrawInputSchema, mcpHyperliquidCancelInputSchema, mcpHyperliquidCloseInputSchema, mcpHyperliquidDelegateInputSchema, mcpHyperliquidFetchDelegationsInputSchema, mcpHyperliquidFetchDelegationsOutputSchema, mcpHyperliquidFetchLendMarketsInputSchema, mcpHyperliquidFetchLendMarketsOutputSchema, mcpHyperliquidFetchLendPositionsInputSchema, mcpHyperliquidFetchLendPositionsOutputSchema, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOhlcvInputSchema, mcpHyperliquidFetchOhlcvOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchStockMarketsInputSchema, mcpHyperliquidFetchStockMarketsOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultApysInputSchema, mcpHyperliquidFetchVaultApysOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLendInputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidSearchMarketsInputSchema, mcpHyperliquidSearchMarketsOutputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidTrailingStopInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUpdateLeverageInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoFetchStethAprInputSchema, mcpLidoFetchStethAprOutputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpListMyPredictionMarketsInputSchema, mcpListMyPredictionMarketsOutputSchema, mcpMapleDepositInputSchema, mcpMapleFetchMarketInputSchema, mcpMapleFetchMarketOutputSchema, mcpMapleFetchMarketsInputSchema, mcpMapleFetchMarketsOutputSchema, mcpMapleRequestRedeemInputSchema, mcpMerklRewardsFetchInputSchema, mcpMerklRewardsFetchOutputSchema, mcpMorphoBlueBorrowInputSchema, mcpMorphoBlueCollateralDepositInputSchema, mcpMorphoBlueCollateralWithdrawInputSchema, mcpMorphoBlueRepayInputSchema, mcpMorphoBlueSupplyInputSchema, mcpMorphoBlueWithdrawInputSchema, mcpMorphoFetchBlueMarketsInputSchema, mcpMorphoFetchBlueMarketsOutputSchema, mcpMorphoFetchEarnVaultsInputSchema, mcpMorphoFetchEarnVaultsOutputSchema, mcpMorphoFetchMidnightBooksInputSchema, mcpMorphoFetchMidnightBooksOutputSchema, mcpMorphoFetchMidnightOffersInputSchema, mcpMorphoFetchMidnightOffersOutputSchema, mcpMorphoFetchMidnightPositionsInputSchema, mcpMorphoFetchMidnightPositionsOutputSchema, mcpMorphoFetchMidnightQuoteInputSchema, mcpMorphoFetchMidnightQuoteOutputSchema, mcpMorphoFetchPositionsInputSchema, mcpMorphoFetchPositionsOutputSchema, mcpMorphoFetchStockMarketsInputSchema, mcpMorphoFetchStockMarketsOutputSchema, mcpMorphoMerklClaimInputSchema, mcpMorphoMidnightBorrowInputSchema, mcpMorphoMidnightCancelLendOfferInputSchema, mcpMorphoMidnightLendInputSchema, mcpMorphoMidnightLendOfferInputSchema, mcpMorphoMidnightRepayInputSchema, mcpMorphoVaultDepositInputSchema, mcpMorphoVaultWithdrawInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpPendleBuildAddLiquidityMultisignInputSchema, mcpPendleBuildMintPyMultisignInputSchema, mcpPendleBuildMintSyMultisignInputSchema, mcpPendleBuildRedeemPyMultisignInputSchema, mcpPendleBuildRedeemRewardsMultisignInputSchema, mcpPendleBuildRedeemSyMultisignInputSchema, mcpPendleBuildRemoveLiquidityMultisignInputSchema, mcpPendleBuildSwapMultisignInputSchema, mcpPendleFetchMarketsInputSchema, mcpPendleFetchMarketsOutputSchema, mcpPendleFetchMerkleRewardsInputSchema, mcpPendleFetchMerkleRewardsOutputSchema, mcpPendleFetchPositionsInputSchema, mcpPendleFetchPositionsOutputSchema, mcpPendleFetchPricesInputSchema, mcpPendleFetchPricesOutputSchema, mcpPendleQuoteAddLiquidityInputSchema, mcpPendleQuoteMintPyInputSchema, mcpPendleQuoteMintSyInputSchema, mcpPendleQuoteOutputSchema, mcpPendleQuoteRedeemPyInputSchema, mcpPendleQuoteRedeemSyInputSchema, mcpPendleQuoteRemoveLiquidityInputSchema, mcpPendleQuoteSwapInputSchema, mcpPendleSearchAssetsInputSchema, mcpPendleSearchAssetsOutputSchema, mcpPredictionMarketRowSchema, mcpSearchPredictionMarketsInputSchema, mcpSearchPredictionMarketsOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyFetchSusdsRateInputSchema, mcpSkyFetchSusdsRateOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, mcpTrueoBurnInputSchema, mcpTrueoCancelOrderInputSchema, mcpTrueoCreateOrderInputSchema, mcpTrueoFetchCategoriesInputSchema, mcpTrueoFetchCategoriesOutputSchema, mcpTrueoFetchChanceSeriesInputSchema, mcpTrueoFetchChanceSeriesOutputSchema, mcpTrueoFetchMarketInputSchema, mcpTrueoFetchMarketOutputSchema, mcpTrueoFetchOrderbookInputSchema, mcpTrueoFetchOrderbookOutputSchema, mcpTrueoFetchTrendingInputSchema, mcpTrueoFetchTrendingOutputSchema, mcpTrueoMarketRowSchema, mcpTrueoMintInputSchema, mcpTrueoRedeemInputSchema, mcpTrueoSearchMarketsInputSchema, mcpTrueoSearchMarketsOutputSchema, mcpTrueoSwapInputSchema, mcpTrueoUnwrapTydInputSchema, mcpTrueoWrapTydInputSchema, mcpUniswapV4BuildAllowlistFinalizeMultisignInputSchema, mcpUniswapV4BuildCollectFeesMultisignInputSchema, mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildLimitOrderMultisignInputSchema, mcpUniswapV4BuildMintLiquidityMultisignInputSchema, mcpUniswapV4BuildSwapMultisignInputSchema, mcpUniswapV4CheckPermissionsInputSchema, mcpUniswapV4CheckPermissionsOutputSchema, mcpUniswapV4CreateSwapInputSchema, mcpUniswapV4CreateSwapOutputSchema, mcpUniswapV4FetchLimitOrdersInputSchema, mcpUniswapV4FetchLimitOrdersOutputSchema, mcpUniswapV4FetchOhlcvInputSchema, mcpUniswapV4FetchOhlcvOutputSchema, mcpUniswapV4KycApplyLinkInputSchema, mcpUniswapV4KycApplyLinkOutputSchema, mcpUniswapV4LimitOrderQuoteInputSchema, mcpUniswapV4LimitOrderQuoteOutputSchema, mcpUniswapV4LpClaimInputSchema, mcpUniswapV4LpClaimOutputSchema, mcpUniswapV4LpCreatePositionInputSchema, mcpUniswapV4LpCreatePositionOutputSchema, mcpUniswapV4LpDecreaseInputSchema, mcpUniswapV4LpDecreaseOutputSchema, mcpUniswapV4LpIncreaseInputSchema, mcpUniswapV4LpIncreaseOutputSchema, mcpUniswapV4LpListPoolsInputSchema, mcpUniswapV4LpListPoolsOutputSchema, mcpUniswapV4LpListPositionsInputSchema, mcpUniswapV4LpListPositionsOutputSchema, mcpUniswapV4QuoteInputSchema, mcpUniswapV4QuoteOutputSchema, mcpUniswapV4RegisterPositionFromMintTxInputSchema, mcpUniswapV4RegisterPositionFromMintTxOutputSchema, mcpUniswapV4RegisterPositionNftInputSchema, mcpUniswapV4RegisterPositionNftOutputSchema, mcpVeniceBurnDiemInputSchema, mcpVeniceCompleteUnstakeDiemInputSchema, mcpVeniceCompleteUnstakeSvvvInputSchema, mcpVeniceInitiateUnstakeDiemInputSchema, mcpVeniceInitiateUnstakeSvvvInputSchema, mcpVeniceListModelsInputSchema, mcpVeniceListModelsOutputSchema, mcpVeniceMintDiemInputSchema, mcpVeniceReadMintDiemPreviewInputSchema, mcpVeniceReadMintDiemPreviewOutputSchema, mcpVeniceReadStakingStateInputSchema, mcpVeniceReadStakingStateOutputSchema, mcpVeniceStakeDiemInputSchema, mcpVeniceStakeVvvInputSchema, multisignOutputSchema, parseAgentBoolean, parseAgentEvmChainId, parseMcpToolInput, parseMcpToolOutput, parseMultisignBuilderOutput, uniswapQuoteTradeTypeSchema, zodSchemaToMcpJsonSchema };
15402
+ 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, agentEvmChainIdSchema, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4FetchMarketInputSchema, mcpAaveV4FetchMarketOutputSchema, mcpAaveV4FetchMarketsInputSchema, mcpAaveV4FetchMarketsOutputSchema, mcpAaveV4FetchStockMarketsInputSchema, mcpAaveV4FetchStockMarketsOutputSchema, mcpAaveV4MerklClaimInputSchema, mcpAaveV4RepayInputSchema, mcpAaveV4WithdrawInputSchema, mcpAerodromeBuildAddLiquidityMultisignInputSchema, mcpAerodromeBuildClBurnMultisignInputSchema, mcpAerodromeBuildClCollectFeesMultisignInputSchema, mcpAerodromeBuildClDecreaseMultisignInputSchema, mcpAerodromeBuildClIncreaseMultisignInputSchema, mcpAerodromeBuildClMintMultisignInputSchema, mcpAerodromeBuildClaimEmissionsMultisignInputSchema, mcpAerodromeBuildClaimFeesMultisignInputSchema, mcpAerodromeBuildGaugeStakeMultisignInputSchema, mcpAerodromeBuildGaugeUnstakeMultisignInputSchema, mcpAerodromeBuildRemoveLiquidityMultisignInputSchema, mcpAerodromeBuildSwapMultisignInputSchema, mcpAerodromeDiscoverPoolsInputSchema, mcpAerodromeDiscoverPoolsOutputSchema, mcpAerodromeFetchLpYieldsInputSchema, mcpAerodromeFetchLpYieldsOutputSchema, mcpAerodromeFetchPoolsInputSchema, mcpAerodromeFetchPoolsOutputSchema, mcpAerodromeFetchPositionsInputSchema, mcpAerodromeFetchPositionsOutputSchema, mcpAerodromeFetchStockLpYieldsInputSchema, mcpAerodromeFetchStockLpYieldsOutputSchema, mcpAerodromeQuoteAddLiquidityInputSchema, mcpAerodromeQuoteAddLiquidityOutputSchema, mcpAerodromeQuoteClDepositInputSchema, mcpAerodromeQuoteClDepositOutputSchema, mcpAerodromeQuoteInputSchema, mcpAerodromeQuoteOutputSchema, mcpArcusBuildCancelOrderMultisignInputSchema, mcpArcusBuildCloseMultisignInputSchema, mcpArcusBuildCreateApiKeyMultisignInputSchema, mcpArcusBuildDepositMultisignInputSchema, mcpArcusBuildPlaceOrderMultisignInputSchema, mcpArcusBuildSetLeverageMultisignInputSchema, mcpArcusBuildWithdrawMultisignInputSchema, mcpArcusFetchAccountInputSchema, mcpArcusFetchAccountOutputSchema, mcpArcusFetchMarketSnapshotInputSchema, mcpArcusFetchMarketSnapshotOutputSchema, mcpArcusFetchMarketsInputSchema, mcpArcusFetchMarketsOutputSchema, mcpArcusFetchOhlcvInputSchema, mcpArcusFetchOhlcvOutputSchema, mcpArcusFetchOpenContextInputSchema, mcpArcusFetchOpenContextOutputSchema, mcpArcusFetchOpenOrdersInputSchema, mcpArcusFetchOpenOrdersOutputSchema, mcpArcusFetchPositionsInputSchema, mcpArcusFetchPositionsOutputSchema, mcpArcusSearchMarketsInputSchema, mcpArcusSearchMarketsOutputSchema, mcpArcusSpotBuildRfqMultisignInputSchema, mcpArcusSpotFetchBalancesInputSchema, mcpArcusSpotFetchBalancesOutputSchema, mcpArcusSpotFetchMarketsInputSchema, mcpArcusSpotFetchMarketsOutputSchema, mcpArcusSpotFetchOhlcvInputSchema, mcpArcusSpotFetchOhlcvOutputSchema, mcpCompoundV3BulkerInputSchema, mcpCompoundV3ClaimRewardsInputSchema, mcpCompoundV3FetchAccountInputSchema, mcpCompoundV3FetchAccountOutputSchema, mcpCompoundV3FetchMarketInputSchema, mcpCompoundV3FetchMarketOutputSchema, mcpCompoundV3FetchMarketsInputSchema, mcpCompoundV3FetchMarketsOutputSchema, mcpCompoundV3RepayInputSchema, mcpCompoundV3SupplyInputSchema, mcpCompoundV3WithdrawInputSchema, mcpContinuumDaoAttachInputSchema, mcpContinuumDaoCancelInputSchema, mcpContinuumDaoCastVoteBravoInputSchema, mcpContinuumDaoCastVoteDeltaInputSchema, mcpContinuumDaoComposeProposalActionInputSchema, mcpContinuumDaoComposeProposalActionOutputSchema, mcpContinuumDaoCreateLockInputSchema, mcpContinuumDaoDelegateInputSchema, mcpContinuumDaoExecuteInputSchema, mcpContinuumDaoExplainProposalInputSchema, mcpContinuumDaoExplainProposalOutputSchema, mcpContinuumDaoFetchDelegatesInputSchema, mcpContinuumDaoFetchDelegatesOutputSchema, mcpContinuumDaoFetchLiveProposalsInputSchema, mcpContinuumDaoFetchLiveProposalsOutputSchema, mcpContinuumDaoFetchProposalInputSchema, mcpContinuumDaoFetchProposalOutputSchema, mcpContinuumDaoFetchProposalStateInputSchema, mcpContinuumDaoFetchProposalStateOutputSchema, mcpContinuumDaoFetchProposalVotesInputSchema, mcpContinuumDaoFetchProposalVotesOutputSchema, mcpContinuumDaoFetchProposalsInputSchema, mcpContinuumDaoFetchProposalsOutputSchema, mcpContinuumDaoFetchVotingPowerInputSchema, mcpContinuumDaoFetchVotingPowerOutputSchema, mcpContinuumDaoForumCreateIdeaInputSchema, mcpContinuumDaoForumCreateIdeaOutputSchema, mcpContinuumDaoForumCreateTopicInputSchema, mcpContinuumDaoForumCreateTopicOutputSchema, mcpContinuumDaoForumDeleteInputSchema, mcpContinuumDaoForumDeleteOutputSchema, mcpContinuumDaoForumFetchPostInputSchema, mcpContinuumDaoForumFetchPostOutputSchema, mcpContinuumDaoForumFetchThreadInputSchema, mcpContinuumDaoForumFetchThreadOutputSchema, mcpContinuumDaoForumMarkReadInputSchema, mcpContinuumDaoForumMarkReadOutputSchema, mcpContinuumDaoForumMarkUnreadInputSchema, mcpContinuumDaoForumMarkUnreadOutputSchema, mcpContinuumDaoForumMeInputSchema, mcpContinuumDaoForumMeOutputSchema, mcpContinuumDaoForumReactInputSchema, mcpContinuumDaoForumReactOutputSchema, mcpContinuumDaoForumRecentInputSchema, mcpContinuumDaoForumRecentOutputSchema, mcpContinuumDaoForumReplyCountInputSchema, mcpContinuumDaoForumReplyCountOutputSchema, mcpContinuumDaoForumReplyInputSchema, mcpContinuumDaoForumReplyOutputSchema, mcpContinuumDaoForumResolveInputSchema, mcpContinuumDaoForumResolveOutputSchema, mcpContinuumDaoForumSearchInputSchema, mcpContinuumDaoForumSearchOutputSchema, mcpContinuumDaoForumSectionsInputSchema, mcpContinuumDaoForumSectionsOutputSchema, mcpContinuumDaoForumSignInEligibleInputSchema, mcpContinuumDaoForumSignInEligibleOutputSchema, mcpContinuumDaoForumSignInInputSchema, mcpContinuumDaoForumSignOutInputSchema, mcpContinuumDaoForumSignOutOutputSchema, mcpContinuumDaoForumUnreadInputSchema, mcpContinuumDaoForumUnreadOutputSchema, mcpContinuumDaoForumUserPostIdsInputSchema, mcpContinuumDaoForumUserPostIdsOutputSchema, mcpContinuumDaoIncreaseAmountInputSchema, mcpContinuumDaoIncreaseUnlockTimeInputSchema, mcpContinuumDaoLiquidateInputSchema, mcpContinuumDaoMergeInputSchema, mcpContinuumDaoMpaFlagInputSchema, mcpContinuumDaoMpaFlagOutputSchema, mcpContinuumDaoMpaListingInputSchema, mcpContinuumDaoMpaListingOutputSchema, mcpContinuumDaoMpaMailboxListInputSchema, mcpContinuumDaoMpaMailboxListOutputSchema, mcpContinuumDaoMpaMailboxOpenInputSchema, mcpContinuumDaoMpaMailboxOpenOutputSchema, mcpContinuumDaoMpaMailboxSendInputSchema, mcpContinuumDaoMpaMailboxSendOutputSchema, mcpContinuumDaoMpaRetractInputSchema, mcpContinuumDaoMpaRetractOutputSchema, mcpContinuumDaoProposalIdInputSchema, mcpContinuumDaoProposalVoteRowSchema, mcpContinuumDaoProposeBravoInputSchema, mcpContinuumDaoProposeDeltaInputSchema, mcpContinuumDaoRegisterProposalInputSchema, mcpContinuumDaoRegisterProposalOutputSchema, mcpContinuumDaoRequestDetachInputSchema, mcpContinuumDaoSimulateProposalInputSchema, mcpContinuumDaoSimulateProposalOutputSchema, mcpContinuumDaoSplitInputSchema, mcpContinuumDaoTechnocoreBindInputSchema, mcpContinuumDaoTechnocoreBindOutputSchema, mcpContinuumDaoTokenIdInputSchema, mcpContinuumDaoTransferInputSchema, mcpContinuumDaoUndelegateInputSchema, mcpContinuumDaoWithdrawInputSchema, mcpContinuumDaoWriteInput, mcpCurveDaoBuildAddLiquidityMultisignInputSchema, mcpCurveDaoBuildGaugeDepositMultisignInputSchema, mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoFetchImportantPoolsInputSchema, mcpCurveDaoFetchImportantPoolsOutputSchema, mcpCurveDaoFetchLpYieldsInputSchema, mcpCurveDaoFetchLpYieldsOutputSchema, mcpCurveDaoQuoteAddLiquidityInputSchema, mcpCurveDaoQuoteAddLiquidityOutputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpCurveDaoQuoteRemoveLiquidityInputSchema, mcpCurveDaoQuoteRemoveLiquidityOutputSchema, mcpDeriveCancelInputSchema, mcpDeriveDepositAddressTransferInputSchema, mcpDeriveDepositNewSubaccountInputSchema, mcpDeriveFetchCurrenciesInputSchema, mcpDeriveFetchCurrenciesOutputSchema, mcpDeriveFetchMarketSnapshotInputSchema, mcpDeriveFetchMarketSnapshotOutputSchema, mcpDeriveFetchOhlcvInputSchema, mcpDeriveFetchOhlcvOutputSchema, mcpDeriveFetchOpenOrdersInputSchema, mcpDeriveFetchOpenOrdersOutputSchema, mcpDeriveFetchOptionChainInputSchema, mcpDeriveFetchOptionChainOutputSchema, mcpDeriveFetchPendingDepositsInputSchema, mcpDeriveFetchPendingDepositsOutputSchema, mcpDeriveFetchPortfolioInputSchema, mcpDeriveFetchPortfolioOutputSchema, mcpDeriveFetchPositionsInputSchema, mcpDeriveFetchPositionsOutputSchema, mcpDeriveFetchRiskUniversesInputSchema, mcpDeriveFetchRiskUniversesOutputSchema, mcpDeriveFetchSubaccountsInputSchema, mcpDeriveFetchSubaccountsOutputSchema, mcpDeriveFetchTickersInputSchema, mcpDeriveFetchTickersOutputSchema, mcpDeriveHypeVaultDepositInputSchema, mcpDeriveOrderQuoteInputSchema, mcpDeriveOrderQuoteOutputSchema, mcpDerivePlaceOrderInputSchema, mcpDeriveRegisterDepositAddressInputSchema, mcpDeriveRegisterDepositAddressOutputSchema, mcpDeriveReplaceOrderInputSchema, mcpDeriveSearchInstrumentsInputSchema, mcpDeriveSearchInstrumentsOutputSchema, mcpDeriveSocketDepositInputSchema, mcpDeriveTransferSpotInputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaFetchSusdeApyInputSchema, mcpEthenaFetchSusdeApyOutputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2FetchEarnVaultsInputSchema, mcpEulerV2FetchEarnVaultsOutputSchema, mcpEulerV2FetchLendVaultsInputSchema, mcpEulerV2FetchLendVaultsOutputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2MerklClaimInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGetPredictionMarketInputSchema, mcpGetPredictionMarketOutputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchOrdersInputSchema, mcpGmxFetchOrdersOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema, mcpServerSubmitOutputSchema as mcpGmxMultisignOutputSchema, mcpGmxStakeGmxInputSchema, mcpGmxUnstakeGmxInputSchema, mcpHyperliquidBridgeDepositInputSchema, mcpHyperliquidBridgeWithdrawInputSchema, mcpHyperliquidCancelInputSchema, mcpHyperliquidCloseInputSchema, mcpHyperliquidDelegateInputSchema, mcpHyperliquidFetchDelegationsInputSchema, mcpHyperliquidFetchDelegationsOutputSchema, mcpHyperliquidFetchLendMarketsInputSchema, mcpHyperliquidFetchLendMarketsOutputSchema, mcpHyperliquidFetchLendPositionsInputSchema, mcpHyperliquidFetchLendPositionsOutputSchema, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOhlcvInputSchema, mcpHyperliquidFetchOhlcvOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchStockMarketsInputSchema, mcpHyperliquidFetchStockMarketsOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultApysInputSchema, mcpHyperliquidFetchVaultApysOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLendInputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidSearchMarketsInputSchema, mcpHyperliquidSearchMarketsOutputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidTrailingStopInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUpdateLeverageInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoFetchStethAprInputSchema, mcpLidoFetchStethAprOutputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpListMyPredictionMarketsInputSchema, mcpListMyPredictionMarketsOutputSchema, mcpMapleDepositInputSchema, mcpMapleFetchMarketInputSchema, mcpMapleFetchMarketOutputSchema, mcpMapleFetchMarketsInputSchema, mcpMapleFetchMarketsOutputSchema, mcpMapleRequestRedeemInputSchema, mcpMerklRewardsFetchInputSchema, mcpMerklRewardsFetchOutputSchema, mcpMorphoBlueBorrowInputSchema, mcpMorphoBlueCollateralDepositInputSchema, mcpMorphoBlueCollateralWithdrawInputSchema, mcpMorphoBlueRepayInputSchema, mcpMorphoBlueSupplyInputSchema, mcpMorphoBlueWithdrawInputSchema, mcpMorphoFetchBlueMarketsInputSchema, mcpMorphoFetchBlueMarketsOutputSchema, mcpMorphoFetchEarnVaultsInputSchema, mcpMorphoFetchEarnVaultsOutputSchema, mcpMorphoFetchMidnightBooksInputSchema, mcpMorphoFetchMidnightBooksOutputSchema, mcpMorphoFetchMidnightOffersInputSchema, mcpMorphoFetchMidnightOffersOutputSchema, mcpMorphoFetchMidnightPositionsInputSchema, mcpMorphoFetchMidnightPositionsOutputSchema, mcpMorphoFetchMidnightQuoteInputSchema, mcpMorphoFetchMidnightQuoteOutputSchema, mcpMorphoFetchPositionsInputSchema, mcpMorphoFetchPositionsOutputSchema, mcpMorphoFetchStockMarketsInputSchema, mcpMorphoFetchStockMarketsOutputSchema, mcpMorphoMerklClaimInputSchema, mcpMorphoMidnightBorrowInputSchema, mcpMorphoMidnightCancelLendOfferInputSchema, mcpMorphoMidnightLendInputSchema, mcpMorphoMidnightLendOfferInputSchema, mcpMorphoMidnightRepayInputSchema, mcpMorphoVaultDepositInputSchema, mcpMorphoVaultWithdrawInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpPendleBuildAddLiquidityMultisignInputSchema, mcpPendleBuildMintPyMultisignInputSchema, mcpPendleBuildMintSyMultisignInputSchema, mcpPendleBuildRedeemPyMultisignInputSchema, mcpPendleBuildRedeemRewardsMultisignInputSchema, mcpPendleBuildRedeemSyMultisignInputSchema, mcpPendleBuildRemoveLiquidityMultisignInputSchema, mcpPendleBuildSwapMultisignInputSchema, mcpPendleFetchMarketsInputSchema, mcpPendleFetchMarketsOutputSchema, mcpPendleFetchMerkleRewardsInputSchema, mcpPendleFetchMerkleRewardsOutputSchema, mcpPendleFetchPositionsInputSchema, mcpPendleFetchPositionsOutputSchema, mcpPendleFetchPricesInputSchema, mcpPendleFetchPricesOutputSchema, mcpPendleQuoteAddLiquidityInputSchema, mcpPendleQuoteMintPyInputSchema, mcpPendleQuoteMintSyInputSchema, mcpPendleQuoteOutputSchema, mcpPendleQuoteRedeemPyInputSchema, mcpPendleQuoteRedeemSyInputSchema, mcpPendleQuoteRemoveLiquidityInputSchema, mcpPendleQuoteSwapInputSchema, mcpPendleSearchAssetsInputSchema, mcpPendleSearchAssetsOutputSchema, mcpPredictionMarketRowSchema, mcpRailgunAgreeSpendInputSchema, mcpRailgunEnsureWalletInputSchema, mcpRailgunEnsureWalletOutputSchema, mcpRailgunFetchPopularAssetsInputSchema, mcpRailgunFetchPopularAssetsOutputSchema, mcpRailgunFetchPrivateBalancesInputSchema, mcpRailgunFetchPrivateBalancesOutputSchema, mcpRailgunPrivateActionOutputSchema, mcpRailgunPrivateTransferInputSchema, mcpRailgunShieldInputSchema, mcpRailgunUnshieldInputSchema, mcpSearchPredictionMarketsInputSchema, mcpSearchPredictionMarketsOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyFetchSusdsRateInputSchema, mcpSkyFetchSusdsRateOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, mcpTrueoBurnInputSchema, mcpTrueoCancelOrderInputSchema, mcpTrueoCreateOrderInputSchema, mcpTrueoFetchCategoriesInputSchema, mcpTrueoFetchCategoriesOutputSchema, mcpTrueoFetchChanceSeriesInputSchema, mcpTrueoFetchChanceSeriesOutputSchema, mcpTrueoFetchMarketInputSchema, mcpTrueoFetchMarketOutputSchema, mcpTrueoFetchOrderbookInputSchema, mcpTrueoFetchOrderbookOutputSchema, mcpTrueoFetchTrendingInputSchema, mcpTrueoFetchTrendingOutputSchema, mcpTrueoMarketRowSchema, mcpTrueoMintInputSchema, mcpTrueoRedeemInputSchema, mcpTrueoSearchMarketsInputSchema, mcpTrueoSearchMarketsOutputSchema, mcpTrueoSwapInputSchema, mcpTrueoUnwrapTydInputSchema, mcpTrueoWrapTydInputSchema, mcpUniswapV4BuildAllowlistFinalizeMultisignInputSchema, mcpUniswapV4BuildCollectFeesMultisignInputSchema, mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildLimitOrderMultisignInputSchema, mcpUniswapV4BuildMintLiquidityMultisignInputSchema, mcpUniswapV4BuildSwapMultisignInputSchema, mcpUniswapV4CheckPermissionsInputSchema, mcpUniswapV4CheckPermissionsOutputSchema, mcpUniswapV4CreateSwapInputSchema, mcpUniswapV4CreateSwapOutputSchema, mcpUniswapV4FetchLimitOrdersInputSchema, mcpUniswapV4FetchLimitOrdersOutputSchema, mcpUniswapV4FetchOhlcvInputSchema, mcpUniswapV4FetchOhlcvOutputSchema, mcpUniswapV4KycApplyLinkInputSchema, mcpUniswapV4KycApplyLinkOutputSchema, mcpUniswapV4LimitOrderQuoteInputSchema, mcpUniswapV4LimitOrderQuoteOutputSchema, mcpUniswapV4LpClaimInputSchema, mcpUniswapV4LpClaimOutputSchema, mcpUniswapV4LpCreatePositionInputSchema, mcpUniswapV4LpCreatePositionOutputSchema, mcpUniswapV4LpDecreaseInputSchema, mcpUniswapV4LpDecreaseOutputSchema, mcpUniswapV4LpIncreaseInputSchema, mcpUniswapV4LpIncreaseOutputSchema, mcpUniswapV4LpListPoolsInputSchema, mcpUniswapV4LpListPoolsOutputSchema, mcpUniswapV4LpListPositionsInputSchema, mcpUniswapV4LpListPositionsOutputSchema, mcpUniswapV4QuoteInputSchema, mcpUniswapV4QuoteOutputSchema, mcpUniswapV4RegisterPositionFromMintTxInputSchema, mcpUniswapV4RegisterPositionFromMintTxOutputSchema, mcpUniswapV4RegisterPositionNftInputSchema, mcpUniswapV4RegisterPositionNftOutputSchema, mcpVeniceBurnDiemInputSchema, mcpVeniceCompleteUnstakeDiemInputSchema, mcpVeniceCompleteUnstakeSvvvInputSchema, mcpVeniceInitiateUnstakeDiemInputSchema, mcpVeniceInitiateUnstakeSvvvInputSchema, mcpVeniceListModelsInputSchema, mcpVeniceListModelsOutputSchema, mcpVeniceMintDiemInputSchema, mcpVeniceReadMintDiemPreviewInputSchema, mcpVeniceReadMintDiemPreviewOutputSchema, mcpVeniceReadStakingStateInputSchema, mcpVeniceReadStakingStateOutputSchema, mcpVeniceStakeDiemInputSchema, mcpVeniceStakeVvvInputSchema, multisignOutputSchema, parseAgentBoolean, parseAgentEvmChainId, parseMcpToolInput, parseMcpToolOutput, parseMultisignBuilderOutput, uniswapQuoteTradeTypeSchema, zodSchemaToMcpJsonSchema };
14838
15403
  //# sourceMappingURL=catalog.js.map
14839
15404
  //# sourceMappingURL=catalog.js.map