@continuumdao/ctm-mpc-defi 0.2.34 → 0.2.36
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.
- package/dist/agent/catalog.cjs +1562 -45
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +5995 -2960
- package/dist/agent/catalog.js +1502 -46
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/aave-v4/SKILL.md +19 -4
- package/dist/agent/skills/aerodrome/SKILL.md +2 -2
- package/dist/agent/skills/compound-v3/SKILL.md +2 -2
- package/dist/agent/skills/curve-dao/SKILL.md +14 -0
- package/dist/agent/skills/ethena/SKILL.md +3 -1
- package/dist/agent/skills/euler-v2/SKILL.md +1 -1
- package/dist/agent/skills/gmx/SKILL.md +1 -1
- package/dist/agent/skills/hyperliquid/SKILL.md +7 -5
- package/dist/agent/skills/lido/SKILL.md +3 -0
- package/dist/agent/skills/maple-syrup/SKILL.md +35 -3
- package/dist/agent/skills/morpho/SKILL.md +1 -1
- package/dist/agent/skills/pendle/SKILL.md +63 -0
- package/dist/agent/skills/sky/SKILL.md +2 -0
- package/dist/agent/skills/yield-compare/SKILL.md +81 -0
- package/dist/core/index.cjs +2 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +257 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +257 -28
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs +170 -0
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +59 -1
- package/dist/protocols/evm/aave-v4/index.js +164 -1
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/aerodrome/index.cjs +1308 -901
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.d.ts +69 -2
- package/dist/protocols/evm/aerodrome/index.js +1217 -807
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/compound-v3/index.cjs +82 -6
- package/dist/protocols/evm/compound-v3/index.cjs.map +1 -1
- package/dist/protocols/evm/compound-v3/index.d.ts +89 -1
- package/dist/protocols/evm/compound-v3/index.js +80 -7
- package/dist/protocols/evm/compound-v3/index.js.map +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs +447 -18
- package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/curve-dao/index.d.ts +108 -1
- package/dist/protocols/evm/curve-dao/index.js +440 -19
- package/dist/protocols/evm/curve-dao/index.js.map +1 -1
- package/dist/protocols/evm/ethena/index.cjs +89 -0
- package/dist/protocols/evm/ethena/index.cjs.map +1 -1
- package/dist/protocols/evm/ethena/index.d.ts +17 -1
- package/dist/protocols/evm/ethena/index.js +89 -2
- package/dist/protocols/evm/ethena/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +29 -0
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.d.ts +21 -1
- package/dist/protocols/evm/euler-v2/index.js +29 -1
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/gmx/index.cjs +83 -1
- package/dist/protocols/evm/gmx/index.cjs.map +1 -1
- package/dist/protocols/evm/gmx/index.d.ts +22 -2
- package/dist/protocols/evm/gmx/index.js +80 -2
- package/dist/protocols/evm/gmx/index.js.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.cjs +67 -11
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.d.ts +39 -2
- package/dist/protocols/evm/hyperliquid/index.js +64 -12
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
- package/dist/protocols/evm/lido/index.cjs +13 -0
- package/dist/protocols/evm/lido/index.cjs.map +1 -1
- package/dist/protocols/evm/lido/index.d.ts +9 -1
- package/dist/protocols/evm/lido/index.js +13 -1
- package/dist/protocols/evm/lido/index.js.map +1 -1
- package/dist/protocols/evm/maple/index.cjs +129 -1
- package/dist/protocols/evm/maple/index.cjs.map +1 -1
- package/dist/protocols/evm/maple/index.d.ts +45 -1
- package/dist/protocols/evm/maple/index.js +124 -3
- package/dist/protocols/evm/maple/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +34 -7
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +23 -1
- package/dist/protocols/evm/morpho/index.js +34 -8
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/dist/protocols/evm/pendle/index.cjs +1530 -0
- package/dist/protocols/evm/pendle/index.cjs.map +1 -0
- package/dist/protocols/evm/pendle/index.d.ts +463 -0
- package/dist/protocols/evm/pendle/index.js +1463 -0
- package/dist/protocols/evm/pendle/index.js.map +1 -0
- package/dist/protocols/evm/sky/index.cjs +52 -0
- package/dist/protocols/evm/sky/index.cjs.map +1 -1
- package/dist/protocols/evm/sky/index.d.ts +16 -1
- package/dist/protocols/evm/sky/index.js +50 -1
- package/dist/protocols/evm/sky/index.js.map +1 -1
- package/package.json +6 -1
package/dist/agent/catalog.js
CHANGED
|
@@ -376,6 +376,98 @@ var init_midnightApi = __esm({
|
|
|
376
376
|
init_midnightConstants();
|
|
377
377
|
}
|
|
378
378
|
});
|
|
379
|
+
function isAerodromeChainSupported(chainId) {
|
|
380
|
+
const n = typeof chainId === "number" ? chainId : Number.parseInt(String(chainId), 10);
|
|
381
|
+
return n === AERODROME_CHAIN_ID;
|
|
382
|
+
}
|
|
383
|
+
var AERODROME_PROTOCOL_ID, AERODROME_CHAIN_ID, AERODROME_WETH_BASE, AERODROME_USDC_BASE;
|
|
384
|
+
var init_support2 = __esm({
|
|
385
|
+
"src/protocols/evm/aerodrome/support.ts"() {
|
|
386
|
+
AERODROME_PROTOCOL_ID = "aerodrome";
|
|
387
|
+
AERODROME_CHAIN_ID = 8453;
|
|
388
|
+
AERODROME_WETH_BASE = "0x4200000000000000000000000000000000000006";
|
|
389
|
+
AERODROME_USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
var AERODROME_BASE_ADDRESSES_FALLBACK;
|
|
393
|
+
var init_addresses = __esm({
|
|
394
|
+
"src/protocols/evm/aerodrome/addresses.ts"() {
|
|
395
|
+
init_support2();
|
|
396
|
+
AERODROME_BASE_ADDRESSES_FALLBACK = {
|
|
397
|
+
chainId: AERODROME_CHAIN_ID,
|
|
398
|
+
aero: "0x940181a94A35A4569E4529A3CDfB74e38FD98631",
|
|
399
|
+
router: "0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43",
|
|
400
|
+
poolFactory: "0x420DD381b31aEf6683db6B902084cB0FFECe40Da",
|
|
401
|
+
factoryRegistry: "0x5C3F18F06CC09CA1910767A34a20F771039E37C0",
|
|
402
|
+
voter: "0x16613524e02ad97eDfeF371bC883F2F5d6C480A5",
|
|
403
|
+
votingEscrow: "0xeBf418Fe2512e7E6bd9b87a8F0f294aCDC67e6B4",
|
|
404
|
+
rewardsDistributor: "0x227f65131A261548b057215bB1D5Ab2997964C7d",
|
|
405
|
+
mixedQuoter: "0x0A5aA5D3a4d28014f967Bf0f29EAA3FF9807D5c6",
|
|
406
|
+
/** MixedRouteQuoterV3 — v2 + all three CL factories (bitmask path encoding). */
|
|
407
|
+
mixedQuoterV3: "0xCd2A7D98e82D6107eac1828ce8DeAA6acB65b555",
|
|
408
|
+
nfpm: "0x827922686190790b37229fd06084350E74485b72",
|
|
409
|
+
/** Oldest Slipstream CL factory (Gauges V1). Path bit 1<<20. */
|
|
410
|
+
clFactory: "0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A",
|
|
411
|
+
/** Slipstream CL factory 2 (gauge caps). Raw tickSpacing in MixedQuoterV3. */
|
|
412
|
+
clFactory2: "0xaDe65c38CD4849aDBA595a4323a8C7DdfE89716a",
|
|
413
|
+
/** Newest Slipstream CL factory (Gauges V3) — Coinbase B20 stock pools. Path bit 1<<19. */
|
|
414
|
+
clFactory3: "0xf8f2eB4940CFE7d13603DDDD87f123820Fc061Ef",
|
|
415
|
+
universalRouter: "0x6Cb442acF35158D5eDa88fe602221b67B400Be3E",
|
|
416
|
+
swapRouter: "0xBE6D8f0d05cC4be24d5167a3eF062215bE6D18a5",
|
|
417
|
+
swapRouter2: "0xcbBb8035cAc7D4B3Ca7aBb74cF7BdF900215Ce0D",
|
|
418
|
+
swapRouter3: "0x698Cb2b6dd822994581fEa6eA4Fc755d1363A92F",
|
|
419
|
+
pricesOracle: "0xee717411f6E44F9feE011835C8E6FAaC5dEfF166",
|
|
420
|
+
slipstreamHelper: "0x0AD09A66af0154a84e86F761313d02d0abB6edd5",
|
|
421
|
+
lpSugar: "0x69dD9db6d8f8E7d83887A704f447b1a584b599A1",
|
|
422
|
+
sugarSlipstreamHelper: "0x9c62ab10577fB3C20A22E231b7703Ed6D456CC7a",
|
|
423
|
+
swapper: "0x91616a7B9CF6D23f8C17845581051EBdC4BcB916",
|
|
424
|
+
weth: AERODROME_WETH_BASE
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
var AERODROME_COINBASE_STOCK_TOKENS, AERODROME_COINBASE_STOCK_DECIMALS;
|
|
429
|
+
var init_stockTokens = __esm({
|
|
430
|
+
"src/protocols/evm/aerodrome/stockTokens.ts"() {
|
|
431
|
+
AERODROME_COINBASE_STOCK_TOKENS = [
|
|
432
|
+
{ symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
|
|
433
|
+
{ symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
|
|
434
|
+
{ symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
|
|
435
|
+
{ symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
|
|
436
|
+
{ symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
|
|
437
|
+
{ symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
|
|
438
|
+
{ symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
|
|
439
|
+
{ symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
|
|
440
|
+
{ symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
|
|
441
|
+
{ symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
|
|
442
|
+
{ symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
|
|
443
|
+
{ symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
|
|
444
|
+
{ symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
|
|
445
|
+
];
|
|
446
|
+
AERODROME_COINBASE_STOCK_DECIMALS = 8;
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
var init_discover = __esm({
|
|
450
|
+
"src/protocols/evm/aerodrome/discover.ts"() {
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
var init_yields = __esm({
|
|
454
|
+
"src/protocols/evm/aerodrome/yields.ts"() {
|
|
455
|
+
init_addresses();
|
|
456
|
+
init_support2();
|
|
457
|
+
new Set(
|
|
458
|
+
[
|
|
459
|
+
AERODROME_WETH_BASE,
|
|
460
|
+
AERODROME_USDC_BASE,
|
|
461
|
+
AERODROME_BASE_ADDRESSES_FALLBACK.aero,
|
|
462
|
+
"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
|
|
463
|
+
"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2",
|
|
464
|
+
"0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
|
|
465
|
+
"0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22",
|
|
466
|
+
"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"
|
|
467
|
+
].map((a) => a.toLowerCase())
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
});
|
|
379
471
|
|
|
380
472
|
// src/core/registry.ts
|
|
381
473
|
var modules = [];
|
|
@@ -743,6 +835,22 @@ var curveDaoProtocolModule = {
|
|
|
743
835
|
amountHuman: { type: "string", required: true, description: "Human-readable input amount" },
|
|
744
836
|
slippagePercent: { type: "number", required: true, description: "Slippage percent (0\u2013100 exclusive)" }
|
|
745
837
|
}
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
id: "curve-dao.add-liquidity",
|
|
841
|
+
protocolId: CURVE_DAO_PROTOCOL_ID,
|
|
842
|
+
chainCategory: "evm",
|
|
843
|
+
description: "Add liquidity to an important Curve pool (optional gauge stake)",
|
|
844
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
845
|
+
params: {}
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
id: "curve-dao.remove-liquidity",
|
|
849
|
+
protocolId: CURVE_DAO_PROTOCOL_ID,
|
|
850
|
+
chainCategory: "evm",
|
|
851
|
+
description: "Remove liquidity from an important Curve pool",
|
|
852
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
853
|
+
params: {}
|
|
746
854
|
}
|
|
747
855
|
]
|
|
748
856
|
};
|
|
@@ -987,7 +1095,7 @@ var evmMultisignCommonInputSchema = z.object({
|
|
|
987
1095
|
chainDetail: chainDetailSchema.optional().describe("Server-filled gas row from chain registry when keyGenId is set."),
|
|
988
1096
|
customGasChainDetails: z.record(z.unknown()).optional().describe("Snapshot written to extraJSON.customGasChainDetails when useCustomGas is true."),
|
|
989
1097
|
expiryDate: z.number().int().positive().optional().describe(
|
|
990
|
-
"Optional Unix seconds (UTC) when the MPC sign request expires. Uniswap V4, GMX, Hyperliquid, Curve DAO, and
|
|
1098
|
+
"Optional Unix seconds (UTC) when the MPC sign request expires. Uniswap V4, GMX, Hyperliquid, Curve DAO, Aerodrome, and Pendle default to 30 minutes when omitted; other protocols use the node default (7 days)."
|
|
991
1099
|
)
|
|
992
1100
|
});
|
|
993
1101
|
function withMultisignKeySourceRefine(schema) {
|
|
@@ -1723,6 +1831,54 @@ var mcpCurveDaoBuildSwapMultisignInputSchema = withMultisignKeySourceRefine(
|
|
|
1723
1831
|
})
|
|
1724
1832
|
)
|
|
1725
1833
|
);
|
|
1834
|
+
var mcpCurveDaoFetchImportantPoolsInputSchema = z.object({
|
|
1835
|
+
chainId: agentEvmChainIdSchema,
|
|
1836
|
+
query: z.string().trim().min(1).optional().describe("Optional shrink filter on name, address, or coin symbol.")
|
|
1837
|
+
});
|
|
1838
|
+
var mcpCurveDaoFetchImportantPoolsOutputSchema = jsonObjectSchema.describe(
|
|
1839
|
+
"{ chainId, pools[] (id, address, name, coins, tvlUsd, baseApy, gaugeCrvApy, gaugeAddress), notes }. Hard cap ~100. Not a factory dump."
|
|
1840
|
+
);
|
|
1841
|
+
var mcpCurveDaoFetchLpYieldsInputSchema = mcpCurveDaoFetchImportantPoolsInputSchema.extend({
|
|
1842
|
+
pool: z.string().trim().min(1).optional().describe("Optional pool address or id to shrink the set.")
|
|
1843
|
+
});
|
|
1844
|
+
var mcpCurveDaoFetchLpYieldsOutputSchema = mcpCurveDaoFetchImportantPoolsOutputSchema;
|
|
1845
|
+
var mcpCurveDaoQuoteAddLiquidityInputSchema = z.object({
|
|
1846
|
+
chainId: agentEvmChainIdSchema,
|
|
1847
|
+
rpcUrl: z.string().min(1).optional(),
|
|
1848
|
+
pool: z.string().min(1).describe("Pool address or id from ctm_curve_dao_fetch_important_pools"),
|
|
1849
|
+
amountsHuman: z.array(z.string().min(1)).min(1).describe("Human amounts per underlying coin, same order as coins[]"),
|
|
1850
|
+
stakeInGauge: z.boolean().optional().describe("If true, quote assumes LP is staked for gauge_crv_apy")
|
|
1851
|
+
});
|
|
1852
|
+
var mcpCurveDaoQuoteAddLiquidityOutputSchema = jsonObjectSchema;
|
|
1853
|
+
var mcpCurveDaoQuoteRemoveLiquidityInputSchema = z.object({
|
|
1854
|
+
chainId: agentEvmChainIdSchema,
|
|
1855
|
+
rpcUrl: z.string().min(1).optional(),
|
|
1856
|
+
pool: z.string().min(1),
|
|
1857
|
+
lpAmountHuman: z.string().min(1)
|
|
1858
|
+
});
|
|
1859
|
+
var mcpCurveDaoQuoteRemoveLiquidityOutputSchema = jsonObjectSchema;
|
|
1860
|
+
var mcpCurveDaoBuildAddLiquidityMultisignInputSchema = withMultisignKeySourceRefine(
|
|
1861
|
+
evmMultisignCommonInputSchema.extend({
|
|
1862
|
+
pool: z.string().min(1),
|
|
1863
|
+
amountsHuman: z.array(z.string()).min(1),
|
|
1864
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
1865
|
+
stakeInGauge: z.boolean().optional()
|
|
1866
|
+
})
|
|
1867
|
+
);
|
|
1868
|
+
var mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema = withMultisignKeySourceRefine(
|
|
1869
|
+
evmMultisignCommonInputSchema.extend({
|
|
1870
|
+
pool: z.string().min(1),
|
|
1871
|
+
lpAmountHuman: z.string().min(1),
|
|
1872
|
+
slippagePercent: z.number().gt(0).lt(100)
|
|
1873
|
+
})
|
|
1874
|
+
);
|
|
1875
|
+
var mcpCurveDaoBuildGaugeDepositMultisignInputSchema = withMultisignKeySourceRefine(
|
|
1876
|
+
evmMultisignCommonInputSchema.extend({
|
|
1877
|
+
pool: z.string().min(1),
|
|
1878
|
+
lpAmountHuman: z.string().min(1),
|
|
1879
|
+
withdraw: z.boolean().optional().describe("If true, withdraw LP from the gauge instead of deposit")
|
|
1880
|
+
})
|
|
1881
|
+
);
|
|
1726
1882
|
var chain8453 = agentEvmChainIdSchema.describe("Must be 8453 (Base). Aerodrome is Base-only.");
|
|
1727
1883
|
var rpcUrlOptional = z.string().min(1).optional().describe("JSON-RPC URL; continuum-mcp-server injects from chain registry \u2014 do not pass a public RPC URL");
|
|
1728
1884
|
var mcpAerodromeDiscoverPoolsInputSchema = z.object({
|
|
@@ -1737,10 +1893,23 @@ var mcpAerodromeDiscoverPoolsOutputSchema = jsonObjectSchema.describe(
|
|
|
1737
1893
|
var mcpAerodromeFetchPoolsInputSchema = z.object({
|
|
1738
1894
|
chainId: chain8453,
|
|
1739
1895
|
rpcUrl: rpcUrlOptional,
|
|
1740
|
-
|
|
1896
|
+
query: z.string().trim().min(1).optional().describe("Optional shrink filter. Does not expand beyond the ~100 important pools."),
|
|
1897
|
+
limit: z.number().int().positive().max(100).optional(),
|
|
1741
1898
|
offset: z.number().int().min(0).optional()
|
|
1742
1899
|
});
|
|
1743
|
-
var mcpAerodromeFetchPoolsOutputSchema = jsonObjectSchema.describe(
|
|
1900
|
+
var mcpAerodromeFetchPoolsOutputSchema = jsonObjectSchema.describe(
|
|
1901
|
+
"{ chainId, pools[], notes }. At most ~100 important Base pairs \u2014 not an LpSugar.all dump."
|
|
1902
|
+
);
|
|
1903
|
+
var mcpAerodromeFetchLpYieldsInputSchema = z.object({
|
|
1904
|
+
chainId: chain8453,
|
|
1905
|
+
rpcUrl: rpcUrlOptional,
|
|
1906
|
+
query: z.string().trim().min(1).optional()
|
|
1907
|
+
});
|
|
1908
|
+
var mcpAerodromeFetchLpYieldsOutputSchema = jsonObjectSchema.describe(
|
|
1909
|
+
"{ chainId, pools[] (lp, feeApr, emissionsApr, totalApr, gauge, kind, tvlUsd), notes }"
|
|
1910
|
+
);
|
|
1911
|
+
var mcpAerodromeFetchStockLpYieldsInputSchema = mcpAerodromeFetchLpYieldsInputSchema;
|
|
1912
|
+
var mcpAerodromeFetchStockLpYieldsOutputSchema = mcpAerodromeFetchLpYieldsOutputSchema;
|
|
1744
1913
|
var mcpAerodromeFetchPositionsInputSchema = z.object({
|
|
1745
1914
|
chainId: chain8453,
|
|
1746
1915
|
rpcUrl: rpcUrlOptional,
|
|
@@ -2018,7 +2187,13 @@ var mcpMorphoFetchEarnVaultsOutputSchema = z.object({
|
|
|
2018
2187
|
managementFee: z.string().nullable(),
|
|
2019
2188
|
totalDepositsUsd: z.string(),
|
|
2020
2189
|
liquidityUsd: z.string(),
|
|
2021
|
-
exposure: z.array(morphoExposureRowSchema)
|
|
2190
|
+
exposure: z.array(morphoExposureRowSchema),
|
|
2191
|
+
rewards: z.array(
|
|
2192
|
+
z.object({
|
|
2193
|
+
symbol: z.string(),
|
|
2194
|
+
supplyAprLabel: z.string()
|
|
2195
|
+
})
|
|
2196
|
+
).describe("Extra vault incentive APR from Morpho GraphQL allRewards (variable).")
|
|
2022
2197
|
})
|
|
2023
2198
|
)
|
|
2024
2199
|
});
|
|
@@ -2042,7 +2217,14 @@ var mcpMorphoFetchBlueMarketsOutputSchema = z.object({
|
|
|
2042
2217
|
loanTokenSymbol: z.string(),
|
|
2043
2218
|
loanTokenDecimals: z.number().int(),
|
|
2044
2219
|
borrowApyLabel: z.string(),
|
|
2045
|
-
supplyApyLabel: z.string()
|
|
2220
|
+
supplyApyLabel: z.string(),
|
|
2221
|
+
netSupplyApyLabel: z.string().describe("Blue net supply APY including incentives when Morpho publishes it."),
|
|
2222
|
+
rewards: z.array(
|
|
2223
|
+
z.object({
|
|
2224
|
+
symbol: z.string(),
|
|
2225
|
+
supplyAprLabel: z.string()
|
|
2226
|
+
})
|
|
2227
|
+
)
|
|
2046
2228
|
})
|
|
2047
2229
|
)
|
|
2048
2230
|
});
|
|
@@ -3088,6 +3270,70 @@ var mcpContinuumDaoForumSignInInputSchema = mcpMultisignInput({
|
|
|
3088
3270
|
username: z.string().min(2).max(16).optional().describe("Required on first login when there is no node key (2\u201316 letters, numbers, . _ -)."),
|
|
3089
3271
|
forumUrl: z.string().optional()
|
|
3090
3272
|
});
|
|
3273
|
+
var mcpMapleSyrupMarketSummarySchema = z.object({
|
|
3274
|
+
chainId: z.number(),
|
|
3275
|
+
name: z.string(),
|
|
3276
|
+
pool: z.string().describe("Copy as pool for ctm_maple_build_*_multisign"),
|
|
3277
|
+
syrupRouter: z.string().describe("Copy as syrupRouter for ctm_maple_build_deposit_multisign"),
|
|
3278
|
+
asset: z.string().describe("Copy as asset for ctm_maple_build_deposit_multisign"),
|
|
3279
|
+
assetSymbol: z.string(),
|
|
3280
|
+
assetDecimals: z.number(),
|
|
3281
|
+
weeklyApyPercent: z.string(),
|
|
3282
|
+
monthlyApyPercent: z.string(),
|
|
3283
|
+
totalAssets: z.string()
|
|
3284
|
+
});
|
|
3285
|
+
var mcpMapleFetchMarketsInputSchema = z.object({
|
|
3286
|
+
chainId: agentEvmChainIdSchema,
|
|
3287
|
+
underlying: z.string().trim().min(1).optional().describe("Optional filter: ERC-20 address or ticker (USDT, USDC). Omit to list all Syrup pools.")
|
|
3288
|
+
});
|
|
3289
|
+
var mcpMapleFetchMarketsOutputSchema = z.object({
|
|
3290
|
+
chainId: z.number(),
|
|
3291
|
+
markets: z.array(mcpMapleSyrupMarketSummarySchema),
|
|
3292
|
+
notes: z.string()
|
|
3293
|
+
});
|
|
3294
|
+
var mcpMapleFetchMarketInputSchema = z.object({
|
|
3295
|
+
chainId: agentEvmChainIdSchema,
|
|
3296
|
+
pool: evmAddressSchema.optional().describe("Syrup PoolV2 / share token from fetch_markets."),
|
|
3297
|
+
underlying: z.string().trim().min(1).optional().describe("Deposit asset address or ticker (USDC, USDT, USDG).")
|
|
3298
|
+
});
|
|
3299
|
+
var mcpMapleFetchMarketOutputSchema = mcpMapleFetchMarketsOutputSchema;
|
|
3300
|
+
var mcpAaveV4UiMarketIdSchema = z.enum(["main", "core", "bluechip"]).optional().describe("UI market segment: main (Plus), core, or bluechip (Prime). Omit to list all hubs.");
|
|
3301
|
+
var mcpAaveV4MarketSummarySchema = z.object({
|
|
3302
|
+
chainId: z.number(),
|
|
3303
|
+
hubName: z.string(),
|
|
3304
|
+
marketId: z.enum(["main", "core", "bluechip"]),
|
|
3305
|
+
hubAddress: z.string(),
|
|
3306
|
+
symbol: z.string(),
|
|
3307
|
+
name: z.string(),
|
|
3308
|
+
underlying: z.string().describe("Copy as underlying for ctm_aave_v4_build_*_multisign"),
|
|
3309
|
+
spoke: z.string().nullable(),
|
|
3310
|
+
canSupply: z.boolean(),
|
|
3311
|
+
canBorrow: z.boolean(),
|
|
3312
|
+
canUseAsCollateral: z.boolean(),
|
|
3313
|
+
supplyApyPercent: z.string(),
|
|
3314
|
+
borrowApyPercent: z.string(),
|
|
3315
|
+
supplied: z.string(),
|
|
3316
|
+
borrowed: z.string(),
|
|
3317
|
+
availableLiquidity: z.string(),
|
|
3318
|
+
utilizationPercent: z.string().nullable(),
|
|
3319
|
+
collateralFactorPercent: z.string()
|
|
3320
|
+
});
|
|
3321
|
+
var mcpAaveV4FetchMarketsInputSchema = z.object({
|
|
3322
|
+
chainId: agentEvmChainIdSchema,
|
|
3323
|
+
marketId: mcpAaveV4UiMarketIdSchema,
|
|
3324
|
+
underlying: z.string().trim().min(1).optional().describe("Optional filter: ERC-20 address or ticker (USDT, USDC). Omit to list all reserves.")
|
|
3325
|
+
});
|
|
3326
|
+
var mcpAaveV4FetchMarketsOutputSchema = z.object({
|
|
3327
|
+
chainId: z.number(),
|
|
3328
|
+
markets: z.array(mcpAaveV4MarketSummarySchema),
|
|
3329
|
+
notes: z.string()
|
|
3330
|
+
});
|
|
3331
|
+
var mcpAaveV4FetchMarketInputSchema = z.object({
|
|
3332
|
+
chainId: agentEvmChainIdSchema,
|
|
3333
|
+
underlying: z.string().trim().min(1).describe("Reserve underlying address or ticker (e.g. USDT). Prefer fetch_markets when listing rates."),
|
|
3334
|
+
marketId: mcpAaveV4UiMarketIdSchema
|
|
3335
|
+
});
|
|
3336
|
+
var mcpAaveV4FetchMarketOutputSchema = mcpAaveV4FetchMarketsOutputSchema;
|
|
3091
3337
|
var mcpEulerV2FetchLendVaultsInputSchema = z.object({
|
|
3092
3338
|
chainId: agentEvmChainIdSchema,
|
|
3093
3339
|
underlyingAddress: evmAddressSchema.describe(
|
|
@@ -3110,6 +3356,251 @@ var mcpEulerV2FetchLendVaultsOutputSchema = z.object({
|
|
|
3110
3356
|
})
|
|
3111
3357
|
)
|
|
3112
3358
|
});
|
|
3359
|
+
var mcpEulerV2FetchEarnVaultsInputSchema = z.object({
|
|
3360
|
+
chainId: agentEvmChainIdSchema,
|
|
3361
|
+
underlyingAddress: evmAddressSchema.describe(
|
|
3362
|
+
"Underlying asset address from get_defi_protocol_supported_tokens."
|
|
3363
|
+
),
|
|
3364
|
+
limit: agentCoercedOptionalIntSchema(z.number().int().min(1).max(100)).describe("Max vault rows (default 30).")
|
|
3365
|
+
});
|
|
3366
|
+
var mcpEulerV2FetchEarnVaultsOutputSchema = z.object({
|
|
3367
|
+
vaults: z.array(
|
|
3368
|
+
z.object({
|
|
3369
|
+
evaultAddress: z.string().describe("Copy as vault for earn deposit multisign"),
|
|
3370
|
+
vaultName: z.string(),
|
|
3371
|
+
curatorDisplayName: z.string(),
|
|
3372
|
+
supplyApyPercentLabel: z.string(),
|
|
3373
|
+
totalAssetsHumanLabel: z.string(),
|
|
3374
|
+
availableLiquidityHumanLabel: z.string(),
|
|
3375
|
+
performanceFeePercentLabel: z.string(),
|
|
3376
|
+
underlyingAddress: z.string(),
|
|
3377
|
+
strategyCount: z.number().int()
|
|
3378
|
+
})
|
|
3379
|
+
)
|
|
3380
|
+
});
|
|
3381
|
+
var mcpLidoFetchStethAprInputSchema = z.object({}).strict();
|
|
3382
|
+
var mcpLidoFetchStethAprOutputSchema = z.object({
|
|
3383
|
+
aprPercent: z.string(),
|
|
3384
|
+
apr: z.number().nullable(),
|
|
3385
|
+
asset: z.string(),
|
|
3386
|
+
source: z.string(),
|
|
3387
|
+
notes: z.string()
|
|
3388
|
+
});
|
|
3389
|
+
var mcpSkyFetchSusdsRateInputSchema = z.object({
|
|
3390
|
+
rpcUrl: z.string().min(1).optional().describe("Server-filled from chain registry. Agents should omit.")
|
|
3391
|
+
}).strict();
|
|
3392
|
+
var mcpSkyFetchSusdsRateOutputSchema = z.object({
|
|
3393
|
+
chainId: z.number(),
|
|
3394
|
+
vault: z.string(),
|
|
3395
|
+
asset: z.string(),
|
|
3396
|
+
assetSymbol: z.string(),
|
|
3397
|
+
apyPercent: z.string(),
|
|
3398
|
+
apy: z.number().nullable(),
|
|
3399
|
+
usdsPerSusdsShare: z.string(),
|
|
3400
|
+
notes: z.string()
|
|
3401
|
+
});
|
|
3402
|
+
var mcpEthenaFetchSusdeApyInputSchema = z.object({
|
|
3403
|
+
rpcUrl: z.string().min(1).optional().describe("Server-filled from chain registry. Agents should omit.")
|
|
3404
|
+
}).strict();
|
|
3405
|
+
var mcpEthenaFetchSusdeApyOutputSchema = z.object({
|
|
3406
|
+
chainId: z.number(),
|
|
3407
|
+
product: z.string(),
|
|
3408
|
+
asset: z.string(),
|
|
3409
|
+
assetSymbol: z.string(),
|
|
3410
|
+
share: z.string(),
|
|
3411
|
+
apyPercent: z.string(),
|
|
3412
|
+
apy: z.number().nullable(),
|
|
3413
|
+
usdePerSusde: z.string(),
|
|
3414
|
+
cooldownDurationSec: z.number().nullable(),
|
|
3415
|
+
notes: z.string()
|
|
3416
|
+
});
|
|
3417
|
+
var mcpPendleFetchMarketsInputSchema = z.object({
|
|
3418
|
+
chainId: agentEvmChainIdSchema,
|
|
3419
|
+
query: z.string().trim().min(1).optional().describe("Optional shrink filter on name, PT/YT/underlying symbol or address."),
|
|
3420
|
+
pointsOnly: z.boolean().optional().describe("If true, only markets with point campaigns.")
|
|
3421
|
+
});
|
|
3422
|
+
var mcpPendleFetchMarketsOutputSchema = jsonObjectSchema.describe(
|
|
3423
|
+
"{ chainId, markets[] (address, pt, yt, sy, underlying, expiry, impliedApy, tvlUsd, points), notes }. Live markets only, hard cap 100 TVL-ranked."
|
|
3424
|
+
);
|
|
3425
|
+
var mcpPendleFetchPricesInputSchema = z.object({
|
|
3426
|
+
chainId: agentEvmChainIdSchema,
|
|
3427
|
+
ids: z.array(z.string().min(1)).optional().describe("Asset ids (chainId-0x\u2026). Omit to price the current live listing."),
|
|
3428
|
+
query: z.string().trim().min(1).optional()
|
|
3429
|
+
});
|
|
3430
|
+
var mcpPendleFetchPricesOutputSchema = jsonObjectSchema.describe(
|
|
3431
|
+
"{ chainId, prices[] ({ id, usd }), notes }"
|
|
3432
|
+
);
|
|
3433
|
+
var mcpPendleSearchAssetsInputSchema = z.object({
|
|
3434
|
+
chainId: agentEvmChainIdSchema,
|
|
3435
|
+
query: z.string().trim().min(1).describe("Ticker, name, 0x address, or chainId-0x asset id.")
|
|
3436
|
+
});
|
|
3437
|
+
var mcpPendleSearchAssetsOutputSchema = jsonObjectSchema.describe(
|
|
3438
|
+
"{ chainId, results[] (live PT/YT/SY/market + expiry, liquidity, points), notes }"
|
|
3439
|
+
);
|
|
3440
|
+
var mcpPendleFetchPositionsInputSchema = z.object({
|
|
3441
|
+
user: evmAddressSchema.describe("KeyGen / wallet to list Pendle LP for."),
|
|
3442
|
+
chainId: agentEvmChainIdSchema.optional().describe("If set, only this chain. Omit for all Core chains."),
|
|
3443
|
+
filterUsd: z.number().min(0).optional().describe("Drop holdings below this USD valuation. Omit to keep dust.")
|
|
3444
|
+
});
|
|
3445
|
+
var mcpPendleFetchPositionsOutputSchema = jsonObjectSchema.describe(
|
|
3446
|
+
"{ user, chainId, lp[] (market, name, expiry, matured, lpAmountHuman, lpUsd), notes }. Includes matured. Not the node token list."
|
|
3447
|
+
);
|
|
3448
|
+
var mcpPendleFetchMerkleRewardsInputSchema = z.object({
|
|
3449
|
+
user: evmAddressSchema.describe("Wallet to list off-chain airdrop rows for (informational; no claim).")
|
|
3450
|
+
});
|
|
3451
|
+
var mcpPendleFetchMerkleRewardsOutputSchema = jsonObjectSchema.describe(
|
|
3452
|
+
"{ user, claimableRewards[], claimedRewards[], notes }. List only \u2014 cannot build a claim from these rows."
|
|
3453
|
+
);
|
|
3454
|
+
var mcpPendleQuoteSwapInputSchema = z.object({
|
|
3455
|
+
chainId: agentEvmChainIdSchema,
|
|
3456
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3457
|
+
tokenIn: z.string().min(1).describe("Underlying, PT, or YT (0xeeee / 0x0 = native)."),
|
|
3458
|
+
tokenOut: z.string().min(1),
|
|
3459
|
+
amountHuman: z.string().min(1),
|
|
3460
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3461
|
+
receiver: evmAddressSchema.optional(),
|
|
3462
|
+
enableAggregator: z.boolean().optional(),
|
|
3463
|
+
tokenInDecimals: z.number().int().min(0).max(18).optional()
|
|
3464
|
+
});
|
|
3465
|
+
var mcpPendleQuoteOutputSchema = jsonObjectSchema.describe(
|
|
3466
|
+
"Hosted SDK convert quote: action, outputs, priceImpact, impliedApy, requiredApprovals, tx (do not hardcode tx.to)."
|
|
3467
|
+
);
|
|
3468
|
+
var mcpPendleQuoteMintPyInputSchema = z.object({
|
|
3469
|
+
chainId: agentEvmChainIdSchema,
|
|
3470
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3471
|
+
tokenIn: z.string().min(1),
|
|
3472
|
+
pt: evmAddressSchema,
|
|
3473
|
+
yt: evmAddressSchema,
|
|
3474
|
+
amountHuman: z.string().min(1),
|
|
3475
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3476
|
+
receiver: evmAddressSchema.optional()
|
|
3477
|
+
});
|
|
3478
|
+
var mcpPendleQuoteRedeemPyInputSchema = z.object({
|
|
3479
|
+
chainId: agentEvmChainIdSchema,
|
|
3480
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3481
|
+
pt: evmAddressSchema,
|
|
3482
|
+
yt: evmAddressSchema,
|
|
3483
|
+
tokenOut: z.string().min(1),
|
|
3484
|
+
amountPtHuman: z.string().min(1),
|
|
3485
|
+
amountYtHuman: z.string().min(1).optional(),
|
|
3486
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3487
|
+
receiver: evmAddressSchema.optional()
|
|
3488
|
+
});
|
|
3489
|
+
var mcpPendleQuoteMintSyInputSchema = z.object({
|
|
3490
|
+
chainId: agentEvmChainIdSchema,
|
|
3491
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3492
|
+
tokenIn: z.string().min(1),
|
|
3493
|
+
sy: evmAddressSchema,
|
|
3494
|
+
amountHuman: z.string().min(1),
|
|
3495
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3496
|
+
receiver: evmAddressSchema.optional()
|
|
3497
|
+
});
|
|
3498
|
+
var mcpPendleQuoteRedeemSyInputSchema = z.object({
|
|
3499
|
+
chainId: agentEvmChainIdSchema,
|
|
3500
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3501
|
+
sy: evmAddressSchema,
|
|
3502
|
+
tokenOut: z.string().min(1),
|
|
3503
|
+
amountHuman: z.string().min(1),
|
|
3504
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3505
|
+
receiver: evmAddressSchema.optional()
|
|
3506
|
+
});
|
|
3507
|
+
var mcpPendleQuoteAddLiquidityInputSchema = z.object({
|
|
3508
|
+
chainId: agentEvmChainIdSchema,
|
|
3509
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3510
|
+
tokensIn: z.array(z.object({ token: z.string().min(1), amountHuman: z.string().min(1) })).min(1),
|
|
3511
|
+
market: evmAddressSchema,
|
|
3512
|
+
keepYt: z.boolean().optional(),
|
|
3513
|
+
yt: evmAddressSchema.optional(),
|
|
3514
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3515
|
+
receiver: evmAddressSchema.optional()
|
|
3516
|
+
});
|
|
3517
|
+
var mcpPendleQuoteRemoveLiquidityInputSchema = z.object({
|
|
3518
|
+
chainId: agentEvmChainIdSchema,
|
|
3519
|
+
rpcUrl: z.string().min(1).optional(),
|
|
3520
|
+
market: evmAddressSchema,
|
|
3521
|
+
lpAmountHuman: z.string().min(1),
|
|
3522
|
+
tokensOut: z.array(z.string().min(1)).min(1),
|
|
3523
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3524
|
+
enableAggregator: z.boolean().optional(),
|
|
3525
|
+
receiver: evmAddressSchema.optional()
|
|
3526
|
+
});
|
|
3527
|
+
var mcpPendleBuildSwapMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3528
|
+
evmMultisignCommonInputSchema.extend({
|
|
3529
|
+
tokenIn: z.string().min(1),
|
|
3530
|
+
tokenOut: z.string().min(1),
|
|
3531
|
+
amountHuman: z.string().min(1),
|
|
3532
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3533
|
+
enableAggregator: z.boolean().optional(),
|
|
3534
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3535
|
+
})
|
|
3536
|
+
);
|
|
3537
|
+
var mcpPendleBuildMintPyMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3538
|
+
evmMultisignCommonInputSchema.extend({
|
|
3539
|
+
tokenIn: z.string().min(1),
|
|
3540
|
+
pt: evmAddressSchema,
|
|
3541
|
+
yt: evmAddressSchema,
|
|
3542
|
+
amountHuman: z.string().min(1),
|
|
3543
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3544
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3545
|
+
})
|
|
3546
|
+
);
|
|
3547
|
+
var mcpPendleBuildRedeemPyMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3548
|
+
evmMultisignCommonInputSchema.extend({
|
|
3549
|
+
pt: evmAddressSchema,
|
|
3550
|
+
yt: evmAddressSchema,
|
|
3551
|
+
tokenOut: z.string().min(1),
|
|
3552
|
+
amountPtHuman: z.string().min(1),
|
|
3553
|
+
amountYtHuman: z.string().min(1).optional(),
|
|
3554
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3555
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3556
|
+
})
|
|
3557
|
+
);
|
|
3558
|
+
var mcpPendleBuildMintSyMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3559
|
+
evmMultisignCommonInputSchema.extend({
|
|
3560
|
+
tokenIn: z.string().min(1),
|
|
3561
|
+
sy: evmAddressSchema,
|
|
3562
|
+
amountHuman: z.string().min(1),
|
|
3563
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3564
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3565
|
+
})
|
|
3566
|
+
);
|
|
3567
|
+
var mcpPendleBuildRedeemSyMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3568
|
+
evmMultisignCommonInputSchema.extend({
|
|
3569
|
+
sy: evmAddressSchema,
|
|
3570
|
+
tokenOut: z.string().min(1),
|
|
3571
|
+
amountHuman: z.string().min(1),
|
|
3572
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3573
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3574
|
+
})
|
|
3575
|
+
);
|
|
3576
|
+
var mcpPendleBuildAddLiquidityMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3577
|
+
evmMultisignCommonInputSchema.extend({
|
|
3578
|
+
tokensIn: z.array(z.object({ token: z.string().min(1), amountHuman: z.string().min(1) })).min(1),
|
|
3579
|
+
market: evmAddressSchema,
|
|
3580
|
+
keepYt: z.boolean().optional(),
|
|
3581
|
+
yt: evmAddressSchema.optional(),
|
|
3582
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3583
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3584
|
+
})
|
|
3585
|
+
);
|
|
3586
|
+
var mcpPendleBuildRemoveLiquidityMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3587
|
+
evmMultisignCommonInputSchema.extend({
|
|
3588
|
+
market: evmAddressSchema,
|
|
3589
|
+
lpAmountHuman: z.string().min(1),
|
|
3590
|
+
tokensOut: z.array(z.string().min(1)).min(1),
|
|
3591
|
+
slippagePercent: z.number().gt(0).lt(100),
|
|
3592
|
+
enableAggregator: z.boolean().optional(),
|
|
3593
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3594
|
+
})
|
|
3595
|
+
);
|
|
3596
|
+
var mcpPendleBuildRedeemRewardsMultisignInputSchema = withMultisignKeySourceRefine(
|
|
3597
|
+
evmMultisignCommonInputSchema.extend({
|
|
3598
|
+
sys: z.array(evmAddressSchema).optional(),
|
|
3599
|
+
yts: z.array(evmAddressSchema).optional(),
|
|
3600
|
+
markets: z.array(evmAddressSchema).optional(),
|
|
3601
|
+
convertSnapshot: jsonObjectSchema.optional()
|
|
3602
|
+
})
|
|
3603
|
+
);
|
|
3113
3604
|
var mcpCompoundV3FetchMarketsInputSchema = z.object({
|
|
3114
3605
|
chainId: agentEvmChainIdSchema,
|
|
3115
3606
|
rpcUrl: z.string().min(1).optional().describe("Server-filled from chain registry. Agents should omit.")
|
|
@@ -3134,6 +3625,8 @@ var mcpCompoundV3MarketSummarySchema = z.object({
|
|
|
3134
3625
|
utilization: z.number().nullable(),
|
|
3135
3626
|
supplyAprPercent: z.string().nullable(),
|
|
3136
3627
|
borrowAprPercent: z.string().nullable(),
|
|
3628
|
+
supplyRewardAprPercent: z.string().nullable().describe("Forward COMP (or reward-token) supply incentive APR. Extra and variable; null if unpriced."),
|
|
3629
|
+
borrowRewardAprPercent: z.string().nullable().describe("Forward COMP (or reward-token) borrow incentive APR. Extra and variable; null if unpriced."),
|
|
3137
3630
|
assets: z.array(mcpCompoundV3MarketAssetSchema)
|
|
3138
3631
|
});
|
|
3139
3632
|
var mcpCompoundV3FetchMarketsOutputSchema = z.object({
|
|
@@ -3378,7 +3871,15 @@ var mcpGmxFetchMarketPricesOutputSchema = z.object({
|
|
|
3378
3871
|
indexMarkUsd: z.string().nullable(),
|
|
3379
3872
|
collateralUsd: z.string().nullable(),
|
|
3380
3873
|
indexPerCollateral: z.string().nullable(),
|
|
3381
|
-
fetchedAtMs: z.number()
|
|
3874
|
+
fetchedAtMs: z.number(),
|
|
3875
|
+
fundingFactorPerSecond: z.string().nullable(),
|
|
3876
|
+
longsPayShorts: z.boolean().nullable(),
|
|
3877
|
+
fundingHourlyPercentLabel: z.string().nullable(),
|
|
3878
|
+
fundingAprPercentLabel: z.string().nullable(),
|
|
3879
|
+
borrowingFactorPerSecondForLongs: z.string().nullable(),
|
|
3880
|
+
borrowingFactorPerSecondForShorts: z.string().nullable(),
|
|
3881
|
+
borrowingHourlyPercentLongLabel: z.string().nullable(),
|
|
3882
|
+
borrowingHourlyPercentShortLabel: z.string().nullable()
|
|
3382
3883
|
});
|
|
3383
3884
|
var mcpGmxFetchOhlcvInputSchema = z.object({
|
|
3384
3885
|
chainId: agentEvmChainIdSchema,
|
|
@@ -3449,6 +3950,28 @@ var hyperliquidAccountSummarySchema = z.object({
|
|
|
3449
3950
|
var mcpHyperliquidFetchMarketsInputSchema = hyperliquidFetchChainInputSchema.extend({
|
|
3450
3951
|
dex: z.string().optional()
|
|
3451
3952
|
});
|
|
3953
|
+
var mcpHyperliquidFetchStockMarketsInputSchema = hyperliquidFetchChainInputSchema;
|
|
3954
|
+
var mcpHyperliquidFetchStockMarketsOutputSchema = z.object({
|
|
3955
|
+
markets: z.array(
|
|
3956
|
+
z.object({
|
|
3957
|
+
name: z.string().describe("HIP-3 coin, e.g. xyz:AAPL"),
|
|
3958
|
+
asset: z.number(),
|
|
3959
|
+
szDecimals: z.number(),
|
|
3960
|
+
maxLeverage: z.number(),
|
|
3961
|
+
onlyIsolated: z.boolean().optional(),
|
|
3962
|
+
dex: z.string().optional(),
|
|
3963
|
+
displayName: z.string().optional(),
|
|
3964
|
+
category: z.string().optional(),
|
|
3965
|
+
keywords: z.array(z.string()).optional()
|
|
3966
|
+
})
|
|
3967
|
+
),
|
|
3968
|
+
dexes: z.array(
|
|
3969
|
+
z.object({
|
|
3970
|
+
name: z.string(),
|
|
3971
|
+
fullName: z.string()
|
|
3972
|
+
})
|
|
3973
|
+
)
|
|
3974
|
+
});
|
|
3452
3975
|
var mcpHyperliquidFetchMarketsOutputSchema = z.object({
|
|
3453
3976
|
markets: z.array(
|
|
3454
3977
|
z.object({
|
|
@@ -3553,6 +4076,7 @@ var mcpHyperliquidFetchMarketSnapshotOutputSchema = z.object({
|
|
|
3553
4076
|
dex: z.string().nullable(),
|
|
3554
4077
|
livePrice: hyperliquidLivePriceSchema,
|
|
3555
4078
|
midUsd: z.string(),
|
|
4079
|
+
funding: z.string().nullable().describe("Official HyperCore hourly funding from metaAndAssetCtxs"),
|
|
3556
4080
|
fetchedAtMs: z.number(),
|
|
3557
4081
|
interval: hyperliquidOhlcvIntervalSchema,
|
|
3558
4082
|
latestCandle: hyperliquidOhlcvCandleSchema.nullable(),
|
|
@@ -3609,6 +4133,10 @@ var mcpHyperliquidFetchVaultsOutputSchema = z.object({
|
|
|
3609
4133
|
})
|
|
3610
4134
|
)
|
|
3611
4135
|
});
|
|
4136
|
+
var mcpHyperliquidFetchVaultApysInputSchema = mcpHyperliquidFetchVaultsInputSchema;
|
|
4137
|
+
var mcpHyperliquidFetchVaultApysOutputSchema = mcpHyperliquidFetchVaultsOutputSchema.extend({
|
|
4138
|
+
notes: z.string()
|
|
4139
|
+
});
|
|
3612
4140
|
var mcpHyperliquidFetchUserVaultEquitiesInputSchema = hyperliquidFetchChainInputSchema.extend({
|
|
3613
4141
|
executorAddress: evmAddressSchema
|
|
3614
4142
|
});
|
|
@@ -5503,6 +6031,84 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5503
6031
|
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveDaoBatch" },
|
|
5504
6032
|
inputZod: mcpCurveDaoBuildSwapMultisignInputSchema
|
|
5505
6033
|
}),
|
|
6034
|
+
defineMcpTool({
|
|
6035
|
+
name: "ctm_curve_dao_fetch_important_pools",
|
|
6036
|
+
actionId: "curve-dao.fetch-important-pools",
|
|
6037
|
+
protocolId: "curve-dao",
|
|
6038
|
+
chainCategory: "evm",
|
|
6039
|
+
description: "Official api.curve.fi catalog of ~100 important pools (TVL-ranked, dead/zero-TVL dropped). The only Curve list tool \u2014 do not dump factories or call fetchAllCurvePools. Optional query shrinks the set.",
|
|
6040
|
+
prerequisites: ["chainId"],
|
|
6041
|
+
followUp: ["ctm_curve_dao_fetch_lp_yields", "ctm_curve_dao_quote_add_liquidity"],
|
|
6042
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "curveDaoFetchImportantPools" },
|
|
6043
|
+
inputZod: mcpCurveDaoFetchImportantPoolsInputSchema,
|
|
6044
|
+
outputZod: mcpCurveDaoFetchImportantPoolsOutputSchema
|
|
6045
|
+
}),
|
|
6046
|
+
defineMcpTool({
|
|
6047
|
+
name: "ctm_curve_dao_fetch_lp_yields",
|
|
6048
|
+
actionId: "curve-dao.fetch-lp-yields",
|
|
6049
|
+
protocolId: "curve-dao",
|
|
6050
|
+
chainCategory: "evm",
|
|
6051
|
+
description: "LP yields for the same ~100 important Curve pools (baseApy + gauge_crv_apy + TVL). gauge_crv_apy requires staking LP in the gauge.",
|
|
6052
|
+
prerequisites: ["chainId"],
|
|
6053
|
+
followUp: ["ctm_curve_dao_quote_add_liquidity", "ctm_curve_dao_build_gauge_deposit_multisign"],
|
|
6054
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "curveDaoFetchLpYields" },
|
|
6055
|
+
inputZod: mcpCurveDaoFetchLpYieldsInputSchema,
|
|
6056
|
+
outputZod: mcpCurveDaoFetchLpYieldsOutputSchema
|
|
6057
|
+
}),
|
|
6058
|
+
defineMcpTool({
|
|
6059
|
+
name: "ctm_curve_dao_quote_add_liquidity",
|
|
6060
|
+
actionId: "curve-dao.quote-add-liquidity",
|
|
6061
|
+
protocolId: "curve-dao",
|
|
6062
|
+
chainCategory: "evm",
|
|
6063
|
+
description: "Quote Curve add_liquidity for an important pool. Copy pool + amountsHuman onto the build tool.",
|
|
6064
|
+
prerequisites: ["pool from ctm_curve_dao_fetch_important_pools"],
|
|
6065
|
+
followUp: ["ctm_curve_dao_build_add_liquidity_multisign"],
|
|
6066
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "curveDaoQuoteAddLiquidity" },
|
|
6067
|
+
inputZod: mcpCurveDaoQuoteAddLiquidityInputSchema,
|
|
6068
|
+
outputZod: mcpCurveDaoQuoteAddLiquidityOutputSchema
|
|
6069
|
+
}),
|
|
6070
|
+
defineMcpTool({
|
|
6071
|
+
name: "ctm_curve_dao_quote_remove_liquidity",
|
|
6072
|
+
actionId: "curve-dao.quote-remove-liquidity",
|
|
6073
|
+
protocolId: "curve-dao",
|
|
6074
|
+
chainCategory: "evm",
|
|
6075
|
+
description: "Quote balanced Curve remove_liquidity for an important pool.",
|
|
6076
|
+
prerequisites: ["pool from ctm_curve_dao_fetch_important_pools"],
|
|
6077
|
+
followUp: ["ctm_curve_dao_build_remove_liquidity_multisign"],
|
|
6078
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "curveDaoQuoteRemoveLiquidity" },
|
|
6079
|
+
inputZod: mcpCurveDaoQuoteRemoveLiquidityInputSchema,
|
|
6080
|
+
outputZod: mcpCurveDaoQuoteRemoveLiquidityOutputSchema
|
|
6081
|
+
}),
|
|
6082
|
+
defineMultisignSubmitMcpTool({
|
|
6083
|
+
name: "ctm_curve_dao_build_add_liquidity_multisign",
|
|
6084
|
+
actionId: "curve-dao.add-liquidity",
|
|
6085
|
+
protocolId: "curve-dao",
|
|
6086
|
+
chainCategory: "evm",
|
|
6087
|
+
description: "Create mpc-auth multiSignRequest for Curve add_liquidity (optional gauge.deposit when stakeInGauge). Pool must be from fetch_important_pools.",
|
|
6088
|
+
prerequisites: ["ctm_curve_dao_quote_add_liquidity"],
|
|
6089
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveAddLiquidity" },
|
|
6090
|
+
inputZod: mcpCurveDaoBuildAddLiquidityMultisignInputSchema
|
|
6091
|
+
}),
|
|
6092
|
+
defineMultisignSubmitMcpTool({
|
|
6093
|
+
name: "ctm_curve_dao_build_remove_liquidity_multisign",
|
|
6094
|
+
actionId: "curve-dao.remove-liquidity",
|
|
6095
|
+
protocolId: "curve-dao",
|
|
6096
|
+
chainCategory: "evm",
|
|
6097
|
+
description: "Create mpc-auth multiSignRequest for Curve remove_liquidity. Unstake from the gauge first if LP is staked.",
|
|
6098
|
+
prerequisites: ["ctm_curve_dao_quote_remove_liquidity"],
|
|
6099
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveRemoveLiquidity" },
|
|
6100
|
+
inputZod: mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema
|
|
6101
|
+
}),
|
|
6102
|
+
defineMultisignSubmitMcpTool({
|
|
6103
|
+
name: "ctm_curve_dao_build_gauge_deposit_multisign",
|
|
6104
|
+
actionId: "curve-dao.gauge-deposit",
|
|
6105
|
+
protocolId: "curve-dao",
|
|
6106
|
+
chainCategory: "evm",
|
|
6107
|
+
description: "Stake or unstake Curve LP in the gauge (required for advertised gauge_crv_apy). Set withdraw:true to unstake.",
|
|
6108
|
+
prerequisites: ["pool with gaugeAddress from fetch_important_pools"],
|
|
6109
|
+
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveGaugeDeposit" },
|
|
6110
|
+
inputZod: mcpCurveDaoBuildGaugeDepositMultisignInputSchema
|
|
6111
|
+
}),
|
|
5506
6112
|
defineMcpTool({
|
|
5507
6113
|
name: "ctm_aerodrome_discover_pools",
|
|
5508
6114
|
actionId: "aerodrome.discover-pools",
|
|
@@ -5520,13 +6126,37 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5520
6126
|
actionId: "aerodrome.fetch-pools",
|
|
5521
6127
|
protocolId: "aerodrome",
|
|
5522
6128
|
chainCategory: "evm",
|
|
5523
|
-
description: "
|
|
6129
|
+
description: "At most ~100 important Aerodrome pools on Base (ETH/WETH, USDC, AERO, major stables; TVL-ranked). Not an LpSugar.all dump. Optional query only shrinks the set. For B20 stock LPs use ctm_aerodrome_fetch_stock_lp_yields.",
|
|
5524
6130
|
prerequisites: ["chainId 8453"],
|
|
5525
6131
|
followUp: ["ctm_aerodrome_quote_add_liquidity", "ctm_aerodrome_fetch_positions"],
|
|
5526
6132
|
handler: { importPath: "protocols/evm/aerodrome", exportName: "aerodromeFetchPoolsSummary" },
|
|
5527
6133
|
inputZod: mcpAerodromeFetchPoolsInputSchema,
|
|
5528
6134
|
outputZod: mcpAerodromeFetchPoolsOutputSchema
|
|
5529
6135
|
}),
|
|
6136
|
+
defineMcpTool({
|
|
6137
|
+
name: "ctm_aerodrome_fetch_lp_yields",
|
|
6138
|
+
actionId: "aerodrome.fetch-lp-yields",
|
|
6139
|
+
protocolId: "aerodrome",
|
|
6140
|
+
chainCategory: "evm",
|
|
6141
|
+
description: "Fee tier + AERO emissions APR for the same ~100 important Aerodrome pairs. feeApr is null (Sugar has no volume). Not a factory dump. B20 stocks: ctm_aerodrome_fetch_stock_lp_yields.",
|
|
6142
|
+
prerequisites: ["chainId 8453"],
|
|
6143
|
+
followUp: ["ctm_aerodrome_quote_add_liquidity", "ctm_aerodrome_build_gauge_stake_multisign"],
|
|
6144
|
+
handler: { importPath: "protocols/evm/aerodrome", exportName: "aerodromeFetchLpYieldsSummary" },
|
|
6145
|
+
inputZod: mcpAerodromeFetchLpYieldsInputSchema,
|
|
6146
|
+
outputZod: mcpAerodromeFetchLpYieldsOutputSchema
|
|
6147
|
+
}),
|
|
6148
|
+
defineMcpTool({
|
|
6149
|
+
name: "ctm_aerodrome_fetch_stock_lp_yields",
|
|
6150
|
+
actionId: "aerodrome.fetch-stock-lp-yields",
|
|
6151
|
+
protocolId: "aerodrome",
|
|
6152
|
+
chainCategory: "evm",
|
|
6153
|
+
description: "Coinbase B20 stock LP yields only (AAPLc/USDC, \u2026). Separate from main-pair fetch_lp_yields. Trading stocks is not this list.",
|
|
6154
|
+
prerequisites: ["chainId 8453"],
|
|
6155
|
+
followUp: ["ctm_aerodrome_quote_add_liquidity"],
|
|
6156
|
+
handler: { importPath: "protocols/evm/aerodrome", exportName: "aerodromeFetchStockLpYieldsSummary" },
|
|
6157
|
+
inputZod: mcpAerodromeFetchStockLpYieldsInputSchema,
|
|
6158
|
+
outputZod: mcpAerodromeFetchStockLpYieldsOutputSchema
|
|
6159
|
+
}),
|
|
5530
6160
|
defineMcpTool({
|
|
5531
6161
|
name: "ctm_aerodrome_fetch_positions",
|
|
5532
6162
|
actionId: "aerodrome.fetch-positions",
|
|
@@ -5748,7 +6378,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5748
6378
|
actionId: "gmx.fetch-market-prices",
|
|
5749
6379
|
protocolId: "gmx",
|
|
5750
6380
|
chainCategory: "evm",
|
|
5751
|
-
description: "Latest GMX index mark
|
|
6381
|
+
description: "Latest GMX index mark, collateral USD, and official funding (fundingFactorPerSecond, longsPayShorts, hourly/APR labels). Borrow-per-second is a cost caveat, not a second yield. Read-only via GMX HTTP API + MarketInfo.",
|
|
5752
6382
|
prerequisites: ["chainId", "symbol from ctm_gmx_fetch_markets", "collateralSymbol e.g. USDC"],
|
|
5753
6383
|
followUp: ["ctm_gmx_fetch_ohlcv", "ctm_gmx_build_increase_multisign"],
|
|
5754
6384
|
handler: { importPath: "protocols/evm/gmx", exportName: "gmxFetchMarketPrices" },
|
|
@@ -5808,13 +6438,25 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5808
6438
|
actionId: "hyperliquid.fetch-markets",
|
|
5809
6439
|
protocolId: "hyperliquid",
|
|
5810
6440
|
chainCategory: "evm",
|
|
5811
|
-
description: "List Hyperliquid perp markets
|
|
6441
|
+
description: "List native Hyperliquid crypto perp markets. HIP-3 stocks (xyz:AAPL) are ctm_hyperliquid_fetch_stock_markets. Pass dex to list one builder. chainId 999 mainnet or 998 testnet.",
|
|
5812
6442
|
prerequisites: ["chainId 999 or 998"],
|
|
5813
6443
|
followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign", "ctm_hyperliquid_build_update_leverage_multisign"],
|
|
5814
6444
|
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketsSummary" },
|
|
5815
6445
|
inputZod: mcpHyperliquidFetchMarketsInputSchema,
|
|
5816
6446
|
outputZod: mcpHyperliquidFetchMarketsOutputSchema
|
|
5817
6447
|
}),
|
|
6448
|
+
defineMcpTool({
|
|
6449
|
+
name: "ctm_hyperliquid_fetch_stock_markets",
|
|
6450
|
+
actionId: "hyperliquid.fetch-stock-markets",
|
|
6451
|
+
protocolId: "hyperliquid",
|
|
6452
|
+
chainCategory: "evm",
|
|
6453
|
+
description: "HIP-3 / equity stock perps (xyz:AAPL, TSLA, \u2026) with dex, displayName, and category. Trading only \u2014 not a savings APR. Native crypto: ctm_hyperliquid_fetch_markets.",
|
|
6454
|
+
prerequisites: ["chainId 999 or 998"],
|
|
6455
|
+
followUp: ["ctm_hyperliquid_search_markets", "ctm_hyperliquid_build_limit_order_multisign"],
|
|
6456
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchStockMarketsSummary" },
|
|
6457
|
+
inputZod: mcpHyperliquidFetchStockMarketsInputSchema,
|
|
6458
|
+
outputZod: mcpHyperliquidFetchStockMarketsOutputSchema
|
|
6459
|
+
}),
|
|
5818
6460
|
defineMcpTool({
|
|
5819
6461
|
name: "ctm_hyperliquid_search_markets",
|
|
5820
6462
|
actionId: "hyperliquid.search-markets",
|
|
@@ -5868,7 +6510,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5868
6510
|
actionId: "hyperliquid.fetch-market-snapshot",
|
|
5869
6511
|
protocolId: "hyperliquid",
|
|
5870
6512
|
chainCategory: "evm",
|
|
5871
|
-
description: "Live mark/mid price plus recent OHLCV candles for a Hyperliquid perp. Uses metaAndAssetCtxs for live prices (not stale candle close). Default interval 15m, 48 bars. Throws if live price unavailable.",
|
|
6513
|
+
description: "Live mark/mid price, official hourly funding, plus recent OHLCV candles for a Hyperliquid perp. Uses metaAndAssetCtxs for live prices and funding (not stale candle close). Default interval 15m, 48 bars. Throws if live price unavailable.",
|
|
5872
6514
|
prerequisites: ["chainId", "coin"],
|
|
5873
6515
|
followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign", "ctm_hyperliquid_build_update_leverage_multisign"],
|
|
5874
6516
|
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketSnapshotSummary" },
|
|
@@ -5911,6 +6553,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
5911
6553
|
inputZod: mcpHyperliquidFetchVaultsInputSchema,
|
|
5912
6554
|
outputZod: mcpHyperliquidFetchVaultsOutputSchema
|
|
5913
6555
|
}),
|
|
6556
|
+
defineMcpTool({
|
|
6557
|
+
name: "ctm_hyperliquid_fetch_vault_apys",
|
|
6558
|
+
actionId: "hyperliquid.fetch-vault-apys",
|
|
6559
|
+
protocolId: "hyperliquid",
|
|
6560
|
+
chainCategory: "evm",
|
|
6561
|
+
description: "Hyperliquid vault APRs sorted descending (HLP first). Use this for idle USDC yield compare \u2014 not HIP-3 stocks. Same catalog cap as fetch_vaults.",
|
|
6562
|
+
prerequisites: ["chainId 999 for catalog"],
|
|
6563
|
+
followUp: ["ctm_hyperliquid_build_vault_deposit_multisign"],
|
|
6564
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchVaultApysSummary" },
|
|
6565
|
+
inputZod: mcpHyperliquidFetchVaultApysInputSchema,
|
|
6566
|
+
outputZod: mcpHyperliquidFetchVaultApysOutputSchema
|
|
6567
|
+
}),
|
|
5914
6568
|
defineMcpTool({
|
|
5915
6569
|
name: "ctm_hyperliquid_fetch_user_vault_equities",
|
|
5916
6570
|
actionId: "hyperliquid.fetch-user-vault-equities",
|
|
@@ -6184,6 +6838,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
6184
6838
|
inputZod: mcpEulerV2FetchLendVaultsInputSchema,
|
|
6185
6839
|
outputZod: mcpEulerV2FetchLendVaultsOutputSchema
|
|
6186
6840
|
}),
|
|
6841
|
+
defineMcpTool({
|
|
6842
|
+
name: "ctm_euler_v2_fetch_earn_vaults",
|
|
6843
|
+
actionId: "euler-v2.fetch-earn-vaults",
|
|
6844
|
+
protocolId: "euler-v2",
|
|
6845
|
+
chainCategory: "evm",
|
|
6846
|
+
description: "Euler Earn vaults (curated, not isolated lend) for an underlying with live supply APY. Use this (not web search) for Euler earn rates. Copy evaultAddress for deposit.",
|
|
6847
|
+
prerequisites: ["chainId", "underlyingAddress from get_defi_protocol_supported_tokens"],
|
|
6848
|
+
followUp: ["ctm_euler_v2_build_isolated_lend_multisign"],
|
|
6849
|
+
handler: { importPath: "protocols/evm/euler-v2", exportName: "eulerV2FetchEarnVaultsSummary" },
|
|
6850
|
+
inputZod: mcpEulerV2FetchEarnVaultsInputSchema,
|
|
6851
|
+
outputZod: mcpEulerV2FetchEarnVaultsOutputSchema
|
|
6852
|
+
}),
|
|
6187
6853
|
defineMcpTool({
|
|
6188
6854
|
name: "ctm_cctp_fetch_supported_routes",
|
|
6189
6855
|
actionId: "circle-cctp.fetch-routes",
|
|
@@ -6635,6 +7301,103 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
6635
7301
|
inputZod: mcpContinuumDaoForumSectionsInputSchema,
|
|
6636
7302
|
outputZod: mcpContinuumDaoForumSectionsOutputSchema
|
|
6637
7303
|
}),
|
|
7304
|
+
defineMcpTool({
|
|
7305
|
+
name: "ctm_maple_fetch_markets",
|
|
7306
|
+
actionId: "maple-syrup.fetch-markets",
|
|
7307
|
+
protocolId: "maple-syrup",
|
|
7308
|
+
chainCategory: "evm",
|
|
7309
|
+
description: "List Maple Syrup pools on a chain with live weekly/monthly APY and TVL. Use this (not web search) for Maple lending rates. Copy pool + syrupRouter + asset for build_deposit_multisign / build_request_redeem_multisign. Optional underlying filter.",
|
|
7310
|
+
prerequisites: ["chainId", "get_defi_protocol_supported_chains"],
|
|
7311
|
+
followUp: [
|
|
7312
|
+
"ctm_maple_fetch_market",
|
|
7313
|
+
"ctm_maple_build_deposit_multisign",
|
|
7314
|
+
"ctm_maple_build_request_redeem_multisign"
|
|
7315
|
+
],
|
|
7316
|
+
handler: { importPath: "protocols/evm/maple", exportName: "mapleSyrupFetchMarketsSummary" },
|
|
7317
|
+
inputZod: mcpMapleFetchMarketsInputSchema,
|
|
7318
|
+
outputZod: mcpMapleFetchMarketsOutputSchema
|
|
7319
|
+
}),
|
|
7320
|
+
defineMcpTool({
|
|
7321
|
+
name: "ctm_maple_fetch_market",
|
|
7322
|
+
actionId: "maple-syrup.fetch-market",
|
|
7323
|
+
protocolId: "maple-syrup",
|
|
7324
|
+
chainCategory: "evm",
|
|
7325
|
+
description: "One Maple Syrup pool (by pool address or underlying) with weekly/monthly APY and TVL. Copy pool + syrupRouter + asset for deposit/redeem. Do not web-search Maple rates.",
|
|
7326
|
+
prerequisites: ["chainId", "pool or underlying from ctm_maple_fetch_markets"],
|
|
7327
|
+
followUp: ["ctm_maple_build_deposit_multisign", "ctm_maple_build_request_redeem_multisign"],
|
|
7328
|
+
handler: { importPath: "protocols/evm/maple", exportName: "mapleSyrupFetchMarketSummary" },
|
|
7329
|
+
inputZod: mcpMapleFetchMarketInputSchema,
|
|
7330
|
+
outputZod: mcpMapleFetchMarketOutputSchema
|
|
7331
|
+
}),
|
|
7332
|
+
defineMcpTool({
|
|
7333
|
+
name: "ctm_aave_v4_fetch_markets",
|
|
7334
|
+
actionId: "aave-v4.fetch-markets",
|
|
7335
|
+
protocolId: "aave-v4",
|
|
7336
|
+
chainCategory: "evm",
|
|
7337
|
+
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.",
|
|
7338
|
+
prerequisites: ["chainId", "get_defi_protocol_supported_chains"],
|
|
7339
|
+
followUp: [
|
|
7340
|
+
"ctm_aave_v4_fetch_market",
|
|
7341
|
+
"ctm_aave_v4_build_deposit_multisign",
|
|
7342
|
+
"ctm_aave_v4_build_borrow_multisign"
|
|
7343
|
+
],
|
|
7344
|
+
handler: { importPath: "protocols/evm/aave-v4", exportName: "aaveV4FetchMarketsSummary" },
|
|
7345
|
+
inputZod: mcpAaveV4FetchMarketsInputSchema,
|
|
7346
|
+
outputZod: mcpAaveV4FetchMarketsOutputSchema
|
|
7347
|
+
}),
|
|
7348
|
+
defineMcpTool({
|
|
7349
|
+
name: "ctm_aave_v4_fetch_market",
|
|
7350
|
+
actionId: "aave-v4.fetch-market",
|
|
7351
|
+
protocolId: "aave-v4",
|
|
7352
|
+
chainCategory: "evm",
|
|
7353
|
+
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.",
|
|
7354
|
+
prerequisites: ["chainId", "underlying from ctm_aave_v4_fetch_markets or get_defi_protocol_supported_tokens"],
|
|
7355
|
+
followUp: [
|
|
7356
|
+
"ctm_aave_v4_build_deposit_multisign",
|
|
7357
|
+
"ctm_aave_v4_build_withdraw_multisign",
|
|
7358
|
+
"ctm_aave_v4_build_borrow_multisign",
|
|
7359
|
+
"ctm_aave_v4_build_repay_multisign"
|
|
7360
|
+
],
|
|
7361
|
+
handler: { importPath: "protocols/evm/aave-v4", exportName: "aaveV4FetchMarketSummary" },
|
|
7362
|
+
inputZod: mcpAaveV4FetchMarketInputSchema,
|
|
7363
|
+
outputZod: mcpAaveV4FetchMarketOutputSchema
|
|
7364
|
+
}),
|
|
7365
|
+
defineMcpTool({
|
|
7366
|
+
name: "ctm_lido_fetch_steth_apr",
|
|
7367
|
+
actionId: "lido.fetch-steth-apr",
|
|
7368
|
+
protocolId: "lido",
|
|
7369
|
+
chainCategory: "evm",
|
|
7370
|
+
description: "Recent stETH staking APR from the official Lido API. Use this (not web search) when comparing ETH staking vs lending. Ethereum mainnet.",
|
|
7371
|
+
prerequisites: ["load_defi_protocol lido"],
|
|
7372
|
+
followUp: ["ctm_lido_build_submit_multisign"],
|
|
7373
|
+
handler: { importPath: "protocols/evm/lido", exportName: "lidoFetchStethAprSummary" },
|
|
7374
|
+
inputZod: mcpLidoFetchStethAprInputSchema,
|
|
7375
|
+
outputZod: mcpLidoFetchStethAprOutputSchema
|
|
7376
|
+
}),
|
|
7377
|
+
defineMcpTool({
|
|
7378
|
+
name: "ctm_sky_fetch_susds_rate",
|
|
7379
|
+
actionId: "sky.fetch-susds-rate",
|
|
7380
|
+
protocolId: "sky",
|
|
7381
|
+
chainCategory: "evm",
|
|
7382
|
+
description: "Sky Savings Rate (sUSDS APY) from on-chain ssr(). Use this (not web search) for USDS savings. Ethereum mainnet. rpcUrl is injected.",
|
|
7383
|
+
prerequisites: ["chainId 1", "get_chain_registry rpcGateway"],
|
|
7384
|
+
followUp: ["ctm_sky_build_susds_deposit_multisign"],
|
|
7385
|
+
handler: { importPath: "protocols/evm/sky", exportName: "skyFetchSusdsRateSummary" },
|
|
7386
|
+
inputZod: mcpSkyFetchSusdsRateInputSchema,
|
|
7387
|
+
outputZod: mcpSkyFetchSusdsRateOutputSchema
|
|
7388
|
+
}),
|
|
7389
|
+
defineMcpTool({
|
|
7390
|
+
name: "ctm_ethena_fetch_susde_apy",
|
|
7391
|
+
actionId: "ethena.fetch-susde-apy",
|
|
7392
|
+
protocolId: "ethena",
|
|
7393
|
+
chainCategory: "evm",
|
|
7394
|
+
description: "sUSDe staking APY plus USDe-per-share from the vault. Use this (not web search) for USDe yield. Ethereum mainnet. rpcUrl is injected.",
|
|
7395
|
+
prerequisites: ["chainId 1", "get_chain_registry rpcGateway"],
|
|
7396
|
+
followUp: ["ctm_ethena_build_stake_multisign"],
|
|
7397
|
+
handler: { importPath: "protocols/evm/ethena", exportName: "ethenaFetchSusdeApySummary" },
|
|
7398
|
+
inputZod: mcpEthenaFetchSusdeApyInputSchema,
|
|
7399
|
+
outputZod: mcpEthenaFetchSusdeApyOutputSchema
|
|
7400
|
+
}),
|
|
6638
7401
|
defineMcpTool({
|
|
6639
7402
|
name: "ctm_compound_v3_fetch_markets",
|
|
6640
7403
|
actionId: "compound-v3.fetch-markets",
|
|
@@ -6675,6 +7438,238 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
6675
7438
|
handler: { importPath: "protocols/evm/compound-v3", exportName: "compoundV3FetchAccountSummary" },
|
|
6676
7439
|
inputZod: mcpCompoundV3FetchAccountInputSchema,
|
|
6677
7440
|
outputZod: mcpCompoundV3FetchAccountOutputSchema
|
|
7441
|
+
}),
|
|
7442
|
+
defineMcpTool({
|
|
7443
|
+
name: "ctm_pendle_fetch_markets",
|
|
7444
|
+
actionId: "pendle.fetch-markets",
|
|
7445
|
+
protocolId: "pendle",
|
|
7446
|
+
chainCategory: "evm",
|
|
7447
|
+
description: "Pendle V2: live (unexpired) markets on chainId, scanned from Core, TVL-ranked, hard cap 100. Matured YT markets are omitted. Includes points[] campaigns. Use ctm_pendle_search_assets for long-tail or a specific expired market (PT redeem / remove LP). Never Convert. load_defi_protocol pendle activates this pack.",
|
|
7448
|
+
prerequisites: ["chainId in get_chain_registry \u2229 Pendle GET /v1/chains"],
|
|
7449
|
+
followUp: ["ctm_pendle_search_assets", "ctm_pendle_fetch_prices", "ctm_pendle_quote_swap"],
|
|
7450
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleFetchMarketsSummary" },
|
|
7451
|
+
inputZod: mcpPendleFetchMarketsInputSchema,
|
|
7452
|
+
outputZod: mcpPendleFetchMarketsOutputSchema
|
|
7453
|
+
}),
|
|
7454
|
+
defineMcpTool({
|
|
7455
|
+
name: "ctm_pendle_fetch_prices",
|
|
7456
|
+
actionId: "pendle.fetch-prices",
|
|
7457
|
+
protocolId: "pendle",
|
|
7458
|
+
chainCategory: "evm",
|
|
7459
|
+
description: "Pendle V2: USD prices for listed or searched asset ids (GET /v1/prices/assets). Do not use Convert as a ticker.",
|
|
7460
|
+
prerequisites: ["chainId", "ids from fetch_markets / search_assets (or omit to price the current live listing)"],
|
|
7461
|
+
followUp: ["ctm_pendle_quote_swap"],
|
|
7462
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleFetchPricesSummary" },
|
|
7463
|
+
inputZod: mcpPendleFetchPricesInputSchema,
|
|
7464
|
+
outputZod: mcpPendleFetchPricesOutputSchema
|
|
7465
|
+
}),
|
|
7466
|
+
defineMcpTool({
|
|
7467
|
+
name: "ctm_pendle_search_assets",
|
|
7468
|
+
actionId: "pendle.search-assets",
|
|
7469
|
+
protocolId: "pendle",
|
|
7470
|
+
chainCategory: "evm",
|
|
7471
|
+
description: "Pendle V2: search live markets by ticker, 0x, or chainId-0x. Prefers unexpired hits; returns a matured market only if nothing live matched or you looked up that address (PT redeem / remove LP). Returns expiry, APY, TVL, points.",
|
|
7472
|
+
prerequisites: ["chainId", "query (ticker, 0x, or chainId-0x)"],
|
|
7473
|
+
followUp: ["ctm_pendle_quote_swap", "ctm_pendle_quote_mint_py", "ctm_pendle_quote_add_liquidity"],
|
|
7474
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleSearchAssets" },
|
|
7475
|
+
inputZod: mcpPendleSearchAssetsInputSchema,
|
|
7476
|
+
outputZod: mcpPendleSearchAssetsOutputSchema
|
|
7477
|
+
}),
|
|
7478
|
+
defineMcpTool({
|
|
7479
|
+
name: "ctm_pendle_quote_swap",
|
|
7480
|
+
actionId: "pendle.quote-swap",
|
|
7481
|
+
protocolId: "pendle",
|
|
7482
|
+
chainCategory: "evm",
|
|
7483
|
+
description: "Pendle V2 Hosted SDK Convert quote: token \u2194 PT or YT (this is also how you trade points). Fresh calldata; do not cache as a price ticker.",
|
|
7484
|
+
prerequisites: ["ctm_pendle_fetch_markets or ctm_pendle_search_assets", "activate_tool_group pendle:swap"],
|
|
7485
|
+
followUp: ["ctm_pendle_build_swap_multisign"],
|
|
7486
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteSwap" },
|
|
7487
|
+
inputZod: mcpPendleQuoteSwapInputSchema,
|
|
7488
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7489
|
+
}),
|
|
7490
|
+
defineMcpTool({
|
|
7491
|
+
name: "ctm_pendle_quote_mint_py",
|
|
7492
|
+
actionId: "pendle.quote-mint-py",
|
|
7493
|
+
protocolId: "pendle",
|
|
7494
|
+
chainCategory: "evm",
|
|
7495
|
+
description: "Pendle V2 Convert quote: mint PT+YT from an underlying or SY.",
|
|
7496
|
+
prerequisites: ["activate_tool_group pendle:mint"],
|
|
7497
|
+
followUp: ["ctm_pendle_build_mint_py_multisign"],
|
|
7498
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteMintPy" },
|
|
7499
|
+
inputZod: mcpPendleQuoteMintPyInputSchema,
|
|
7500
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7501
|
+
}),
|
|
7502
|
+
defineMcpTool({
|
|
7503
|
+
name: "ctm_pendle_quote_redeem_py",
|
|
7504
|
+
actionId: "pendle.quote-redeem-py",
|
|
7505
|
+
protocolId: "pendle",
|
|
7506
|
+
chainCategory: "evm",
|
|
7507
|
+
description: "Pendle V2 Convert quote: redeem PT+YT to underlying or SY. After expiry, pass amountYtHuman 0 (PT only).",
|
|
7508
|
+
prerequisites: ["activate_tool_group pendle:mint"],
|
|
7509
|
+
followUp: ["ctm_pendle_build_redeem_py_multisign"],
|
|
7510
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteRedeemPy" },
|
|
7511
|
+
inputZod: mcpPendleQuoteRedeemPyInputSchema,
|
|
7512
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7513
|
+
}),
|
|
7514
|
+
defineMcpTool({
|
|
7515
|
+
name: "ctm_pendle_quote_mint_sy",
|
|
7516
|
+
actionId: "pendle.quote-mint-sy",
|
|
7517
|
+
protocolId: "pendle",
|
|
7518
|
+
chainCategory: "evm",
|
|
7519
|
+
description: "Pendle V2 Convert quote: wrap underlying into SY.",
|
|
7520
|
+
prerequisites: ["activate_tool_group pendle:mint"],
|
|
7521
|
+
followUp: ["ctm_pendle_build_mint_sy_multisign"],
|
|
7522
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteMintSy" },
|
|
7523
|
+
inputZod: mcpPendleQuoteMintSyInputSchema,
|
|
7524
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7525
|
+
}),
|
|
7526
|
+
defineMcpTool({
|
|
7527
|
+
name: "ctm_pendle_quote_redeem_sy",
|
|
7528
|
+
actionId: "pendle.quote-redeem-sy",
|
|
7529
|
+
protocolId: "pendle",
|
|
7530
|
+
chainCategory: "evm",
|
|
7531
|
+
description: "Pendle V2 Convert quote: unwrap SY to underlying.",
|
|
7532
|
+
prerequisites: ["activate_tool_group pendle:mint"],
|
|
7533
|
+
followUp: ["ctm_pendle_build_redeem_sy_multisign"],
|
|
7534
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteRedeemSy" },
|
|
7535
|
+
inputZod: mcpPendleQuoteRedeemSyInputSchema,
|
|
7536
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7537
|
+
}),
|
|
7538
|
+
defineMcpTool({
|
|
7539
|
+
name: "ctm_pendle_quote_add_liquidity",
|
|
7540
|
+
actionId: "pendle.quote-add-liquidity",
|
|
7541
|
+
protocolId: "pendle",
|
|
7542
|
+
chainCategory: "evm",
|
|
7543
|
+
description: "Pendle V2 Convert quote: add LP. keepYt+yt = zero-price-impact (keep YT in the wallet instead of selling it into the AMM).",
|
|
7544
|
+
prerequisites: ["activate_tool_group pendle:lp"],
|
|
7545
|
+
followUp: ["ctm_pendle_build_add_liquidity_multisign"],
|
|
7546
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteAddLiquidity" },
|
|
7547
|
+
inputZod: mcpPendleQuoteAddLiquidityInputSchema,
|
|
7548
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7549
|
+
}),
|
|
7550
|
+
defineMcpTool({
|
|
7551
|
+
name: "ctm_pendle_quote_remove_liquidity",
|
|
7552
|
+
actionId: "pendle.quote-remove-liquidity",
|
|
7553
|
+
protocolId: "pendle",
|
|
7554
|
+
chainCategory: "evm",
|
|
7555
|
+
description: "Pendle V2 Convert quote: remove LP to tokensOut (use underlying). After expiry still works. Copy market + lpAmountHuman from ctm_pendle_fetch_positions.",
|
|
7556
|
+
prerequisites: ["activate_tool_group pendle:lp", "market + lpAmountHuman from fetch_positions or the user"],
|
|
7557
|
+
followUp: ["ctm_pendle_build_remove_liquidity_multisign"],
|
|
7558
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleQuoteRemoveLiquidity" },
|
|
7559
|
+
inputZod: mcpPendleQuoteRemoveLiquidityInputSchema,
|
|
7560
|
+
outputZod: mcpPendleQuoteOutputSchema
|
|
7561
|
+
}),
|
|
7562
|
+
defineMcpTool({
|
|
7563
|
+
name: "ctm_pendle_fetch_positions",
|
|
7564
|
+
actionId: "pendle.fetch-positions",
|
|
7565
|
+
protocolId: "pendle",
|
|
7566
|
+
chainCategory: "evm",
|
|
7567
|
+
description: "Pendle V2: this wallet\u2019s LP holdings from official Core dashboard (including matured). Not the node token list. Use before remove LP. ~4 CU. Do not treat claimable amounts here as a live redeem quote.",
|
|
7568
|
+
prerequisites: ["activate_tool_group pendle:lp", "user address", "optional chainId"],
|
|
7569
|
+
followUp: ["ctm_pendle_quote_remove_liquidity"],
|
|
7570
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleFetchPositions" },
|
|
7571
|
+
inputZod: mcpPendleFetchPositionsInputSchema,
|
|
7572
|
+
outputZod: mcpPendleFetchPositionsOutputSchema
|
|
7573
|
+
}),
|
|
7574
|
+
defineMultisignSubmitMcpTool({
|
|
7575
|
+
name: "ctm_pendle_build_swap_multisign",
|
|
7576
|
+
actionId: "pendle.swap",
|
|
7577
|
+
protocolId: "pendle",
|
|
7578
|
+
chainCategory: "evm",
|
|
7579
|
+
description: "Pendle V2: approve Convert tx.to then swap token \u2194 PT/YT. 30-min multiSign expiry unless expiryDate is set. Fresh Convert at build time.",
|
|
7580
|
+
prerequisites: [
|
|
7581
|
+
"ctm_pendle_quote_swap",
|
|
7582
|
+
"get_multi_sign_gas_options + user confirms useCustomGas and 30-minute deadline",
|
|
7583
|
+
"keyGenId + chainId + purposeText + slippagePercent"
|
|
7584
|
+
],
|
|
7585
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleSwapBatch" },
|
|
7586
|
+
inputZod: mcpPendleBuildSwapMultisignInputSchema
|
|
7587
|
+
}),
|
|
7588
|
+
defineMultisignSubmitMcpTool({
|
|
7589
|
+
name: "ctm_pendle_build_mint_py_multisign",
|
|
7590
|
+
actionId: "pendle.mint-py",
|
|
7591
|
+
protocolId: "pendle",
|
|
7592
|
+
chainCategory: "evm",
|
|
7593
|
+
description: "Pendle V2: mint PT+YT multiSign (approve + Convert). 30-min expiry default.",
|
|
7594
|
+
prerequisites: ["ctm_pendle_quote_mint_py", "keyGenId + purposeText + slippagePercent"],
|
|
7595
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleMintPyBatch" },
|
|
7596
|
+
inputZod: mcpPendleBuildMintPyMultisignInputSchema
|
|
7597
|
+
}),
|
|
7598
|
+
defineMultisignSubmitMcpTool({
|
|
7599
|
+
name: "ctm_pendle_build_redeem_py_multisign",
|
|
7600
|
+
actionId: "pendle.redeem-py",
|
|
7601
|
+
protocolId: "pendle",
|
|
7602
|
+
chainCategory: "evm",
|
|
7603
|
+
description: "Pendle V2: redeem PT+YT multiSign. After expiry, pass amountYtHuman 0 (PT only). 30-min expiry default.",
|
|
7604
|
+
prerequisites: ["ctm_pendle_quote_redeem_py", "keyGenId + purposeText + slippagePercent"],
|
|
7605
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleRedeemPyBatch" },
|
|
7606
|
+
inputZod: mcpPendleBuildRedeemPyMultisignInputSchema
|
|
7607
|
+
}),
|
|
7608
|
+
defineMultisignSubmitMcpTool({
|
|
7609
|
+
name: "ctm_pendle_build_mint_sy_multisign",
|
|
7610
|
+
actionId: "pendle.mint-sy",
|
|
7611
|
+
protocolId: "pendle",
|
|
7612
|
+
chainCategory: "evm",
|
|
7613
|
+
description: "Pendle V2: mint SY multiSign. 30-min expiry default.",
|
|
7614
|
+
prerequisites: ["ctm_pendle_quote_mint_sy", "keyGenId + purposeText + slippagePercent"],
|
|
7615
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleMintSyBatch" },
|
|
7616
|
+
inputZod: mcpPendleBuildMintSyMultisignInputSchema
|
|
7617
|
+
}),
|
|
7618
|
+
defineMultisignSubmitMcpTool({
|
|
7619
|
+
name: "ctm_pendle_build_redeem_sy_multisign",
|
|
7620
|
+
actionId: "pendle.redeem-sy",
|
|
7621
|
+
protocolId: "pendle",
|
|
7622
|
+
chainCategory: "evm",
|
|
7623
|
+
description: "Pendle V2: redeem SY multiSign. 30-min expiry default.",
|
|
7624
|
+
prerequisites: ["ctm_pendle_quote_redeem_sy", "keyGenId + purposeText + slippagePercent"],
|
|
7625
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleRedeemSyBatch" },
|
|
7626
|
+
inputZod: mcpPendleBuildRedeemSyMultisignInputSchema
|
|
7627
|
+
}),
|
|
7628
|
+
defineMultisignSubmitMcpTool({
|
|
7629
|
+
name: "ctm_pendle_build_add_liquidity_multisign",
|
|
7630
|
+
actionId: "pendle.add-liquidity",
|
|
7631
|
+
protocolId: "pendle",
|
|
7632
|
+
chainCategory: "evm",
|
|
7633
|
+
description: "Pendle V2: add LP multiSign. 30-min expiry default.",
|
|
7634
|
+
prerequisites: ["ctm_pendle_quote_add_liquidity", "keyGenId + purposeText + slippagePercent"],
|
|
7635
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleAddLiquidityBatch" },
|
|
7636
|
+
inputZod: mcpPendleBuildAddLiquidityMultisignInputSchema
|
|
7637
|
+
}),
|
|
7638
|
+
defineMultisignSubmitMcpTool({
|
|
7639
|
+
name: "ctm_pendle_build_remove_liquidity_multisign",
|
|
7640
|
+
actionId: "pendle.remove-liquidity",
|
|
7641
|
+
protocolId: "pendle",
|
|
7642
|
+
chainCategory: "evm",
|
|
7643
|
+
description: "Pendle V2: remove LP multiSign. 30-min expiry default.",
|
|
7644
|
+
prerequisites: ["ctm_pendle_quote_remove_liquidity", "keyGenId + purposeText + slippagePercent"],
|
|
7645
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleRemoveLiquidityBatch" },
|
|
7646
|
+
inputZod: mcpPendleBuildRemoveLiquidityMultisignInputSchema
|
|
7647
|
+
}),
|
|
7648
|
+
defineMcpTool({
|
|
7649
|
+
name: "ctm_pendle_fetch_merkle_rewards",
|
|
7650
|
+
actionId: "pendle.fetch-merkle-rewards",
|
|
7651
|
+
protocolId: "pendle",
|
|
7652
|
+
chainCategory: "evm",
|
|
7653
|
+
description: "Pendle V2: list off-chain airdrop rows for a wallet (token, amount). Informational only \u2014 Core has no claim proofs. Tell the user to claim airdrops on app.pendle.finance. Do not invent a claim tx. On-chain SY/YT/LP incentives use ctm_pendle_build_redeem_rewards_multisign.",
|
|
7654
|
+
prerequisites: ["activate_tool_group pendle:rewards", "user address"],
|
|
7655
|
+
followUp: [],
|
|
7656
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "pendleFetchMerkleRewards" },
|
|
7657
|
+
inputZod: mcpPendleFetchMerkleRewardsInputSchema,
|
|
7658
|
+
outputZod: mcpPendleFetchMerkleRewardsOutputSchema
|
|
7659
|
+
}),
|
|
7660
|
+
defineMultisignSubmitMcpTool({
|
|
7661
|
+
name: "ctm_pendle_build_redeem_rewards_multisign",
|
|
7662
|
+
actionId: "pendle.redeem-rewards",
|
|
7663
|
+
protocolId: "pendle",
|
|
7664
|
+
chainCategory: "evm",
|
|
7665
|
+
description: "Pendle V2: redeem on-chain interest and incentives from SY, YT, and LP (usually PENDLE) via Hosted SDK. Not merkle airdrops. 30-min expiry default.",
|
|
7666
|
+
prerequisites: [
|
|
7667
|
+
"activate_tool_group pendle:rewards",
|
|
7668
|
+
"sys / yts / markets from fetch_markets or search",
|
|
7669
|
+
"keyGenId + purposeText"
|
|
7670
|
+
],
|
|
7671
|
+
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleRedeemRewardsBatch" },
|
|
7672
|
+
inputZod: mcpPendleBuildRedeemRewardsMultisignInputSchema
|
|
6678
7673
|
})
|
|
6679
7674
|
];
|
|
6680
7675
|
var MCP_TOOL_DEFINITIONS = [
|
|
@@ -6925,6 +7920,17 @@ registerProtocolModule(ethenaProtocolModule);
|
|
|
6925
7920
|
function isMapleSyrupSupportedChain(chainId) {
|
|
6926
7921
|
return chainId === 1 || chainId === 11155111;
|
|
6927
7922
|
}
|
|
7923
|
+
function matchesAssetFilter(opts) {
|
|
7924
|
+
const f = (opts.filter ?? "").trim();
|
|
7925
|
+
if (!f) return true;
|
|
7926
|
+
const addr = (opts.address ?? "").trim();
|
|
7927
|
+
if (isAddress(f) && isAddress(addr)) {
|
|
7928
|
+
return getAddress(addr) === getAddress(f);
|
|
7929
|
+
}
|
|
7930
|
+
const sym = (opts.symbol ?? "").trim();
|
|
7931
|
+
if (!sym) return false;
|
|
7932
|
+
return sym.toLowerCase() === f.toLowerCase();
|
|
7933
|
+
}
|
|
6928
7934
|
|
|
6929
7935
|
// src/protocols/evm/maple/index.ts
|
|
6930
7936
|
var MAPLE_PROTOCOL_ID = "maple-syrup";
|
|
@@ -8292,34 +9298,14 @@ var veniceProtocolModule = {
|
|
|
8292
9298
|
]
|
|
8293
9299
|
};
|
|
8294
9300
|
registerProtocolModule(veniceProtocolModule);
|
|
8295
|
-
var AERODROME_PROTOCOL_ID = "aerodrome";
|
|
8296
|
-
var AERODROME_CHAIN_ID = 8453;
|
|
8297
|
-
var AERODROME_WETH_BASE = "0x4200000000000000000000000000000000000006";
|
|
8298
|
-
var AERODROME_USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
8299
|
-
function isAerodromeChainSupported(chainId) {
|
|
8300
|
-
const n = typeof chainId === "number" ? chainId : Number.parseInt(String(chainId), 10);
|
|
8301
|
-
return n === AERODROME_CHAIN_ID;
|
|
8302
|
-
}
|
|
8303
|
-
var AERODROME_BASE_ADDRESSES_FALLBACK = {
|
|
8304
|
-
aero: "0x940181a94A35A4569E4529A3CDfB74e38FD98631"};
|
|
8305
|
-
var AERODROME_COINBASE_STOCK_TOKENS = [
|
|
8306
|
-
{ symbol: "AAPLc", name: "Apple Inc.", address: "0xb200000000000000000000C2e324d24d7eEcd1fb" },
|
|
8307
|
-
{ symbol: "NVDAc", name: "NVIDIA Corporation", address: "0xb20000000000000000000078ee7ce2fE4908108C" },
|
|
8308
|
-
{ symbol: "METAc", name: "Meta Platforms Inc.", address: "0xb2000000000000000000008bC8786B856E61707C" },
|
|
8309
|
-
{ symbol: "GOOGLc", name: "Alphabet Inc.", address: "0xb2000000000000000000002D0BA3164cc74f58B7" },
|
|
8310
|
-
{ symbol: "AMZNc", name: "Amazon.com Inc.", address: "0xb200000000000000000000d9192b6B456483C2E8" },
|
|
8311
|
-
{ symbol: "TSLAc", name: "Tesla Inc.", address: "0xb2000000000000000000001e800a7f5189430cD0" },
|
|
8312
|
-
{ symbol: "MSFTc", name: "Microsoft Corporation", address: "0xB200000000000000000000Ab99cFa739E253872B" },
|
|
8313
|
-
{ symbol: "COINc", name: "Coinbase Global Inc.", address: "0xb200000000000000000000c85a31389D71F3ecfb" },
|
|
8314
|
-
{ symbol: "MSTRc", name: "Strategy Inc.", address: "0xb2000000000000000000004884b426556b92883d" },
|
|
8315
|
-
{ symbol: "CRCLc", name: "Circle Internet Group Inc.", address: "0xB20000000000000000000019f6E7C675b73C2e4D" },
|
|
8316
|
-
{ symbol: "INTCc", name: "Intel Corporation", address: "0xB2000000000000000000004AFF16039bA04bdFBc" },
|
|
8317
|
-
{ symbol: "SNDKc", name: "Sandisk Corporation", address: "0xb200000000000000000000397293Cb8cda9a10c5" },
|
|
8318
|
-
{ symbol: "SPCXc", name: "Space Exploration Technologies Corp.", address: "0xb2000000000000000000007b9fcbd005511aCBd5" }
|
|
8319
|
-
];
|
|
8320
|
-
var AERODROME_COINBASE_STOCK_DECIMALS = 8;
|
|
8321
9301
|
|
|
8322
9302
|
// src/protocols/evm/aerodrome/index.ts
|
|
9303
|
+
init_support2();
|
|
9304
|
+
init_support2();
|
|
9305
|
+
init_addresses();
|
|
9306
|
+
init_stockTokens();
|
|
9307
|
+
init_discover();
|
|
9308
|
+
init_yields();
|
|
8323
9309
|
var aerodromeProtocolModule = {
|
|
8324
9310
|
id: AERODROME_PROTOCOL_ID,
|
|
8325
9311
|
chainCategory: "evm",
|
|
@@ -8864,11 +9850,18 @@ var cometInterfaceAbi = parseAbi([
|
|
|
8864
9850
|
"function isBorrowCollateralized(address account) view returns (bool)",
|
|
8865
9851
|
"function isLiquidatable(address account) view returns (bool)",
|
|
8866
9852
|
"function getAssetInfo(uint8 i) view returns ((uint8 offset, address asset, address priceFeed, uint64 scale, uint64 borrowCollateralFactor, uint64 liquidateCollateralFactor, uint64 liquidationFactor, uint128 supplyCap))",
|
|
8867
|
-
"function getAssetInfoByAddress(address asset) view returns ((uint8 offset, address asset, address priceFeed, uint64 scale, uint64 borrowCollateralFactor, uint64 liquidateCollateralFactor, uint64 liquidationFactor, uint128 supplyCap))"
|
|
9853
|
+
"function getAssetInfoByAddress(address asset) view returns ((uint8 offset, address asset, address priceFeed, uint64 scale, uint64 borrowCollateralFactor, uint64 liquidateCollateralFactor, uint64 liquidationFactor, uint128 supplyCap))",
|
|
9854
|
+
"function baseTrackingSupplySpeed() view returns (uint256)",
|
|
9855
|
+
"function baseTrackingBorrowSpeed() view returns (uint256)",
|
|
9856
|
+
"function baseIndexScale() view returns (uint64)",
|
|
9857
|
+
"function trackingIndexScale() view returns (uint256)",
|
|
9858
|
+
"function totalSupply() view returns (uint256)",
|
|
9859
|
+
"function totalBorrow() view returns (uint256)"
|
|
8868
9860
|
]);
|
|
8869
|
-
parseAbi([
|
|
9861
|
+
var cometRewardsAbi = parseAbi([
|
|
8870
9862
|
"function getRewardOwed(address comet, address account) view returns ((address token, uint256 owed))",
|
|
8871
|
-
"function claim(address comet, address src, bool shouldAccrue)"
|
|
9863
|
+
"function claim(address comet, address src, bool shouldAccrue)",
|
|
9864
|
+
"function rewardConfig(address comet) view returns ((address token, uint64 rescaleFactor, bool shouldUpscale))"
|
|
8872
9865
|
]);
|
|
8873
9866
|
parseAbi([
|
|
8874
9867
|
"function invoke(bytes32[] actions, bytes[] data) payable"
|
|
@@ -8910,6 +9903,22 @@ function compoundV3UtilizationToDecimal(utilization) {
|
|
|
8910
9903
|
function compoundV3FactorToPercent(factor) {
|
|
8911
9904
|
return Number(factor) / 1e16;
|
|
8912
9905
|
}
|
|
9906
|
+
var COMPOUND_V3_PRICE_SCALE = 1e8;
|
|
9907
|
+
var COMPOUND_V3_TRACKING_INDEX_SCALE = 1e15;
|
|
9908
|
+
function compoundV3TrackingSpeedToRewardAprPercent(args) {
|
|
9909
|
+
if (args.trackingSpeed <= 0n || args.totalBase <= 0n || args.basePrice <= 0n || args.rewardPrice <= 0n) {
|
|
9910
|
+
return null;
|
|
9911
|
+
}
|
|
9912
|
+
const scale = Number(args.trackingIndexScale > 0n ? args.trackingIndexScale : BigInt(COMPOUND_V3_TRACKING_INDEX_SCALE));
|
|
9913
|
+
if (!Number.isFinite(scale) || scale <= 0) return null;
|
|
9914
|
+
const tokensPerYear = Number(args.trackingSpeed) / scale * COMPOUND_V3_SECONDS_PER_YEAR;
|
|
9915
|
+
const rewardUsdPerYear = tokensPerYear * (Number(args.rewardPrice) / COMPOUND_V3_PRICE_SCALE);
|
|
9916
|
+
const totalUsd = Number(args.totalBase) / 10 ** args.baseDecimals * (Number(args.basePrice) / COMPOUND_V3_PRICE_SCALE);
|
|
9917
|
+
if (!Number.isFinite(rewardUsdPerYear) || !Number.isFinite(totalUsd) || totalUsd <= 0) return null;
|
|
9918
|
+
const pct = rewardUsdPerYear / totalUsd * 100;
|
|
9919
|
+
if (!Number.isFinite(pct) || pct < 0) return null;
|
|
9920
|
+
return pct;
|
|
9921
|
+
}
|
|
8913
9922
|
|
|
8914
9923
|
// src/protocols/evm/compound-v3/subgraph.ts
|
|
8915
9924
|
var COMPOUND_V3_SUBGRAPH_BY_CHAIN = {
|
|
@@ -8968,7 +9977,7 @@ async function enrichMarketOnChain(client, market) {
|
|
|
8968
9977
|
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "numAssets" }),
|
|
8969
9978
|
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "decimals" })
|
|
8970
9979
|
]);
|
|
8971
|
-
const [supplyRate, borrowRate, baseMeta, baseFeed] = await Promise.all([
|
|
9980
|
+
const [supplyRate, borrowRate, baseMeta, baseFeed, supplySpeed, borrowSpeed, totalSupply, totalBorrow, trackingScale] = await Promise.all([
|
|
8972
9981
|
client.readContract({
|
|
8973
9982
|
address: comet,
|
|
8974
9983
|
abi: cometInterfaceAbi,
|
|
@@ -8982,7 +9991,12 @@ async function enrichMarketOnChain(client, market) {
|
|
|
8982
9991
|
args: [utilization]
|
|
8983
9992
|
}),
|
|
8984
9993
|
readTokenMeta(client, getAddress(baseToken)),
|
|
8985
|
-
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "baseTokenPriceFeed" })
|
|
9994
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "baseTokenPriceFeed" }),
|
|
9995
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "baseTrackingSupplySpeed" }).catch(() => 0n),
|
|
9996
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "baseTrackingBorrowSpeed" }).catch(() => 0n),
|
|
9997
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "totalSupply" }).catch(() => 0n),
|
|
9998
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "totalBorrow" }).catch(() => 0n),
|
|
9999
|
+
client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "trackingIndexScale" }).catch(() => BigInt(COMPOUND_V3_TRACKING_INDEX_SCALE))
|
|
8986
10000
|
]);
|
|
8987
10001
|
const basePrice = await client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "getPrice", args: [baseFeed] }).catch(() => 0n);
|
|
8988
10002
|
const assets = [
|
|
@@ -9017,6 +10031,47 @@ async function enrichMarketOnChain(client, market) {
|
|
|
9017
10031
|
role: "collateral"
|
|
9018
10032
|
});
|
|
9019
10033
|
}
|
|
10034
|
+
let rewardPrice = 0n;
|
|
10035
|
+
try {
|
|
10036
|
+
const cfg = await client.readContract({
|
|
10037
|
+
address: getAddress(market.rewards),
|
|
10038
|
+
abi: cometRewardsAbi,
|
|
10039
|
+
functionName: "rewardConfig",
|
|
10040
|
+
args: [comet]
|
|
10041
|
+
});
|
|
10042
|
+
const rewardToken = getAddress(cfg.token);
|
|
10043
|
+
const listed = assets.find((a) => a.asset.toLowerCase() === rewardToken.toLowerCase());
|
|
10044
|
+
if (listed && listed.priceRaw !== "0") {
|
|
10045
|
+
rewardPrice = BigInt(listed.priceRaw);
|
|
10046
|
+
} else {
|
|
10047
|
+
const info = await client.readContract({
|
|
10048
|
+
address: comet,
|
|
10049
|
+
abi: cometInterfaceAbi,
|
|
10050
|
+
functionName: "getAssetInfoByAddress",
|
|
10051
|
+
args: [rewardToken]
|
|
10052
|
+
});
|
|
10053
|
+
rewardPrice = await client.readContract({ address: comet, abi: cometInterfaceAbi, functionName: "getPrice", args: [info.priceFeed] }).catch(() => 0n);
|
|
10054
|
+
}
|
|
10055
|
+
} catch {
|
|
10056
|
+
rewardPrice = 0n;
|
|
10057
|
+
}
|
|
10058
|
+
const baseDecimals = Number(decimals) || baseMeta.decimals;
|
|
10059
|
+
const supplyRewardApr = compoundV3TrackingSpeedToRewardAprPercent({
|
|
10060
|
+
trackingSpeed: supplySpeed,
|
|
10061
|
+
trackingIndexScale: trackingScale,
|
|
10062
|
+
totalBase: totalSupply,
|
|
10063
|
+
baseDecimals,
|
|
10064
|
+
basePrice,
|
|
10065
|
+
rewardPrice
|
|
10066
|
+
});
|
|
10067
|
+
const borrowRewardApr = compoundV3TrackingSpeedToRewardAprPercent({
|
|
10068
|
+
trackingSpeed: borrowSpeed,
|
|
10069
|
+
trackingIndexScale: trackingScale,
|
|
10070
|
+
totalBase: totalBorrow,
|
|
10071
|
+
baseDecimals,
|
|
10072
|
+
basePrice,
|
|
10073
|
+
rewardPrice
|
|
10074
|
+
});
|
|
9020
10075
|
return {
|
|
9021
10076
|
chainId: market.chainId,
|
|
9022
10077
|
slug: market.slug,
|
|
@@ -9028,6 +10083,8 @@ async function enrichMarketOnChain(client, market) {
|
|
|
9028
10083
|
utilization: compoundV3UtilizationToDecimal(utilization),
|
|
9029
10084
|
supplyAprPercent: compoundV3AprToPercentLabel(compoundV3RatePerSecondToAprDecimal(supplyRate)),
|
|
9030
10085
|
borrowAprPercent: compoundV3AprToPercentLabel(compoundV3RatePerSecondToAprDecimal(borrowRate)),
|
|
10086
|
+
supplyRewardAprPercent: supplyRewardApr == null ? null : compoundV3AprToPercentLabel(supplyRewardApr / 100),
|
|
10087
|
+
borrowRewardAprPercent: borrowRewardApr == null ? null : compoundV3AprToPercentLabel(borrowRewardApr / 100),
|
|
9031
10088
|
assets
|
|
9032
10089
|
};
|
|
9033
10090
|
}
|
|
@@ -9043,6 +10100,8 @@ function registryMarketRow(market) {
|
|
|
9043
10100
|
utilization: null,
|
|
9044
10101
|
supplyAprPercent: null,
|
|
9045
10102
|
borrowAprPercent: null,
|
|
10103
|
+
supplyRewardAprPercent: null,
|
|
10104
|
+
borrowRewardAprPercent: null,
|
|
9046
10105
|
assets: market.baseToken ? [
|
|
9047
10106
|
{
|
|
9048
10107
|
asset: market.baseToken,
|
|
@@ -9069,7 +10128,7 @@ async function compoundV3FetchMarketsSummary(args) {
|
|
|
9069
10128
|
if (!args.rpcUrl?.trim()) {
|
|
9070
10129
|
return {
|
|
9071
10130
|
markets: registry.map(registryMarketRow),
|
|
9072
|
-
notes: "Registry from official comet deployments. Pass rpcUrl (MCP server injects it) to enrich APRs and collaterals." + subgraphNote
|
|
10131
|
+
notes: "Registry from official comet deployments. Pass rpcUrl (MCP server injects it) to enrich APRs, reward APRs, and collaterals." + subgraphNote
|
|
9073
10132
|
};
|
|
9074
10133
|
}
|
|
9075
10134
|
const client = publicClient(args.rpcUrl, args.chainId);
|
|
@@ -9083,7 +10142,7 @@ async function compoundV3FetchMarketsSummary(args) {
|
|
|
9083
10142
|
}
|
|
9084
10143
|
return {
|
|
9085
10144
|
markets,
|
|
9086
|
-
notes: "Comet proxy addresses from official deployments;
|
|
10145
|
+
notes: "Comet proxy addresses from official deployments; base supply/borrow APR and COMP incentive APR from on-chain CometInterface. Incentive APR is extra and variable; null when the reward token has no on-chain price feed." + subgraphNote
|
|
9087
10146
|
};
|
|
9088
10147
|
}
|
|
9089
10148
|
var chainAssetCache2 = /* @__PURE__ */ new Map();
|
|
@@ -9170,6 +10229,347 @@ var compoundV3ProtocolModule = {
|
|
|
9170
10229
|
]
|
|
9171
10230
|
};
|
|
9172
10231
|
registerProtocolModule(compoundV3ProtocolModule);
|
|
10232
|
+
|
|
10233
|
+
// src/protocols/evm/pendle/support.ts
|
|
10234
|
+
var PENDLE_PROTOCOL_ID = "pendle";
|
|
10235
|
+
var PENDLE_CORE_API_BASE = "https://api-v2.pendle.finance/core";
|
|
10236
|
+
var PENDLE_LISTING_CAP = 100;
|
|
10237
|
+
var PENDLE_LISTING_MAX_PAGES = 8;
|
|
10238
|
+
var PENDLE_ICON_CACHE_MS = 12 * 60 * 1e3;
|
|
10239
|
+
var PENDLE_CHAIN_CACHE_MS = 30 * 60 * 1e3;
|
|
10240
|
+
function parsePendleAssetId(id) {
|
|
10241
|
+
const raw = (id ?? "").trim();
|
|
10242
|
+
const dash = raw.indexOf("-");
|
|
10243
|
+
if (dash <= 0) return null;
|
|
10244
|
+
const chainId = Number.parseInt(raw.slice(0, dash), 10);
|
|
10245
|
+
const address = raw.slice(dash + 1).trim();
|
|
10246
|
+
if (!Number.isFinite(chainId) || chainId <= 0 || !address) return null;
|
|
10247
|
+
return { chainId, address };
|
|
10248
|
+
}
|
|
10249
|
+
|
|
10250
|
+
// src/protocols/evm/pendle/api.ts
|
|
10251
|
+
var FETCH_TIMEOUT_MS = 12e4;
|
|
10252
|
+
var PendleApiError = class extends Error {
|
|
10253
|
+
status;
|
|
10254
|
+
path;
|
|
10255
|
+
constructor(message, status, path) {
|
|
10256
|
+
super(message);
|
|
10257
|
+
this.name = "PendleApiError";
|
|
10258
|
+
this.status = status;
|
|
10259
|
+
this.path = path;
|
|
10260
|
+
}
|
|
10261
|
+
};
|
|
10262
|
+
function sleep(ms) {
|
|
10263
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10264
|
+
}
|
|
10265
|
+
function queryString(params) {
|
|
10266
|
+
const q = new URLSearchParams();
|
|
10267
|
+
for (const [k, v] of Object.entries(params)) {
|
|
10268
|
+
if (v === void 0 || v === "") continue;
|
|
10269
|
+
q.set(k, String(v));
|
|
10270
|
+
}
|
|
10271
|
+
const s = q.toString();
|
|
10272
|
+
return s ? `?${s}` : "";
|
|
10273
|
+
}
|
|
10274
|
+
async function pendleCoreFetch(args) {
|
|
10275
|
+
const path = args.path.startsWith("/") ? args.path : `/${args.path}`;
|
|
10276
|
+
const url = `${PENDLE_CORE_API_BASE}${path}${queryString(args.query ?? {})}`;
|
|
10277
|
+
const headers = { Accept: "application/json" };
|
|
10278
|
+
if (args.apiKey?.trim()) headers.Authorization = `Bearer ${args.apiKey.trim()}`;
|
|
10279
|
+
if (args.body !== void 0) headers["Content-Type"] = "application/json";
|
|
10280
|
+
let lastError;
|
|
10281
|
+
for (let attempt = 0; attempt < 4; attempt++) {
|
|
10282
|
+
const ac = new AbortController();
|
|
10283
|
+
const timer = setTimeout(() => ac.abort(), FETCH_TIMEOUT_MS);
|
|
10284
|
+
try {
|
|
10285
|
+
const res = await fetch(url, {
|
|
10286
|
+
method: args.method ?? "GET",
|
|
10287
|
+
headers,
|
|
10288
|
+
body: args.body === void 0 ? void 0 : JSON.stringify(args.body),
|
|
10289
|
+
signal: ac.signal
|
|
10290
|
+
});
|
|
10291
|
+
if (res.status === 429) {
|
|
10292
|
+
const wait = Math.min(8e3, 500 * 2 ** attempt);
|
|
10293
|
+
await sleep(wait);
|
|
10294
|
+
lastError = new PendleApiError(`Pendle API rate limited (429) on ${path}`, 429, path);
|
|
10295
|
+
continue;
|
|
10296
|
+
}
|
|
10297
|
+
const text = await res.text();
|
|
10298
|
+
if (!res.ok) {
|
|
10299
|
+
throw new PendleApiError(
|
|
10300
|
+
`Pendle API ${res.status} ${path}: ${text.slice(0, 400)}`,
|
|
10301
|
+
res.status,
|
|
10302
|
+
path
|
|
10303
|
+
);
|
|
10304
|
+
}
|
|
10305
|
+
if (!text.trim()) return {};
|
|
10306
|
+
return JSON.parse(text);
|
|
10307
|
+
} catch (err) {
|
|
10308
|
+
lastError = err;
|
|
10309
|
+
if (err instanceof PendleApiError && err.status !== 429) throw err;
|
|
10310
|
+
if (attempt < 3 && (err instanceof PendleApiError || err?.name === "AbortError")) {
|
|
10311
|
+
await sleep(Math.min(8e3, 400 * 2 ** attempt));
|
|
10312
|
+
continue;
|
|
10313
|
+
}
|
|
10314
|
+
throw err;
|
|
10315
|
+
} finally {
|
|
10316
|
+
clearTimeout(timer);
|
|
10317
|
+
}
|
|
10318
|
+
}
|
|
10319
|
+
throw lastError instanceof Error ? lastError : new Error(String(lastError));
|
|
10320
|
+
}
|
|
10321
|
+
|
|
10322
|
+
// src/protocols/evm/pendle/discover.ts
|
|
10323
|
+
var marketsCacheByChain = /* @__PURE__ */ new Map();
|
|
10324
|
+
var chainIdsCache = null;
|
|
10325
|
+
function asRecord(v) {
|
|
10326
|
+
return v && typeof v === "object" && !Array.isArray(v) ? v : null;
|
|
10327
|
+
}
|
|
10328
|
+
function asNumber(v) {
|
|
10329
|
+
if (typeof v === "number" && Number.isFinite(v)) return v;
|
|
10330
|
+
if (typeof v === "string" && v.trim()) {
|
|
10331
|
+
const n = Number.parseFloat(v);
|
|
10332
|
+
return Number.isFinite(n) ? n : null;
|
|
10333
|
+
}
|
|
10334
|
+
return null;
|
|
10335
|
+
}
|
|
10336
|
+
function asString(v) {
|
|
10337
|
+
if (typeof v === "string" && v.trim()) return v.trim();
|
|
10338
|
+
return null;
|
|
10339
|
+
}
|
|
10340
|
+
function asExpiry(v) {
|
|
10341
|
+
const s = asString(v);
|
|
10342
|
+
if (s) return s;
|
|
10343
|
+
const n = asNumber(v);
|
|
10344
|
+
if (n == null) return null;
|
|
10345
|
+
const ms = n < 1e12 ? n * 1e3 : n;
|
|
10346
|
+
return new Date(ms).toISOString();
|
|
10347
|
+
}
|
|
10348
|
+
function pendleMarketExpiryMs(expiry) {
|
|
10349
|
+
const raw = (expiry ?? "").trim();
|
|
10350
|
+
if (!raw) return null;
|
|
10351
|
+
if (/^\d+$/.test(raw)) {
|
|
10352
|
+
const n = Number(raw);
|
|
10353
|
+
return n < 1e12 ? n * 1e3 : n;
|
|
10354
|
+
}
|
|
10355
|
+
const t = Date.parse(raw);
|
|
10356
|
+
return Number.isFinite(t) ? t : null;
|
|
10357
|
+
}
|
|
10358
|
+
function isPendleMarketExpired(row, nowMs = Date.now()) {
|
|
10359
|
+
const t = pendleMarketExpiryMs(row.expiry);
|
|
10360
|
+
if (t == null) return false;
|
|
10361
|
+
return t <= nowMs;
|
|
10362
|
+
}
|
|
10363
|
+
function marketMatchesPin(row, address) {
|
|
10364
|
+
const a = address.trim().toLowerCase();
|
|
10365
|
+
if (!a) return false;
|
|
10366
|
+
return [row.address, row.pt, row.yt, row.sy].some((x) => x.toLowerCase() === a);
|
|
10367
|
+
}
|
|
10368
|
+
function selectPendleListingMarkets(rows, args = {}) {
|
|
10369
|
+
const nowMs = args.nowMs ?? Date.now();
|
|
10370
|
+
const cap = args.cap ?? PENDLE_LISTING_CAP;
|
|
10371
|
+
const pins = (args.includeAddresses ?? []).map((a) => a.trim().toLowerCase()).filter(Boolean);
|
|
10372
|
+
const q = (args.query ?? "").trim();
|
|
10373
|
+
let out = rows.filter((r) => {
|
|
10374
|
+
const pinned = pins.some((p) => marketMatchesPin(r, p));
|
|
10375
|
+
if (!args.includeExpired && !pinned && isPendleMarketExpired(r, nowMs)) return false;
|
|
10376
|
+
if (args.pointsOnly && r.points.length === 0) return false;
|
|
10377
|
+
if (q && !marketMatchesQuery(r, q)) return false;
|
|
10378
|
+
return true;
|
|
10379
|
+
});
|
|
10380
|
+
out.sort(sortPendleMarketsByTvl);
|
|
10381
|
+
return out.slice(0, cap);
|
|
10382
|
+
}
|
|
10383
|
+
function addressFromAssetIdOrHex(raw, fallbackChainId) {
|
|
10384
|
+
if (typeof raw !== "string" || !raw.trim()) return null;
|
|
10385
|
+
const parsed = parsePendleAssetId(raw);
|
|
10386
|
+
if (parsed) {
|
|
10387
|
+
try {
|
|
10388
|
+
return getAddress(parsed.address);
|
|
10389
|
+
} catch {
|
|
10390
|
+
return parsed.address.toLowerCase();
|
|
10391
|
+
}
|
|
10392
|
+
}
|
|
10393
|
+
if (isAddress(raw)) return getAddress(raw);
|
|
10394
|
+
if (raw.startsWith(`${fallbackChainId}-`)) {
|
|
10395
|
+
const rest = raw.slice(String(fallbackChainId).length + 1);
|
|
10396
|
+
if (isAddress(rest)) return getAddress(rest);
|
|
10397
|
+
}
|
|
10398
|
+
return null;
|
|
10399
|
+
}
|
|
10400
|
+
function parsePoints(raw) {
|
|
10401
|
+
if (!Array.isArray(raw)) return [];
|
|
10402
|
+
const out = [];
|
|
10403
|
+
for (const item of raw) {
|
|
10404
|
+
const o = asRecord(item);
|
|
10405
|
+
if (!o) continue;
|
|
10406
|
+
const name = asString(o.name) ?? asString(o.key) ?? asString(o.pointName);
|
|
10407
|
+
if (!name) continue;
|
|
10408
|
+
out.push({
|
|
10409
|
+
name,
|
|
10410
|
+
type: asString(o.type),
|
|
10411
|
+
pendleAsset: asString(o.pendleAsset),
|
|
10412
|
+
value: asNumber(o.value)
|
|
10413
|
+
});
|
|
10414
|
+
}
|
|
10415
|
+
return out;
|
|
10416
|
+
}
|
|
10417
|
+
function marketTvlUsd(row) {
|
|
10418
|
+
return row.tvlUsd ?? row.liquidityUsd ?? 0;
|
|
10419
|
+
}
|
|
10420
|
+
function sortPendleMarketsByTvl(a, b) {
|
|
10421
|
+
const d = marketTvlUsd(b) - marketTvlUsd(a);
|
|
10422
|
+
if (d !== 0) return d;
|
|
10423
|
+
return a.name.localeCompare(b.name, void 0, { sensitivity: "base" });
|
|
10424
|
+
}
|
|
10425
|
+
function parsePendleMarket(raw) {
|
|
10426
|
+
const o = asRecord(raw);
|
|
10427
|
+
if (!o) return null;
|
|
10428
|
+
const chainId = asNumber(o.chainId);
|
|
10429
|
+
const address = addressFromAssetIdOrHex(o.address, chainId ?? 0);
|
|
10430
|
+
if (chainId == null || !address) return null;
|
|
10431
|
+
const details = asRecord(o.details);
|
|
10432
|
+
const tvl = asNumber(o.tvl) ?? asNumber(details?.tvl) ?? asNumber(details?.totalTvl) ?? asNumber(asRecord(details?.liquidity)?.usd);
|
|
10433
|
+
const liquidity = asNumber(o.liquidity) ?? asNumber(details?.liquidity) ?? asNumber(asRecord(details?.liquidity)?.usd);
|
|
10434
|
+
const impliedApy = asNumber(o.impliedApy) ?? asNumber(details?.impliedApy) ?? asNumber(asRecord(o.pt)?.impliedApy);
|
|
10435
|
+
const pt = addressFromAssetIdOrHex(o.pt ?? asRecord(o.pt)?.address ?? asRecord(o.pt)?.id, chainId);
|
|
10436
|
+
const yt = addressFromAssetIdOrHex(o.yt ?? asRecord(o.yt)?.address ?? asRecord(o.yt)?.id, chainId);
|
|
10437
|
+
const sy = addressFromAssetIdOrHex(o.sy ?? asRecord(o.sy)?.address ?? asRecord(o.sy)?.id, chainId);
|
|
10438
|
+
const underlying = addressFromAssetIdOrHex(
|
|
10439
|
+
o.underlyingAsset ?? o.underlying ?? asRecord(o.underlyingAsset)?.address,
|
|
10440
|
+
chainId
|
|
10441
|
+
);
|
|
10442
|
+
if (!pt || !yt || !sy || !underlying) return null;
|
|
10443
|
+
const expired = asExpiry(o.expiry) ?? asExpiry(details?.expiry);
|
|
10444
|
+
return {
|
|
10445
|
+
chainId,
|
|
10446
|
+
name: asString(o.name) ?? asString(o.proSymbol) ?? `${address.slice(0, 8)}\u2026`,
|
|
10447
|
+
address,
|
|
10448
|
+
expiry: expired,
|
|
10449
|
+
pt,
|
|
10450
|
+
yt,
|
|
10451
|
+
sy,
|
|
10452
|
+
underlying,
|
|
10453
|
+
underlyingSymbol: asString(asRecord(o.underlyingAsset)?.symbol) ?? asString(o.underlyingSymbol),
|
|
10454
|
+
ptSymbol: asString(asRecord(o.pt)?.symbol) ?? asString(o.ptSymbol),
|
|
10455
|
+
ytSymbol: asString(asRecord(o.yt)?.symbol) ?? asString(o.ytSymbol),
|
|
10456
|
+
impliedApy,
|
|
10457
|
+
tvlUsd: tvl,
|
|
10458
|
+
liquidityUsd: liquidity,
|
|
10459
|
+
points: parsePoints(o.points ?? details?.points)
|
|
10460
|
+
};
|
|
10461
|
+
}
|
|
10462
|
+
async function pendleFetchSupportedChainIds() {
|
|
10463
|
+
const now = Date.now();
|
|
10464
|
+
if (chainIdsCache && now - chainIdsCache.at < PENDLE_CHAIN_CACHE_MS) return chainIdsCache.chainIds;
|
|
10465
|
+
const json = await pendleCoreFetch({ path: "/v1/chains" });
|
|
10466
|
+
const ids = Array.isArray(json.chainIds) ? json.chainIds.map((n) => Number(n)).filter((n) => Number.isFinite(n) && n > 0) : [];
|
|
10467
|
+
chainIdsCache = { at: now, chainIds: ids };
|
|
10468
|
+
return ids;
|
|
10469
|
+
}
|
|
10470
|
+
async function isPendleChainSupported(chainId) {
|
|
10471
|
+
try {
|
|
10472
|
+
const ids = await pendleFetchSupportedChainIds();
|
|
10473
|
+
if (ids.length === 0) return true;
|
|
10474
|
+
return ids.includes(chainId);
|
|
10475
|
+
} catch {
|
|
10476
|
+
return true;
|
|
10477
|
+
}
|
|
10478
|
+
}
|
|
10479
|
+
async function pendleFetchMarketsPage(args) {
|
|
10480
|
+
const limit = Math.min(PENDLE_LISTING_CAP, Math.max(1, args.limit));
|
|
10481
|
+
const json = await pendleCoreFetch({
|
|
10482
|
+
path: "/v2/markets/all",
|
|
10483
|
+
query: {
|
|
10484
|
+
skip: args.skip ?? 0,
|
|
10485
|
+
limit,
|
|
10486
|
+
...args.chainId != null ? { chainId: args.chainId } : {}
|
|
10487
|
+
}
|
|
10488
|
+
});
|
|
10489
|
+
const raw = Array.isArray(json.markets) ? json.markets : Array.isArray(json.results) ? json.results : [];
|
|
10490
|
+
const rows = [];
|
|
10491
|
+
for (const item of raw) {
|
|
10492
|
+
const row = parsePendleMarket(item);
|
|
10493
|
+
if (row) rows.push(row);
|
|
10494
|
+
}
|
|
10495
|
+
return rows;
|
|
10496
|
+
}
|
|
10497
|
+
async function pendleFetchMarketsForChain(chainId) {
|
|
10498
|
+
const now = Date.now();
|
|
10499
|
+
const cached2 = marketsCacheByChain.get(chainId);
|
|
10500
|
+
if (cached2 && now - cached2.at < PENDLE_ICON_CACHE_MS) return cached2.rows;
|
|
10501
|
+
const rows = [];
|
|
10502
|
+
for (let page = 0; page < PENDLE_LISTING_MAX_PAGES; page++) {
|
|
10503
|
+
const batch = await pendleFetchMarketsPage({
|
|
10504
|
+
skip: page * PENDLE_LISTING_CAP,
|
|
10505
|
+
limit: PENDLE_LISTING_CAP,
|
|
10506
|
+
chainId
|
|
10507
|
+
});
|
|
10508
|
+
const onChain = batch.filter((r) => r.chainId === chainId);
|
|
10509
|
+
rows.push(...onChain);
|
|
10510
|
+
if (batch.length < PENDLE_LISTING_CAP || onChain.length === 0) break;
|
|
10511
|
+
}
|
|
10512
|
+
marketsCacheByChain.set(chainId, { at: now, rows });
|
|
10513
|
+
return rows;
|
|
10514
|
+
}
|
|
10515
|
+
function marketMatchesQuery(row, query) {
|
|
10516
|
+
const q = query.trim();
|
|
10517
|
+
if (!q) return true;
|
|
10518
|
+
if (matchesAssetFilter({ address: row.address, symbol: row.name, filter: q }) || matchesAssetFilter({ address: row.pt, symbol: row.ptSymbol ?? void 0, filter: q }) || matchesAssetFilter({ address: row.yt, symbol: row.ytSymbol ?? void 0, filter: q }) || matchesAssetFilter({ address: row.sy, filter: q }) || matchesAssetFilter({ address: row.underlying, symbol: row.underlyingSymbol ?? void 0, filter: q })) {
|
|
10519
|
+
return true;
|
|
10520
|
+
}
|
|
10521
|
+
const hay = `${row.name} ${row.ptSymbol ?? ""} ${row.ytSymbol ?? ""} ${row.underlyingSymbol ?? ""}`.toLowerCase();
|
|
10522
|
+
return hay.includes(q.toLowerCase());
|
|
10523
|
+
}
|
|
10524
|
+
async function pendleFetchMarketsSummary(args) {
|
|
10525
|
+
if (!await isPendleChainSupported(args.chainId)) {
|
|
10526
|
+
return {
|
|
10527
|
+
chainId: args.chainId,
|
|
10528
|
+
markets: [],
|
|
10529
|
+
notes: `Pendle Core API does not list chain ${args.chainId}.`
|
|
10530
|
+
};
|
|
10531
|
+
}
|
|
10532
|
+
const scanned = await pendleFetchMarketsForChain(args.chainId);
|
|
10533
|
+
const rows = selectPendleListingMarkets(scanned, {
|
|
10534
|
+
query: args.query,
|
|
10535
|
+
pointsOnly: args.pointsOnly,
|
|
10536
|
+
includeAddresses: args.includeAddresses
|
|
10537
|
+
});
|
|
10538
|
+
const expiredOmitted = scanned.filter((r) => isPendleMarketExpired(r)).length;
|
|
10539
|
+
return {
|
|
10540
|
+
chainId: args.chainId,
|
|
10541
|
+
markets: rows,
|
|
10542
|
+
notes: `Top ${rows.length} active Pendle markets on chain ${args.chainId} by TVL/liquidity (scanned ${scanned.length}, omitted ${expiredOmitted} matured). Use ctm_pendle_search_assets for long-tail or expired markets (PT redeem / remove LP). Do not web-search Pendle APYs.`
|
|
10543
|
+
};
|
|
10544
|
+
}
|
|
10545
|
+
|
|
10546
|
+
// src/protocols/evm/pendle/index.ts
|
|
10547
|
+
var pendleProtocolModule = {
|
|
10548
|
+
id: PENDLE_PROTOCOL_ID,
|
|
10549
|
+
chainCategory: "evm",
|
|
10550
|
+
isChainSupported(ctx) {
|
|
10551
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
10552
|
+
const n = typeof ctx.chainId === "number" ? ctx.chainId : Number.parseInt(String(ctx.chainId), 10);
|
|
10553
|
+
if (!Number.isFinite(n)) return false;
|
|
10554
|
+
return isPendleChainSupported(n);
|
|
10555
|
+
},
|
|
10556
|
+
isTokenSupported(token) {
|
|
10557
|
+
if (token.category !== "evm") return false;
|
|
10558
|
+
return token.kind === "native" || token.kind === "erc20";
|
|
10559
|
+
},
|
|
10560
|
+
actions: [
|
|
10561
|
+
{ id: "pendle.fetch-markets", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "List live Pendle markets (TVL-ranked, cap 100, matured omitted)", commonParams: [], params: {} },
|
|
10562
|
+
{ id: "pendle.search-assets", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Search live PT/YT/SY/underlying (matured only if address-pinned)", commonParams: [], params: {} },
|
|
10563
|
+
{ id: "pendle.swap", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Swap token \u2194 PT/YT via Hosted SDK convert", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
|
|
10564
|
+
{ id: "pendle.mint-py", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Mint PT + YT", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
|
|
10565
|
+
{ id: "pendle.redeem-py", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Redeem PT + YT (PT only after expiry)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
|
|
10566
|
+
{ id: "pendle.add-liquidity", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Add Pendle AMM liquidity", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
|
|
10567
|
+
{ id: "pendle.fetch-positions", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "List this wallet\u2019s Pendle LP (including matured)", commonParams: [], params: {} },
|
|
10568
|
+
{ id: "pendle.remove-liquidity", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Remove Pendle AMM liquidity", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} },
|
|
10569
|
+
{ id: "pendle.redeem-rewards", protocolId: PENDLE_PROTOCOL_ID, chainCategory: "evm", description: "Redeem on-chain SY/YT/LP interest and incentives (not merkle airdrops)", commonParams: ["keyGen", "purposeText", "useCustomGas"], params: {} }
|
|
10570
|
+
]
|
|
10571
|
+
};
|
|
10572
|
+
registerProtocolModule(pendleProtocolModule);
|
|
9173
10573
|
var skillsDir = join(dirname(fileURLToPath(import.meta.url)), "skills");
|
|
9174
10574
|
var SKILL_PROTOCOL_IDS = [
|
|
9175
10575
|
"aave-v4",
|
|
@@ -9186,8 +10586,10 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
9186
10586
|
"morpho",
|
|
9187
10587
|
"circle-cctp",
|
|
9188
10588
|
"aerodrome",
|
|
10589
|
+
"pendle",
|
|
9189
10590
|
"continuum-dao",
|
|
9190
|
-
"compound-v3"
|
|
10591
|
+
"compound-v3",
|
|
10592
|
+
"yield-compare"
|
|
9191
10593
|
];
|
|
9192
10594
|
function getToolsForProtocol(protocolId) {
|
|
9193
10595
|
return MCP_TOOL_DEFINITIONS.filter((t) => t.protocolId === protocolId);
|
|
@@ -9236,6 +10638,9 @@ function getProtocolDiscoverySummary(protocolId) {
|
|
|
9236
10638
|
};
|
|
9237
10639
|
}
|
|
9238
10640
|
init_support();
|
|
10641
|
+
init_support2();
|
|
10642
|
+
init_addresses();
|
|
10643
|
+
init_stockTokens();
|
|
9239
10644
|
function advisor(protocolId, tokenFilter, impl) {
|
|
9240
10645
|
return { protocolId, tokenFilter, ...impl };
|
|
9241
10646
|
}
|
|
@@ -9506,7 +10911,7 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
9506
10911
|
async supportedTokens() {
|
|
9507
10912
|
return {
|
|
9508
10913
|
tokens: [],
|
|
9509
|
-
notes: "Maple Syrup pools
|
|
10914
|
+
notes: "Maple Syrup pools and APYs come from ctm_maple_fetch_markets. Copy syrupRouter, pool, and asset from the fetch row."
|
|
9510
10915
|
};
|
|
9511
10916
|
}
|
|
9512
10917
|
}),
|
|
@@ -9662,6 +11067,55 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
9662
11067
|
return cache.has(normalized);
|
|
9663
11068
|
}
|
|
9664
11069
|
}),
|
|
11070
|
+
[PENDLE_PROTOCOL_ID]: advisor(PENDLE_PROTOCOL_ID, "api_underlyings", {
|
|
11071
|
+
async supportedChainIds() {
|
|
11072
|
+
try {
|
|
11073
|
+
return [...await pendleFetchSupportedChainIds()].sort((a, b) => a - b);
|
|
11074
|
+
} catch {
|
|
11075
|
+
return [];
|
|
11076
|
+
}
|
|
11077
|
+
},
|
|
11078
|
+
async supportedTokens(chainId) {
|
|
11079
|
+
if (!await isPendleChainSupported(chainId)) {
|
|
11080
|
+
return { tokens: [], notes: `Pendle Core API does not list chain ${chainId}.` };
|
|
11081
|
+
}
|
|
11082
|
+
const listed = await pendleFetchMarketsSummary({ chainId });
|
|
11083
|
+
const byAddr = /* @__PURE__ */ new Map();
|
|
11084
|
+
const add = (address, symbol, roles) => {
|
|
11085
|
+
const key = address.toLowerCase();
|
|
11086
|
+
const prev = byAddr.get(key);
|
|
11087
|
+
byAddr.set(key, {
|
|
11088
|
+
address,
|
|
11089
|
+
symbol: symbol ?? prev?.symbol,
|
|
11090
|
+
roles: [.../* @__PURE__ */ new Set([...prev?.roles ?? [], ...roles])]
|
|
11091
|
+
});
|
|
11092
|
+
};
|
|
11093
|
+
for (const m of listed.markets) {
|
|
11094
|
+
add(m.underlying, m.underlyingSymbol, ["underlying"]);
|
|
11095
|
+
add(m.pt, m.ptSymbol, ["pt"]);
|
|
11096
|
+
add(m.yt, m.ytSymbol, ["yt"]);
|
|
11097
|
+
add(m.sy, null, ["sy"]);
|
|
11098
|
+
add(m.address, m.name, ["lp", "market"]);
|
|
11099
|
+
}
|
|
11100
|
+
return {
|
|
11101
|
+
tokens: [...byAddr.values()],
|
|
11102
|
+
notes: "Official Pendle live (unexpired) TVL-ranked markets on this chain, cap 100 (PT/YT/SY/LP + underlyings). Use ctm_pendle_search_assets for long-tail or matured markets. Use ctm_pendle_fetch_positions for this wallet\u2019s LP (including matured). Do not hardcode routers."
|
|
11103
|
+
};
|
|
11104
|
+
},
|
|
11105
|
+
async isTokenSupported(chainId, address) {
|
|
11106
|
+
if (!await isPendleChainSupported(chainId)) return false;
|
|
11107
|
+
let normalized;
|
|
11108
|
+
try {
|
|
11109
|
+
normalized = getAddress(address).toLowerCase();
|
|
11110
|
+
} catch {
|
|
11111
|
+
return false;
|
|
11112
|
+
}
|
|
11113
|
+
const listed = await pendleFetchMarketsSummary({ chainId });
|
|
11114
|
+
return listed.markets.some(
|
|
11115
|
+
(m) => m.address.toLowerCase() === normalized || m.pt.toLowerCase() === normalized || m.yt.toLowerCase() === normalized || m.sy.toLowerCase() === normalized || m.underlying.toLowerCase() === normalized
|
|
11116
|
+
);
|
|
11117
|
+
}
|
|
11118
|
+
}),
|
|
9665
11119
|
arcus: advisor("arcus", "api_underlyings", {
|
|
9666
11120
|
async supportedChainIds() {
|
|
9667
11121
|
return [...ARCUS_SUPPORTED_CHAIN_IDS];
|
|
@@ -9699,6 +11153,7 @@ registerProtocolModule(veniceProtocolModule);
|
|
|
9699
11153
|
registerProtocolModule(aerodromeProtocolModule);
|
|
9700
11154
|
registerProtocolModule(continuumDaoProtocolModule);
|
|
9701
11155
|
registerProtocolModule(compoundV3ProtocolModule);
|
|
11156
|
+
registerProtocolModule(pendleProtocolModule);
|
|
9702
11157
|
function getAgentCatalog() {
|
|
9703
11158
|
return {
|
|
9704
11159
|
protocols: getProtocolModules(),
|
|
@@ -9724,11 +11179,12 @@ function getAgentCatalog() {
|
|
|
9724
11179
|
aerodrome: aerodromeProtocolModule,
|
|
9725
11180
|
continuumDao: continuumDaoProtocolModule,
|
|
9726
11181
|
compoundV3: compoundV3ProtocolModule,
|
|
11182
|
+
pendle: pendleProtocolModule,
|
|
9727
11183
|
/** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
|
|
9728
11184
|
mcp: getAgentCatalogForMcp()
|
|
9729
11185
|
};
|
|
9730
11186
|
}
|
|
9731
11187
|
|
|
9732
|
-
export { EVM_COMMON_PARAM_DOCS, MANAGEMENT_SIG_DOC, MCP_NON_SUBMIT_TOOL_NAMES, MCP_TOOL_DEFINITIONS, MCP_TOOL_INPUT_SCHEMAS, MCP_TOOL_OUTPUT_SCHEMAS, MULTISIGN_OUTPUT_DOC, MULTISIGN_SUBMIT_OUTPUT_DOC, PROTOCOL_SUPPORT_ADVISORS, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4RepayInputSchema, mcpAaveV4WithdrawInputSchema, mcpAerodromeBuildAddLiquidityMultisignInputSchema, mcpAerodromeBuildClBurnMultisignInputSchema, mcpAerodromeBuildClCollectFeesMultisignInputSchema, mcpAerodromeBuildClDecreaseMultisignInputSchema, mcpAerodromeBuildClIncreaseMultisignInputSchema, mcpAerodromeBuildClMintMultisignInputSchema, mcpAerodromeBuildClaimEmissionsMultisignInputSchema, mcpAerodromeBuildClaimFeesMultisignInputSchema, mcpAerodromeBuildGaugeStakeMultisignInputSchema, mcpAerodromeBuildGaugeUnstakeMultisignInputSchema, mcpAerodromeBuildRemoveLiquidityMultisignInputSchema, mcpAerodromeBuildSwapMultisignInputSchema, mcpAerodromeDiscoverPoolsInputSchema, mcpAerodromeDiscoverPoolsOutputSchema, mcpAerodromeFetchPoolsInputSchema, mcpAerodromeFetchPoolsOutputSchema, mcpAerodromeFetchPositionsInputSchema, mcpAerodromeFetchPositionsOutputSchema, 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, mcpContinuumDaoCastVoteBravoInputSchema, mcpContinuumDaoCastVoteDeltaInputSchema, mcpContinuumDaoCreateLockInputSchema, mcpContinuumDaoDelegateInputSchema, mcpContinuumDaoExplainProposalInputSchema, mcpContinuumDaoExplainProposalOutputSchema, mcpContinuumDaoFetchDelegatesInputSchema, mcpContinuumDaoFetchDelegatesOutputSchema, mcpContinuumDaoFetchLiveProposalsInputSchema, mcpContinuumDaoFetchLiveProposalsOutputSchema, mcpContinuumDaoFetchProposalInputSchema, mcpContinuumDaoFetchProposalOutputSchema, mcpContinuumDaoFetchProposalStateInputSchema, mcpContinuumDaoFetchProposalStateOutputSchema, 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, mcpContinuumDaoMergeInputSchema, mcpContinuumDaoProposalIdInputSchema, mcpContinuumDaoProposeBravoInputSchema, mcpContinuumDaoProposeDeltaInputSchema, mcpContinuumDaoRegisterProposalInputSchema, mcpContinuumDaoRegisterProposalOutputSchema, mcpContinuumDaoRequestDetachInputSchema, mcpContinuumDaoSplitInputSchema, mcpContinuumDaoTokenIdInputSchema, mcpContinuumDaoTransferInputSchema, mcpContinuumDaoUndelegateInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2FetchLendVaultsInputSchema, mcpEulerV2FetchLendVaultsOutputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, 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, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOhlcvInputSchema, mcpHyperliquidFetchOhlcvOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidSearchMarketsInputSchema, mcpHyperliquidSearchMarketsOutputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUpdateLeverageInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpMapleDepositInputSchema, mcpMapleRequestRedeemInputSchema, mcpMorphoBlueBorrowInputSchema, mcpMorphoBlueCollateralDepositInputSchema, mcpMorphoBlueCollateralWithdrawInputSchema, mcpMorphoBlueRepayInputSchema, mcpMorphoFetchBlueMarketsInputSchema, mcpMorphoFetchBlueMarketsOutputSchema, mcpMorphoFetchEarnVaultsInputSchema, mcpMorphoFetchEarnVaultsOutputSchema, mcpMorphoFetchMidnightBooksInputSchema, mcpMorphoFetchMidnightBooksOutputSchema, mcpMorphoFetchMidnightOffersInputSchema, mcpMorphoFetchMidnightOffersOutputSchema, mcpMorphoFetchMidnightPositionsInputSchema, mcpMorphoFetchMidnightPositionsOutputSchema, mcpMorphoFetchMidnightQuoteInputSchema, mcpMorphoFetchMidnightQuoteOutputSchema, mcpMorphoMerklClaimInputSchema, mcpMorphoMidnightBorrowInputSchema, mcpMorphoMidnightCancelLendOfferInputSchema, mcpMorphoMidnightLendInputSchema, mcpMorphoMidnightLendOfferInputSchema, mcpMorphoMidnightRepayInputSchema, mcpMorphoVaultDepositInputSchema, mcpMorphoVaultWithdrawInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, 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 };
|
|
11188
|
+
export { EVM_COMMON_PARAM_DOCS, MANAGEMENT_SIG_DOC, MCP_NON_SUBMIT_TOOL_NAMES, MCP_TOOL_DEFINITIONS, MCP_TOOL_INPUT_SCHEMAS, MCP_TOOL_OUTPUT_SCHEMAS, MULTISIGN_OUTPUT_DOC, MULTISIGN_SUBMIT_OUTPUT_DOC, PROTOCOL_SUPPORT_ADVISORS, chainDetailSchema, evmAddressSchema, evmMultisignCommonInputSchema, getActionsByChainCategory, getAgentCatalog, getAgentCatalogForMcp, getMcpToolByName, getMcpToolDefinitions, getMcpToolInputSchema, getMcpToolOutputSchema, getProtocolDiscoverySummary, getProtocolModules, getProtocolSkill, getProtocolSupportAdvisor, getToolsForProtocol, jsonObjectSchema, keyGenSchema, listProtocolSupportAdvisorIds, listProtocolsWithSkills, mcpAaveV4BorrowInputSchema, mcpAaveV4DepositInputSchema, mcpAaveV4FetchMarketInputSchema, mcpAaveV4FetchMarketOutputSchema, mcpAaveV4FetchMarketsInputSchema, mcpAaveV4FetchMarketsOutputSchema, 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, mcpContinuumDaoCastVoteBravoInputSchema, mcpContinuumDaoCastVoteDeltaInputSchema, mcpContinuumDaoCreateLockInputSchema, mcpContinuumDaoDelegateInputSchema, mcpContinuumDaoExplainProposalInputSchema, mcpContinuumDaoExplainProposalOutputSchema, mcpContinuumDaoFetchDelegatesInputSchema, mcpContinuumDaoFetchDelegatesOutputSchema, mcpContinuumDaoFetchLiveProposalsInputSchema, mcpContinuumDaoFetchLiveProposalsOutputSchema, mcpContinuumDaoFetchProposalInputSchema, mcpContinuumDaoFetchProposalOutputSchema, mcpContinuumDaoFetchProposalStateInputSchema, mcpContinuumDaoFetchProposalStateOutputSchema, 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, mcpContinuumDaoMergeInputSchema, mcpContinuumDaoProposalIdInputSchema, mcpContinuumDaoProposeBravoInputSchema, mcpContinuumDaoProposeDeltaInputSchema, mcpContinuumDaoRegisterProposalInputSchema, mcpContinuumDaoRegisterProposalOutputSchema, mcpContinuumDaoRequestDetachInputSchema, mcpContinuumDaoSplitInputSchema, mcpContinuumDaoTokenIdInputSchema, mcpContinuumDaoTransferInputSchema, mcpContinuumDaoUndelegateInputSchema, mcpCurveDaoBuildAddLiquidityMultisignInputSchema, mcpCurveDaoBuildGaugeDepositMultisignInputSchema, mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoFetchImportantPoolsInputSchema, mcpCurveDaoFetchImportantPoolsOutputSchema, mcpCurveDaoFetchLpYieldsInputSchema, mcpCurveDaoFetchLpYieldsOutputSchema, mcpCurveDaoQuoteAddLiquidityInputSchema, mcpCurveDaoQuoteAddLiquidityOutputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpCurveDaoQuoteRemoveLiquidityInputSchema, mcpCurveDaoQuoteRemoveLiquidityOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaFetchSusdeApyInputSchema, mcpEthenaFetchSusdeApyOutputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2FetchEarnVaultsInputSchema, mcpEulerV2FetchEarnVaultsOutputSchema, mcpEulerV2FetchLendVaultsInputSchema, mcpEulerV2FetchLendVaultsOutputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, 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, mcpHyperliquidFetchMarketSnapshotInputSchema, mcpHyperliquidFetchMarketSnapshotOutputSchema, mcpHyperliquidFetchMarketsInputSchema, mcpHyperliquidFetchMarketsOutputSchema, mcpHyperliquidFetchOhlcvInputSchema, mcpHyperliquidFetchOhlcvOutputSchema, mcpHyperliquidFetchOpenContextInputSchema, mcpHyperliquidFetchOpenContextOutputSchema, mcpHyperliquidFetchOpenOrdersInputSchema, mcpHyperliquidFetchOpenOrdersOutputSchema, mcpHyperliquidFetchPositionsInputSchema, mcpHyperliquidFetchPositionsOutputSchema, mcpHyperliquidFetchStakingSummaryInputSchema, mcpHyperliquidFetchStakingSummaryOutputSchema, mcpHyperliquidFetchStockMarketsInputSchema, mcpHyperliquidFetchStockMarketsOutputSchema, mcpHyperliquidFetchUsdClassBalancesInputSchema, mcpHyperliquidFetchUsdClassBalancesOutputSchema, mcpHyperliquidFetchUserVaultEquitiesInputSchema, mcpHyperliquidFetchUserVaultEquitiesOutputSchema, mcpHyperliquidFetchVaultApysInputSchema, mcpHyperliquidFetchVaultApysOutputSchema, mcpHyperliquidFetchVaultsInputSchema, mcpHyperliquidFetchVaultsOutputSchema, mcpHyperliquidLimitOrderInputSchema, mcpHyperliquidSearchMarketsInputSchema, mcpHyperliquidSearchMarketsOutputSchema, mcpHyperliquidStakeInputSchema, mcpHyperliquidUndelegateInputSchema, mcpHyperliquidUnstakeInputSchema, mcpHyperliquidUpdateLeverageInputSchema, mcpHyperliquidUsdTransferInputSchema, mcpHyperliquidVaultDepositInputSchema, mcpHyperliquidVaultWithdrawInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoFetchStethAprInputSchema, mcpLidoFetchStethAprOutputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpMapleDepositInputSchema, mcpMapleFetchMarketInputSchema, mcpMapleFetchMarketOutputSchema, mcpMapleFetchMarketsInputSchema, mcpMapleFetchMarketsOutputSchema, mcpMapleRequestRedeemInputSchema, mcpMorphoBlueBorrowInputSchema, mcpMorphoBlueCollateralDepositInputSchema, mcpMorphoBlueCollateralWithdrawInputSchema, mcpMorphoBlueRepayInputSchema, mcpMorphoFetchBlueMarketsInputSchema, mcpMorphoFetchBlueMarketsOutputSchema, mcpMorphoFetchEarnVaultsInputSchema, mcpMorphoFetchEarnVaultsOutputSchema, mcpMorphoFetchMidnightBooksInputSchema, mcpMorphoFetchMidnightBooksOutputSchema, mcpMorphoFetchMidnightOffersInputSchema, mcpMorphoFetchMidnightOffersOutputSchema, mcpMorphoFetchMidnightPositionsInputSchema, mcpMorphoFetchMidnightPositionsOutputSchema, mcpMorphoFetchMidnightQuoteInputSchema, mcpMorphoFetchMidnightQuoteOutputSchema, 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, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyFetchSusdsRateInputSchema, mcpSkyFetchSusdsRateOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, 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 };
|
|
9733
11189
|
//# sourceMappingURL=catalog.js.map
|
|
9734
11190
|
//# sourceMappingURL=catalog.js.map
|