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