@continuumdao/ctm-mpc-defi 0.2.20 → 0.2.22
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 +118 -37
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +310 -97
- package/dist/agent/catalog.js +117 -38
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/uniswap-v4/SKILL.md +58 -0
- package/dist/chains/evm/index.cjs +5 -1
- package/dist/chains/evm/index.cjs.map +1 -1
- package/dist/chains/evm/index.d.ts +4 -4
- package/dist/chains/evm/index.js +5 -1
- package/dist/chains/evm/index.js.map +1 -1
- package/dist/chains/near/index.d.ts +1 -1
- package/dist/chains/solana/index.d.ts +1 -1
- package/dist/core/index.cjs +25 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +12 -5
- package/dist/core/index.js +23 -1
- package/dist/core/index.js.map +1 -1
- package/dist/{envelope-CpBUh9eP.d.ts → envelope-C_bfuKab.d.ts} +3 -1
- package/dist/index.cjs +27 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +25 -2
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.cjs +5 -1
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +1 -1
- package/dist/protocols/evm/aave-v4/index.js +5 -1
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.cjs +5 -1
- package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.d.ts +2 -2
- package/dist/protocols/evm/circle-cctp/index.js +5 -1
- package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
- package/dist/protocols/evm/curve-dao/index.cjs +5 -1
- package/dist/protocols/evm/curve-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/curve-dao/index.d.ts +2 -2
- package/dist/protocols/evm/curve-dao/index.js +5 -1
- package/dist/protocols/evm/curve-dao/index.js.map +1 -1
- package/dist/protocols/evm/ethena/index.cjs +5 -1
- package/dist/protocols/evm/ethena/index.cjs.map +1 -1
- package/dist/protocols/evm/ethena/index.d.ts +1 -1
- package/dist/protocols/evm/ethena/index.js +5 -1
- package/dist/protocols/evm/ethena/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +5 -1
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.d.ts +1 -1
- package/dist/protocols/evm/euler-v2/index.js +5 -1
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/gmx/index.cjs +5 -1
- package/dist/protocols/evm/gmx/index.cjs.map +1 -1
- package/dist/protocols/evm/gmx/index.d.ts +2 -2
- package/dist/protocols/evm/gmx/index.js +5 -1
- package/dist/protocols/evm/gmx/index.js.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.cjs +6 -1
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.d.ts +2 -2
- package/dist/protocols/evm/hyperliquid/index.js +6 -1
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
- package/dist/protocols/evm/lido/index.cjs +5 -1
- package/dist/protocols/evm/lido/index.cjs.map +1 -1
- package/dist/protocols/evm/lido/index.d.ts +1 -1
- package/dist/protocols/evm/lido/index.js +5 -1
- package/dist/protocols/evm/lido/index.js.map +1 -1
- package/dist/protocols/evm/maple/index.cjs +5 -1
- package/dist/protocols/evm/maple/index.cjs.map +1 -1
- package/dist/protocols/evm/maple/index.d.ts +1 -1
- package/dist/protocols/evm/maple/index.js +5 -1
- package/dist/protocols/evm/maple/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +5 -1
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +1 -1
- package/dist/protocols/evm/morpho/index.js +5 -1
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/dist/protocols/evm/permit2/index.cjs +4 -0
- package/dist/protocols/evm/permit2/index.cjs.map +1 -1
- package/dist/protocols/evm/permit2/index.d.ts +1 -1
- package/dist/protocols/evm/permit2/index.js +4 -0
- package/dist/protocols/evm/permit2/index.js.map +1 -1
- package/dist/protocols/evm/sky/index.cjs +5 -1
- package/dist/protocols/evm/sky/index.cjs.map +1 -1
- package/dist/protocols/evm/sky/index.d.ts +1 -1
- package/dist/protocols/evm/sky/index.js +5 -1
- package/dist/protocols/evm/sky/index.js.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs +684 -1
- package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/uniswap-v4/index.d.ts +180 -3
- package/dist/protocols/evm/uniswap-v4/index.js +662 -2
- package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
- package/dist/{registry-Bv5o37_w.d.ts → registry-DxDSPQ-p.d.ts} +1 -1
- package/dist/{types-BfjWdw1j.d.ts → types-PZrvtjv8.d.ts} +2 -0
- package/dist/{types-DUeNJLr9.d.ts → types-RZWOTm8c.d.ts} +1 -1
- package/package.json +2 -2
package/dist/agent/catalog.cjs
CHANGED
|
@@ -89,6 +89,41 @@ function isUniswapV4ChainSupported(chainId) {
|
|
|
89
89
|
return typeof a === "string" && a.startsWith("0x");
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
// src/core/defiProxy.ts
|
|
93
|
+
var aaveGraphqlProxyUrl;
|
|
94
|
+
var morphoGraphqlProxyUrl;
|
|
95
|
+
function getAaveGraphqlProxyUrl() {
|
|
96
|
+
return aaveGraphqlProxyUrl;
|
|
97
|
+
}
|
|
98
|
+
function getMorphoGraphqlProxyUrl() {
|
|
99
|
+
return morphoGraphqlProxyUrl;
|
|
100
|
+
}
|
|
101
|
+
async function postJsonViaOptionalProxy(args) {
|
|
102
|
+
const proxy = args.proxyUrl?.trim();
|
|
103
|
+
if (proxy) {
|
|
104
|
+
const r2 = await fetch(proxy, {
|
|
105
|
+
method: "POST",
|
|
106
|
+
headers: { "content-type": "application/json" },
|
|
107
|
+
body: JSON.stringify(args.proxyEnvelope ?? args.body)
|
|
108
|
+
});
|
|
109
|
+
if (!r2.ok) {
|
|
110
|
+
const t = await r2.text().catch(() => "");
|
|
111
|
+
throw new Error(t ? `Proxy HTTP ${r2.status}: ${t.slice(0, 200)}` : `Proxy HTTP ${r2.status}`);
|
|
112
|
+
}
|
|
113
|
+
return await r2.json();
|
|
114
|
+
}
|
|
115
|
+
const r = await fetch(args.directUrl, {
|
|
116
|
+
method: "POST",
|
|
117
|
+
headers: { "content-type": "application/json" },
|
|
118
|
+
body: JSON.stringify(args.body)
|
|
119
|
+
});
|
|
120
|
+
if (!r.ok) {
|
|
121
|
+
const t = await r.text().catch(() => "");
|
|
122
|
+
throw new Error(t ? `HTTP ${r.status}: ${t.slice(0, 200)}` : `HTTP ${r.status}`);
|
|
123
|
+
}
|
|
124
|
+
return await r.json();
|
|
125
|
+
}
|
|
126
|
+
|
|
92
127
|
// src/protocols/evm/uniswap-v4/index.ts
|
|
93
128
|
var UNISWAP_V4_PROTOCOL_ID = "uniswap-v4";
|
|
94
129
|
var uniswapV4ProtocolModule = {
|
|
@@ -604,7 +639,10 @@ var evmMultisignCommonInputSchema = zod.z.object({
|
|
|
604
639
|
rpcUrl: zod.z.string().min(1).optional().describe("Server-filled from chain registry when keyGenId is set. Agents must not pass rpcUrl."),
|
|
605
640
|
executorAddress: evmAddressSchema.optional().describe("Server-filled MPC wallet from keyGenId. Agents must not pass executorAddress."),
|
|
606
641
|
chainDetail: chainDetailSchema.optional().describe("Server-filled gas row from chain registry when keyGenId is set."),
|
|
607
|
-
customGasChainDetails: zod.z.record(zod.z.unknown()).optional().describe("Snapshot written to extraJSON.customGasChainDetails when useCustomGas is true.")
|
|
642
|
+
customGasChainDetails: zod.z.record(zod.z.unknown()).optional().describe("Snapshot written to extraJSON.customGasChainDetails when useCustomGas is true."),
|
|
643
|
+
expiryDate: zod.z.number().int().positive().optional().describe(
|
|
644
|
+
"Optional Unix seconds (UTC) when the MPC sign request expires. Uniswap V4, GMX, Hyperliquid, and Curve DAO default to 30 minutes when omitted; other protocols use the node default (7 days)."
|
|
645
|
+
)
|
|
608
646
|
});
|
|
609
647
|
function withMultisignKeySourceRefine(schema) {
|
|
610
648
|
return schema.refine(
|
|
@@ -1137,6 +1175,66 @@ var mcpUniswapV4BuildCollectFeesMultisignInputSchema = withMultisignKeySourceRef
|
|
|
1137
1175
|
})
|
|
1138
1176
|
)
|
|
1139
1177
|
);
|
|
1178
|
+
var uniswapV4OhlcvIntervalSchema = zod.z.enum([
|
|
1179
|
+
"1m",
|
|
1180
|
+
"5m",
|
|
1181
|
+
"15m",
|
|
1182
|
+
"30m",
|
|
1183
|
+
"1h",
|
|
1184
|
+
"2h",
|
|
1185
|
+
"4h",
|
|
1186
|
+
"6h",
|
|
1187
|
+
"8h",
|
|
1188
|
+
"12h",
|
|
1189
|
+
"1d",
|
|
1190
|
+
"2d",
|
|
1191
|
+
"3d",
|
|
1192
|
+
"1w",
|
|
1193
|
+
"1M"
|
|
1194
|
+
]);
|
|
1195
|
+
var uniswapV4OhlcvCandleSchema = zod.z.object({
|
|
1196
|
+
timestampMs: zod.z.number(),
|
|
1197
|
+
open: zod.z.string(),
|
|
1198
|
+
high: zod.z.string(),
|
|
1199
|
+
low: zod.z.string(),
|
|
1200
|
+
close: zod.z.string(),
|
|
1201
|
+
volume: zod.z.string().optional()
|
|
1202
|
+
});
|
|
1203
|
+
var uniswapV4ExistingPoolOhlcvSchema = zod.z.object({
|
|
1204
|
+
token0Address: evmAddressSchema,
|
|
1205
|
+
token1Address: evmAddressSchema,
|
|
1206
|
+
poolReference: zod.z.string().min(1).optional(),
|
|
1207
|
+
fee: agentCoercedOptionalIntSchema(zod.z.number().int().nonnegative()).optional(),
|
|
1208
|
+
tickSpacing: agentCoercedOptionalIntSchema(zod.z.number().int().positive()).optional(),
|
|
1209
|
+
hooks: evmAddressSchema.optional()
|
|
1210
|
+
});
|
|
1211
|
+
var mcpUniswapV4FetchOhlcvInputSchema = zod.z.object({
|
|
1212
|
+
chainId: agentEvmChainIdSchema,
|
|
1213
|
+
interval: uniswapV4OhlcvIntervalSchema.optional().describe("Default 1h. Sub-hour uses swaps; \u22651h uses subgraph."),
|
|
1214
|
+
poolPreset: zod.z.string().optional().describe("presetId from ctm_uniswap_v4_list_lp_pools"),
|
|
1215
|
+
poolReference: zod.z.string().optional().describe("bytes32 pool id"),
|
|
1216
|
+
existingPool: uniswapV4ExistingPoolOhlcvSchema.optional(),
|
|
1217
|
+
quoteToken: zod.z.enum(["token0", "token1"]).optional().describe("Default token0 per token1 (subgraph native)"),
|
|
1218
|
+
lookbackDays: agentCoercedOptionalIntSchema(zod.z.number().int().positive().max(365)),
|
|
1219
|
+
lookbackHours: agentCoercedOptionalIntSchema(zod.z.number().int().positive().max(365 * 24)),
|
|
1220
|
+
startTimeMs: agentCoercedOptionalIntSchema(zod.z.number().int().positive()),
|
|
1221
|
+
endTimeMs: agentCoercedOptionalIntSchema(zod.z.number().int().positive())
|
|
1222
|
+
}).strict();
|
|
1223
|
+
var mcpUniswapV4FetchOhlcvOutputSchema = zod.z.object({
|
|
1224
|
+
symbol: zod.z.string(),
|
|
1225
|
+
timeframe: uniswapV4OhlcvIntervalSchema,
|
|
1226
|
+
chainId: agentEvmChainIdSchema,
|
|
1227
|
+
poolReference: zod.z.string(),
|
|
1228
|
+
dataSource: zod.z.enum(["subgraph_native", "subgraph_aggregate", "swaps"]),
|
|
1229
|
+
baseSubgraphEntity: zod.z.enum(["hourly", "daily"]).optional(),
|
|
1230
|
+
priceQuote: zod.z.enum(["token0PerToken1", "token1PerToken0"]),
|
|
1231
|
+
startTimeMs: zod.z.number().int().positive().optional(),
|
|
1232
|
+
endTimeMs: zod.z.number().int().positive().optional(),
|
|
1233
|
+
candleCount: zod.z.number().int().nonnegative(),
|
|
1234
|
+
candles: zod.z.array(uniswapV4OhlcvCandleSchema),
|
|
1235
|
+
fetchedAtMs: zod.z.number(),
|
|
1236
|
+
warnings: zod.z.array(zod.z.string()).optional()
|
|
1237
|
+
}).strict();
|
|
1140
1238
|
var mcpCurveDaoQuoteInputSchema = zod.z.object({
|
|
1141
1239
|
chainId: agentEvmChainIdSchema.describe("EVM chain id (rpcUrl resolved from get_chain_registry rpcGateway)"),
|
|
1142
1240
|
rpcUrl: zod.z.string().min(1).optional().describe("JSON-RPC URL; continuum-mcp-server injects from chain registry \u2014 do not pass a public RPC URL"),
|
|
@@ -2830,11 +2928,27 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
2830
2928
|
chainCategory: "evm",
|
|
2831
2929
|
description: "List standard Uniswap V4 LP pools for a chain (ETH/USDC and other main pairs at common fee tiers). Returns presetId, token addresses, fee, tickSpacing, and computed poolReference (bytes32 pool id). Use presetId as poolPreset on lp_create_position.",
|
|
2832
2930
|
prerequisites: ["chainId"],
|
|
2833
|
-
followUp: ["ctm_uniswap_v4_lp_create_position"],
|
|
2931
|
+
followUp: ["ctm_uniswap_v4_lp_create_position", "ctm_uniswap_v4_fetch_ohlcv"],
|
|
2834
2932
|
handler: { importPath: "protocols/evm/uniswap-v4", exportName: "uniswapV4ListStandardLpPools" },
|
|
2835
2933
|
inputZod: mcpUniswapV4LpListPoolsInputSchema,
|
|
2836
2934
|
outputZod: mcpUniswapV4LpListPoolsOutputSchema
|
|
2837
2935
|
}),
|
|
2936
|
+
defineMcpTool({
|
|
2937
|
+
name: "ctm_uniswap_v4_fetch_ohlcv",
|
|
2938
|
+
actionId: "uniswap-v4.fetch-ohlcv",
|
|
2939
|
+
protocolId: "uniswap-v4",
|
|
2940
|
+
chainCategory: "evm",
|
|
2941
|
+
description: "Pool OHLCV from Uniswap V4 subgraph: native 1h/1d, aggregated multiples (4h/1w/etc.), or swap bucketing for sub-hour (15m). Read-only; does not use Trade API key. Optional THE_GRAPH_API_KEY env for gateway rate limits.",
|
|
2942
|
+
prerequisites: [
|
|
2943
|
+
"chainId with pinned v4 subgraph",
|
|
2944
|
+
"poolPreset or poolReference or existingPool",
|
|
2945
|
+
"interval + lookbackDays or lookbackHours or startTimeMs"
|
|
2946
|
+
],
|
|
2947
|
+
followUp: ["ctm_uniswap_v4_list_lp_pools", "continuum__prepare_chart_from_rows"],
|
|
2948
|
+
handler: { importPath: "protocols/evm/uniswap-v4", exportName: "uniswapV4FetchOhlcv" },
|
|
2949
|
+
inputZod: mcpUniswapV4FetchOhlcvInputSchema,
|
|
2950
|
+
outputZod: mcpUniswapV4FetchOhlcvOutputSchema
|
|
2951
|
+
}),
|
|
2838
2952
|
defineMcpTool({
|
|
2839
2953
|
name: "ctm_uniswap_v4_lp_create_position",
|
|
2840
2954
|
actionId: "uniswap-v4.lp-create",
|
|
@@ -3575,41 +3689,6 @@ function isMapleSyrupSupportedChain(chainId) {
|
|
|
3575
3689
|
return chainId === 1 || chainId === 11155111;
|
|
3576
3690
|
}
|
|
3577
3691
|
|
|
3578
|
-
// src/core/defiProxy.ts
|
|
3579
|
-
var aaveGraphqlProxyUrl;
|
|
3580
|
-
var morphoGraphqlProxyUrl;
|
|
3581
|
-
function getAaveGraphqlProxyUrl() {
|
|
3582
|
-
return aaveGraphqlProxyUrl;
|
|
3583
|
-
}
|
|
3584
|
-
function getMorphoGraphqlProxyUrl() {
|
|
3585
|
-
return morphoGraphqlProxyUrl;
|
|
3586
|
-
}
|
|
3587
|
-
async function postJsonViaOptionalProxy(args) {
|
|
3588
|
-
const proxy = args.proxyUrl?.trim();
|
|
3589
|
-
if (proxy) {
|
|
3590
|
-
const r2 = await fetch(proxy, {
|
|
3591
|
-
method: "POST",
|
|
3592
|
-
headers: { "content-type": "application/json" },
|
|
3593
|
-
body: JSON.stringify(args.proxyEnvelope ?? args.body)
|
|
3594
|
-
});
|
|
3595
|
-
if (!r2.ok) {
|
|
3596
|
-
const t = await r2.text().catch(() => "");
|
|
3597
|
-
throw new Error(t ? `Proxy HTTP ${r2.status}: ${t.slice(0, 200)}` : `Proxy HTTP ${r2.status}`);
|
|
3598
|
-
}
|
|
3599
|
-
return await r2.json();
|
|
3600
|
-
}
|
|
3601
|
-
const r = await fetch(args.directUrl, {
|
|
3602
|
-
method: "POST",
|
|
3603
|
-
headers: { "content-type": "application/json" },
|
|
3604
|
-
body: JSON.stringify(args.body)
|
|
3605
|
-
});
|
|
3606
|
-
if (!r.ok) {
|
|
3607
|
-
const t = await r.text().catch(() => "");
|
|
3608
|
-
throw new Error(t ? `HTTP ${r.status}: ${t.slice(0, 200)}` : `HTTP ${r.status}`);
|
|
3609
|
-
}
|
|
3610
|
-
return await r.json();
|
|
3611
|
-
}
|
|
3612
|
-
|
|
3613
3692
|
// src/protocols/evm/maple/index.ts
|
|
3614
3693
|
var MAPLE_PROTOCOL_ID = "maple-syrup";
|
|
3615
3694
|
var mapleProtocolModule = {
|
|
@@ -5042,6 +5121,8 @@ exports.mcpUniswapV4BuildMintLiquidityMultisignInputSchema = mcpUniswapV4BuildMi
|
|
|
5042
5121
|
exports.mcpUniswapV4BuildSwapMultisignInputSchema = mcpUniswapV4BuildSwapMultisignInputSchema;
|
|
5043
5122
|
exports.mcpUniswapV4CreateSwapInputSchema = mcpUniswapV4CreateSwapInputSchema;
|
|
5044
5123
|
exports.mcpUniswapV4CreateSwapOutputSchema = mcpUniswapV4CreateSwapOutputSchema;
|
|
5124
|
+
exports.mcpUniswapV4FetchOhlcvInputSchema = mcpUniswapV4FetchOhlcvInputSchema;
|
|
5125
|
+
exports.mcpUniswapV4FetchOhlcvOutputSchema = mcpUniswapV4FetchOhlcvOutputSchema;
|
|
5045
5126
|
exports.mcpUniswapV4LpClaimInputSchema = mcpUniswapV4LpClaimInputSchema;
|
|
5046
5127
|
exports.mcpUniswapV4LpClaimOutputSchema = mcpUniswapV4LpClaimOutputSchema;
|
|
5047
5128
|
exports.mcpUniswapV4LpCreatePositionInputSchema = mcpUniswapV4LpCreatePositionInputSchema;
|