@continuumdao/ctm-mpc-defi 0.2.7 → 0.2.8
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 +122 -103
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +38 -5
- package/dist/agent/catalog.js +119 -103
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/_shared/multisign-mcp-gas.md +20 -0
- package/dist/agent/skills/aave-v4/SKILL.md +0 -7
- package/dist/agent/skills/curve-dao/SKILL.md +0 -7
- package/dist/agent/skills/ethena/SKILL.md +1 -1
- package/dist/agent/skills/euler-v2/SKILL.md +1 -1
- package/dist/agent/skills/gmx/SKILL.md +29 -2
- package/dist/agent/skills/lido/SKILL.md +1 -1
- package/dist/agent/skills/maple-syrup/SKILL.md +1 -1
- package/dist/agent/skills/sky/SKILL.md +1 -1
- package/dist/agent/skills/uniswap-v4/SKILL.md +0 -7
- package/package.json +1 -1
package/dist/agent/catalog.js
CHANGED
|
@@ -379,7 +379,7 @@ var EVM_COMMON_PARAM_DOCS = {
|
|
|
379
379
|
useCustomGas: {
|
|
380
380
|
type: "boolean",
|
|
381
381
|
required: true,
|
|
382
|
-
description: "When true, apply
|
|
382
|
+
description: "When true, apply Custom Gas Config from chainDetail / customGasChainDetails. Omitted baseFee/priorityFee is valid \u2014 live RPC fees are used at proposal; configured values are optional floors/multipliers. When false, use live RPC estimates only."
|
|
383
383
|
},
|
|
384
384
|
chainId: {
|
|
385
385
|
type: "number",
|
|
@@ -407,8 +407,17 @@ var EVM_COMMON_PARAM_DOCS = {
|
|
|
407
407
|
description: "Snapshot written to extraJSON.customGasChainDetails when useCustomGas is true."
|
|
408
408
|
}
|
|
409
409
|
};
|
|
410
|
+
var MULTISIGN_SUBMIT_OUTPUT_DOC = {
|
|
411
|
+
description: "Submitted mpc-auth multiSignRequest id. continuum-mcp-server builds, signs the management envelope, and POSTs /multiSignRequest. Continue with wait_for_sign_request_ready \u2192 sign_request_agree \u2192 trigger_sign_result \u2192 broadcast_sign_result. Do not call the same build tool again if requestId was returned.",
|
|
412
|
+
fields: {
|
|
413
|
+
requestId: {
|
|
414
|
+
type: "string",
|
|
415
|
+
description: "Sign request id from POST /multiSignRequest."
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
};
|
|
410
419
|
var MULTISIGN_OUTPUT_DOC = {
|
|
411
|
-
description: "Unsigned mpc-auth multiSignRequest payload.
|
|
420
|
+
description: "Unsigned mpc-auth multiSignRequest payload from protocol builders. MCP agents receive { requestId } instead; node-app callers sign messageToSign and POST { ...bodyForSign, clientSig, signedMessage }.",
|
|
412
421
|
fields: {
|
|
413
422
|
bodyForSign: {
|
|
414
423
|
type: "object",
|
|
@@ -457,6 +466,21 @@ var MANAGEMENT_SIG_DOC = {
|
|
|
457
466
|
fetchPreferredKeyGen: "GET /getPreferredKeyGen for agent default KeyGen."
|
|
458
467
|
}
|
|
459
468
|
};
|
|
469
|
+
|
|
470
|
+
// src/agent/mcpMultisignSubmitMeta.ts
|
|
471
|
+
var MCP_MULTISIGN_SUBMIT_DESCRIPTION_SUFFIX = "Builds the unsigned batch, signs the management envelope, and POSTs /multiSignRequest. Returns { requestId } on success \u2014 do not call again; use list_sign_requests to verify duplicates.";
|
|
472
|
+
var MCP_MULTISIGN_SUBMIT_FOLLOW_UP = [
|
|
473
|
+
"wait_for_sign_request_ready",
|
|
474
|
+
"sign_request_agree",
|
|
475
|
+
"trigger_sign_result",
|
|
476
|
+
"broadcast_sign_result"
|
|
477
|
+
];
|
|
478
|
+
function withMultisignSubmitMcpMeta(description, followUp = MCP_MULTISIGN_SUBMIT_FOLLOW_UP) {
|
|
479
|
+
return {
|
|
480
|
+
description: `${description.trim()} ${MCP_MULTISIGN_SUBMIT_DESCRIPTION_SUFFIX}`,
|
|
481
|
+
followUp: [...followUp]
|
|
482
|
+
};
|
|
483
|
+
}
|
|
460
484
|
function zodSchemaToMcpJsonSchema(schema) {
|
|
461
485
|
const raw = zodToJsonSchema(schema, {
|
|
462
486
|
target: "openApi3",
|
|
@@ -501,7 +525,7 @@ var evmMultisignCommonInputSchema = z.object({
|
|
|
501
525
|
"Human-readable purpose for the sign request. Stored in bodyForSign.purpose (may be appended with an automatic batch suffix)."
|
|
502
526
|
),
|
|
503
527
|
useCustomGas: z.boolean().describe(
|
|
504
|
-
"When true, apply
|
|
528
|
+
"When true, apply Custom Gas Config from chainDetail / customGasChainDetails. Omitted baseFee/priorityFee is valid \u2014 builder uses live RPC fees; configured values are optional floors/multipliers. When false, use live RPC estimates only."
|
|
505
529
|
),
|
|
506
530
|
chainId: z.number().int().positive().describe("EVM chain id (decimal). Becomes destinationChainID on the sign request."),
|
|
507
531
|
rpcUrl: z.string().min(1).describe("HTTPS JSON-RPC URL for gas estimation, nonce, and allowance reads."),
|
|
@@ -517,9 +541,12 @@ var multisignOutputSchema = z.object({
|
|
|
517
541
|
),
|
|
518
542
|
messageToSign: z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig.")
|
|
519
543
|
}).describe(
|
|
520
|
-
"Unsigned mpc-auth multiSignRequest payload
|
|
544
|
+
"Unsigned mpc-auth multiSignRequest payload from protocol builders (used internally before management submit)."
|
|
521
545
|
);
|
|
522
546
|
var jsonObjectSchema = z.record(z.unknown());
|
|
547
|
+
function parseMultisignBuilderOutput(data) {
|
|
548
|
+
return multisignOutputSchema.parse(data);
|
|
549
|
+
}
|
|
523
550
|
var uniswapQuoteTradeTypeSchema = z.enum(["EXACT_INPUT", "EXACT_OUTPUT"]);
|
|
524
551
|
var mcpUniswapV4QuoteInputSchema = z.object({
|
|
525
552
|
type: uniswapQuoteTradeTypeSchema.describe("EXACT_INPUT or EXACT_OUTPUT"),
|
|
@@ -738,6 +765,26 @@ var mcpCurveDaoBuildSwapMultisignInputSchema = evmMultisignCommonInputSchema.ext
|
|
|
738
765
|
amountHuman: z.string().min(1).describe("Human-readable amount of tokenIn"),
|
|
739
766
|
slippagePercent: z.number().gt(0).lt(100).describe("Slippage 0\u2013100 exclusive")
|
|
740
767
|
});
|
|
768
|
+
var mcpServerCommonInputSchema = z.object({
|
|
769
|
+
keyGenId: z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
|
|
770
|
+
chainId: z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
|
|
771
|
+
purposeText: z.string().min(1).describe("Human-readable purpose for the sign request"),
|
|
772
|
+
useCustomGas: z.boolean().optional().describe("Apply chain gas settings from registry when true")
|
|
773
|
+
});
|
|
774
|
+
function mcpServerMultisignInput(fields) {
|
|
775
|
+
return mcpServerCommonInputSchema.extend(fields);
|
|
776
|
+
}
|
|
777
|
+
var mcpServerSubmitOutputSchema = z.object({
|
|
778
|
+
requestId: z.string().min(1).describe("Sign request id from POST /multiSignRequest \u2014 success; do not retry the same build tool.")
|
|
779
|
+
}).describe(
|
|
780
|
+
"Submitted mpc-auth multiSignRequest. Continue with wait_for_sign_request_ready \u2192 sign_request_agree \u2192 trigger_sign_result \u2192 broadcast_sign_result."
|
|
781
|
+
);
|
|
782
|
+
var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
783
|
+
"ctm_uniswap_v4_quote",
|
|
784
|
+
"ctm_uniswap_v4_create_swap"
|
|
785
|
+
]);
|
|
786
|
+
|
|
787
|
+
// src/agent/schemas/protocols.ts
|
|
741
788
|
function mcpMultisignInput(fields) {
|
|
742
789
|
return evmMultisignCommonInputSchema.extend(fields);
|
|
743
790
|
}
|
|
@@ -1028,13 +1075,16 @@ var mcpGmxFetchOhlcvOutputSchema = z.object({
|
|
|
1028
1075
|
|
|
1029
1076
|
// src/agent/mcpProtocolTools.ts
|
|
1030
1077
|
function defineProtocolMcpTool(def) {
|
|
1078
|
+
const meta = withMultisignSubmitMcpMeta(def.description, def.followUp ?? MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
1031
1079
|
return {
|
|
1032
1080
|
...def,
|
|
1033
|
-
|
|
1081
|
+
description: meta.description,
|
|
1082
|
+
followUp: meta.followUp,
|
|
1083
|
+
outputZod: mcpServerSubmitOutputSchema,
|
|
1034
1084
|
inputSchema: zodSchemaToMcpJsonSchema(def.inputZod),
|
|
1035
|
-
outputSchema: zodSchemaToMcpJsonSchema(
|
|
1085
|
+
outputSchema: zodSchemaToMcpJsonSchema(mcpServerSubmitOutputSchema),
|
|
1036
1086
|
parseInput: (data) => def.inputZod.parse(data),
|
|
1037
|
-
parseOutput: (data) =>
|
|
1087
|
+
parseOutput: (data) => mcpServerSubmitOutputSchema.parse(data)
|
|
1038
1088
|
};
|
|
1039
1089
|
}
|
|
1040
1090
|
var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
@@ -1043,9 +1093,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1043
1093
|
actionId: "lido.submit",
|
|
1044
1094
|
protocolId: "lido",
|
|
1045
1095
|
chainCategory: "evm",
|
|
1046
|
-
description: "
|
|
1096
|
+
description: "Create and submit mpc-auth multiSignRequest for Lido ETH stake (submit).",
|
|
1047
1097
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1048
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1049
1098
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoSubmit" },
|
|
1050
1099
|
inputZod: mcpLidoSubmitInputSchema
|
|
1051
1100
|
}),
|
|
@@ -1056,7 +1105,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1056
1105
|
chainCategory: "evm",
|
|
1057
1106
|
description: "Build batch for Lido withdrawal queue (approve + requestWithdrawals).",
|
|
1058
1107
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1059
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1060
1108
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoRequestWithdrawals" },
|
|
1061
1109
|
inputZod: mcpLidoRequestWithdrawalsInputSchema
|
|
1062
1110
|
}),
|
|
@@ -1067,7 +1115,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1067
1115
|
chainCategory: "evm",
|
|
1068
1116
|
description: "Build tx for Lido claimWithdrawal.",
|
|
1069
1117
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1070
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1071
1118
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoClaimWithdrawal" },
|
|
1072
1119
|
inputZod: mcpLidoClaimWithdrawalInputSchema
|
|
1073
1120
|
}),
|
|
@@ -1078,7 +1125,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1078
1125
|
chainCategory: "evm",
|
|
1079
1126
|
description: "Build batch for wstETH wrap.",
|
|
1080
1127
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1081
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1082
1128
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoWrapStEth" },
|
|
1083
1129
|
inputZod: mcpLidoWrapStEthInputSchema
|
|
1084
1130
|
}),
|
|
@@ -1089,7 +1135,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1089
1135
|
chainCategory: "evm",
|
|
1090
1136
|
description: "Build tx for wstETH unwrap.",
|
|
1091
1137
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1092
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1093
1138
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoUnwrapWstEth" },
|
|
1094
1139
|
inputZod: mcpLidoUnwrapWstEthInputSchema
|
|
1095
1140
|
}),
|
|
@@ -1100,7 +1145,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1100
1145
|
chainCategory: "evm",
|
|
1101
1146
|
description: "Build batch: USDe approve + sUSDe deposit.",
|
|
1102
1147
|
prerequisites: ["keyGen", "executorAddress", "Ethereum mainnet RPC"],
|
|
1103
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1104
1148
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaUsdeStakeToSusde" },
|
|
1105
1149
|
inputZod: mcpEthenaStakeInputSchema
|
|
1106
1150
|
}),
|
|
@@ -1111,7 +1155,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1111
1155
|
chainCategory: "evm",
|
|
1112
1156
|
description: "Build sUSDe redeem when cooldown is off.",
|
|
1113
1157
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1114
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1115
1158
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaSusdeRedeemToUsde" },
|
|
1116
1159
|
inputZod: mcpEthenaRedeemInputSchema
|
|
1117
1160
|
}),
|
|
@@ -1122,7 +1165,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1122
1165
|
chainCategory: "evm",
|
|
1123
1166
|
description: "Build sUSDe cooldownShares batch step.",
|
|
1124
1167
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1125
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1126
1168
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaSusdeCooldownShares" },
|
|
1127
1169
|
inputZod: mcpEthenaCooldownInputSchema
|
|
1128
1170
|
}),
|
|
@@ -1133,7 +1175,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1133
1175
|
chainCategory: "evm",
|
|
1134
1176
|
description: "Build unstake claim after cooldown.",
|
|
1135
1177
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1136
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1137
1178
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaUnstakeClaim" },
|
|
1138
1179
|
inputZod: mcpEthenaClaimInputSchema
|
|
1139
1180
|
}),
|
|
@@ -1144,7 +1185,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1144
1185
|
chainCategory: "evm",
|
|
1145
1186
|
description: "Build Maple Syrup router deposit batch.",
|
|
1146
1187
|
prerequisites: ["keyGen", "executorAddress", "router + pool addresses"],
|
|
1147
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1148
1188
|
handler: { importPath: "protocols/evm/maple", exportName: "buildEvmMultisignBodyMapleSyrupDeposit" },
|
|
1149
1189
|
inputZod: mcpMapleDepositInputSchema
|
|
1150
1190
|
}),
|
|
@@ -1155,7 +1195,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1155
1195
|
chainCategory: "evm",
|
|
1156
1196
|
description: "Build Maple PoolV2 requestRedeem batch.",
|
|
1157
1197
|
prerequisites: ["keyGen", "executorAddress", "pool address"],
|
|
1158
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1159
1198
|
handler: { importPath: "protocols/evm/maple", exportName: "buildEvmMultisignBodyMaplePoolRequestRedeem" },
|
|
1160
1199
|
inputZod: mcpMapleRequestRedeemInputSchema
|
|
1161
1200
|
}),
|
|
@@ -1166,7 +1205,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1166
1205
|
chainCategory: "evm",
|
|
1167
1206
|
description: "Build Sky Lockstake open/stake batch.",
|
|
1168
1207
|
prerequisites: ["keyGen", "executorAddress", "Ethereum mainnet RPC"],
|
|
1169
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1170
1208
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeStakePositionBatch" },
|
|
1171
1209
|
inputZod: mcpSkyLockstakeStakeInputSchema
|
|
1172
1210
|
}),
|
|
@@ -1177,7 +1215,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1177
1215
|
chainCategory: "evm",
|
|
1178
1216
|
description: "Build Lockstake draw (borrow USDS).",
|
|
1179
1217
|
prerequisites: ["keyGen", "executorAddress", "open urn"],
|
|
1180
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1181
1218
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeDrawBatch" },
|
|
1182
1219
|
inputZod: mcpSkyLockstakeDrawInputSchema
|
|
1183
1220
|
}),
|
|
@@ -1188,7 +1225,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1188
1225
|
chainCategory: "evm",
|
|
1189
1226
|
description: "Build Lockstake repay/wipe batch.",
|
|
1190
1227
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1191
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1192
1228
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeWipeBatch" },
|
|
1193
1229
|
inputZod: mcpSkyLockstakeWipeInputSchema
|
|
1194
1230
|
}),
|
|
@@ -1199,7 +1235,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1199
1235
|
chainCategory: "evm",
|
|
1200
1236
|
description: "Build Lockstake close position batch.",
|
|
1201
1237
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1202
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1203
1238
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeCloseBatch" },
|
|
1204
1239
|
inputZod: mcpSkyLockstakeCloseInputSchema
|
|
1205
1240
|
}),
|
|
@@ -1210,7 +1245,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1210
1245
|
chainCategory: "evm",
|
|
1211
1246
|
description: "Build Lockstake getReward batch.",
|
|
1212
1247
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1213
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1214
1248
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeGetRewardBatch" },
|
|
1215
1249
|
inputZod: mcpSkyLockstakeGetRewardInputSchema
|
|
1216
1250
|
}),
|
|
@@ -1221,7 +1255,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1221
1255
|
chainCategory: "evm",
|
|
1222
1256
|
description: "Build USDS \u2192 sUSDS ERC-4626 deposit batch.",
|
|
1223
1257
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1224
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1225
1258
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkySusdsDepositFromUsdsBatch" },
|
|
1226
1259
|
inputZod: mcpSkySusdsDepositInputSchema
|
|
1227
1260
|
}),
|
|
@@ -1232,7 +1265,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1232
1265
|
chainCategory: "evm",
|
|
1233
1266
|
description: "Build sUSDS redeem to USDS batch.",
|
|
1234
1267
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1235
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1236
1268
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkySusdsRedeemToUsdsBatch" },
|
|
1237
1269
|
inputZod: mcpSkySusdsRedeemInputSchema
|
|
1238
1270
|
}),
|
|
@@ -1243,7 +1275,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1243
1275
|
chainCategory: "evm",
|
|
1244
1276
|
description: "Build Aave v4 Spoke supply/deposit batch (wrap native, approve, supply).",
|
|
1245
1277
|
prerequisites: ["keyGenId", "chainId", "underlying", "amountHuman", "get_defi_protocol_skill for hubs/spokes"],
|
|
1246
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1247
1278
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4DepositBatch" },
|
|
1248
1279
|
inputZod: mcpAaveV4DepositInputSchema
|
|
1249
1280
|
}),
|
|
@@ -1254,7 +1285,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1254
1285
|
chainCategory: "evm",
|
|
1255
1286
|
description: "Build Aave v4 Spoke withdraw; health-factor preview when user has borrow debt.",
|
|
1256
1287
|
prerequisites: ["keyGenId", "chainId", "underlying (supplied asset)", "amountHuman"],
|
|
1257
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1258
1288
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeWithdraw" },
|
|
1259
1289
|
inputZod: mcpAaveV4WithdrawInputSchema
|
|
1260
1290
|
}),
|
|
@@ -1271,7 +1301,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1271
1301
|
"amountHuman",
|
|
1272
1302
|
"collateral supplied via deposit"
|
|
1273
1303
|
],
|
|
1274
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1275
1304
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeBorrow" },
|
|
1276
1305
|
inputZod: mcpAaveV4BorrowInputSchema
|
|
1277
1306
|
}),
|
|
@@ -1282,7 +1311,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1282
1311
|
chainCategory: "evm",
|
|
1283
1312
|
description: "Build Aave v4 Spoke repay (approve if needed + repay).",
|
|
1284
1313
|
prerequisites: ["keyGenId", "chainId", "underlying (debt token)", "amountHuman"],
|
|
1285
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1286
1314
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeRepay" },
|
|
1287
1315
|
inputZod: mcpAaveV4RepayInputSchema
|
|
1288
1316
|
}),
|
|
@@ -1293,7 +1321,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1293
1321
|
chainCategory: "evm",
|
|
1294
1322
|
description: "Build Euler v2 vault deposit/lend batch.",
|
|
1295
1323
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1296
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1297
1324
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2IsolatedLendDepositBatch" },
|
|
1298
1325
|
inputZod: mcpEulerV2IsolatedLendInputSchema
|
|
1299
1326
|
}),
|
|
@@ -1304,7 +1331,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1304
1331
|
chainCategory: "evm",
|
|
1305
1332
|
description: "Build Euler v2 isolated borrow loop batch.",
|
|
1306
1333
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral"],
|
|
1307
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1308
1334
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2IsolatedBorrowBatch" },
|
|
1309
1335
|
inputZod: mcpEulerV2IsolatedBorrowInputSchema
|
|
1310
1336
|
}),
|
|
@@ -1315,7 +1341,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1315
1341
|
chainCategory: "evm",
|
|
1316
1342
|
description: "Build Euler v2 vault withdraw/redeem batch.",
|
|
1317
1343
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1318
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1319
1344
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2VaultWithdraw" },
|
|
1320
1345
|
inputZod: mcpEulerV2VaultWithdrawInputSchema
|
|
1321
1346
|
}),
|
|
@@ -1326,7 +1351,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1326
1351
|
chainCategory: "evm",
|
|
1327
1352
|
description: "Build Euler v2 borrow repay batch.",
|
|
1328
1353
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1329
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1330
1354
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowRepayBatch" },
|
|
1331
1355
|
inputZod: mcpEulerV2BorrowRepayInputSchema
|
|
1332
1356
|
}),
|
|
@@ -1337,7 +1361,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1337
1361
|
chainCategory: "evm",
|
|
1338
1362
|
description: "Build Euler v2 borrow collateral deposit batch.",
|
|
1339
1363
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral asset"],
|
|
1340
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1341
1364
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralDepositBatch" },
|
|
1342
1365
|
inputZod: mcpEulerV2CollateralDepositInputSchema
|
|
1343
1366
|
}),
|
|
@@ -1348,7 +1371,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1348
1371
|
chainCategory: "evm",
|
|
1349
1372
|
description: "Build Euler v2 borrow collateral withdraw batch.",
|
|
1350
1373
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral asset"],
|
|
1351
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1352
1374
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralWithdrawBatch" },
|
|
1353
1375
|
inputZod: mcpEulerV2CollateralWithdrawInputSchema
|
|
1354
1376
|
}),
|
|
@@ -1357,9 +1379,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1357
1379
|
actionId: "gmx.increase",
|
|
1358
1380
|
protocolId: "gmx",
|
|
1359
1381
|
chainCategory: "evm",
|
|
1360
|
-
description: "
|
|
1382
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX classic increase order (open/add perp). Keeper executes asynchronously after on-chain broadcast.",
|
|
1361
1383
|
prerequisites: ["keyGen", "executorAddress", "GMX market symbol", "classic mode only \u2014 no subaccounts"],
|
|
1362
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1363
1384
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxIncreaseBatch" },
|
|
1364
1385
|
inputZod: mcpGmxIncreaseInputSchema
|
|
1365
1386
|
}),
|
|
@@ -1368,9 +1389,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1368
1389
|
actionId: "gmx.decrease",
|
|
1369
1390
|
protocolId: "gmx",
|
|
1370
1391
|
chainCategory: "evm",
|
|
1371
|
-
description: "
|
|
1392
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX classic decrease order (close/reduce perp).",
|
|
1372
1393
|
prerequisites: ["keyGen", "executorAddress", "position market symbol"],
|
|
1373
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1374
1394
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxDecreaseBatch" },
|
|
1375
1395
|
inputZod: mcpGmxDecreaseInputSchema
|
|
1376
1396
|
}),
|
|
@@ -1379,9 +1399,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1379
1399
|
actionId: "gmx.cancel",
|
|
1380
1400
|
protocolId: "gmx",
|
|
1381
1401
|
chainCategory: "evm",
|
|
1382
|
-
description: "
|
|
1402
|
+
description: "Create and submit mpc-auth multiSignRequest to cancel a pending GMX order (classic on-chain).",
|
|
1383
1403
|
prerequisites: ["keyGen", "executorAddress", "orderId from fetchOrders"],
|
|
1384
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1385
1404
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxCancelBatch" },
|
|
1386
1405
|
inputZod: mcpGmxCancelInputSchema
|
|
1387
1406
|
}),
|
|
@@ -1390,9 +1409,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1390
1409
|
actionId: "gmx.gmDeposit",
|
|
1391
1410
|
protocolId: "gmx",
|
|
1392
1411
|
chainCategory: "evm",
|
|
1393
|
-
description: "
|
|
1412
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX GM pool deposit (ExchangeRouter multicall). Keeper executes asynchronously.",
|
|
1394
1413
|
prerequisites: ["keyGen", "executorAddress", "marketSymbol", "collateral token"],
|
|
1395
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1396
1414
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxGmDepositBatch" },
|
|
1397
1415
|
inputZod: mcpGmxGmDepositInputSchema
|
|
1398
1416
|
}),
|
|
@@ -1401,9 +1419,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1401
1419
|
actionId: "gmx.gmWithdraw",
|
|
1402
1420
|
protocolId: "gmx",
|
|
1403
1421
|
chainCategory: "evm",
|
|
1404
|
-
description: "
|
|
1422
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX GM pool withdrawal (ExchangeRouter multicall). Keeper executes asynchronously.",
|
|
1405
1423
|
prerequisites: ["keyGen", "executorAddress", "GM market token balance"],
|
|
1406
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1407
1424
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxGmWithdrawBatch" },
|
|
1408
1425
|
inputZod: mcpGmxGmWithdrawInputSchema
|
|
1409
1426
|
}),
|
|
@@ -1412,9 +1429,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1412
1429
|
actionId: "gmx.stakeGmx",
|
|
1413
1430
|
protocolId: "gmx",
|
|
1414
1431
|
chainCategory: "evm",
|
|
1415
|
-
description: "
|
|
1432
|
+
description: "Create and submit mpc-auth multiSignRequest to stake GMX via RewardRouter.",
|
|
1416
1433
|
prerequisites: ["keyGen", "executorAddress", "GMX token balance"],
|
|
1417
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1418
1434
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxStakeGmxBatch" },
|
|
1419
1435
|
inputZod: mcpGmxStakeGmxInputSchema
|
|
1420
1436
|
}),
|
|
@@ -1423,9 +1439,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1423
1439
|
actionId: "gmx.unstakeGmx",
|
|
1424
1440
|
protocolId: "gmx",
|
|
1425
1441
|
chainCategory: "evm",
|
|
1426
|
-
description: "
|
|
1442
|
+
description: "Create and submit mpc-auth multiSignRequest to unstake GMX via RewardRouter.",
|
|
1427
1443
|
prerequisites: ["keyGen", "executorAddress", "staked GMX balance"],
|
|
1428
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1429
1444
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxUnstakeGmxBatch" },
|
|
1430
1445
|
inputZod: mcpGmxUnstakeGmxInputSchema
|
|
1431
1446
|
})
|
|
@@ -1441,6 +1456,15 @@ function defineMcpTool(def) {
|
|
|
1441
1456
|
parseOutput: (data) => def.outputZod.parse(data)
|
|
1442
1457
|
};
|
|
1443
1458
|
}
|
|
1459
|
+
function defineMultisignSubmitMcpTool(def) {
|
|
1460
|
+
const meta = withMultisignSubmitMcpMeta(def.description, def.followUp ?? MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
1461
|
+
return defineMcpTool({
|
|
1462
|
+
...def,
|
|
1463
|
+
description: meta.description,
|
|
1464
|
+
followUp: meta.followUp,
|
|
1465
|
+
outputZod: mcpServerSubmitOutputSchema
|
|
1466
|
+
});
|
|
1467
|
+
}
|
|
1444
1468
|
var CORE_MCP_TOOL_DEFINITIONS = [
|
|
1445
1469
|
defineMcpTool({
|
|
1446
1470
|
name: "ctm_uniswap_v4_quote",
|
|
@@ -1473,20 +1497,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1473
1497
|
inputZod: mcpUniswapV4CreateSwapInputSchema,
|
|
1474
1498
|
outputZod: mcpUniswapV4CreateSwapOutputSchema
|
|
1475
1499
|
}),
|
|
1476
|
-
|
|
1500
|
+
defineMultisignSubmitMcpTool({
|
|
1477
1501
|
name: "ctm_uniswap_v4_build_swap_multisign",
|
|
1478
1502
|
actionId: "uniswap-v4.swap-exact-input",
|
|
1479
1503
|
protocolId: "uniswap-v4",
|
|
1480
1504
|
chainCategory: "evm",
|
|
1481
|
-
description: "
|
|
1505
|
+
description: "Create and submit mpc-auth multiSignRequest for a Uniswap V4 swap. May batch 1\u20133 EVM txs: ERC-20 approve(s) + Universal Router swap (or 1 tx for native-in).",
|
|
1482
1506
|
prerequisites: [
|
|
1483
1507
|
"ctm_uniswap_v4_create_swap output + matching quote snapshot and swapDeadlineUnix",
|
|
1484
1508
|
"keyGenId + chainId + purposeText"
|
|
1485
1509
|
],
|
|
1486
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest with clientSig and signedMessage"],
|
|
1487
1510
|
handler: { importPath: "protocols/evm/uniswap-v4", exportName: "buildEvmMultisignBodyUniswapV4SkipPermit2Batch" },
|
|
1488
|
-
inputZod: mcpUniswapV4BuildSwapMultisignInputSchema
|
|
1489
|
-
outputZod: multisignOutputSchema
|
|
1511
|
+
inputZod: mcpUniswapV4BuildSwapMultisignInputSchema
|
|
1490
1512
|
}),
|
|
1491
1513
|
defineMcpTool({
|
|
1492
1514
|
name: "ctm_uniswap_v4_list_lp_pools",
|
|
@@ -1516,24 +1538,22 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1516
1538
|
inputZod: mcpUniswapV4LpCreatePositionInputSchema,
|
|
1517
1539
|
outputZod: mcpUniswapV4LpCreatePositionOutputSchema
|
|
1518
1540
|
}),
|
|
1519
|
-
|
|
1541
|
+
defineMultisignSubmitMcpTool({
|
|
1520
1542
|
name: "ctm_uniswap_v4_build_mint_liquidity_multisign",
|
|
1521
1543
|
actionId: "uniswap-v4.mint-liquidity",
|
|
1522
1544
|
protocolId: "uniswap-v4",
|
|
1523
1545
|
chainCategory: "evm",
|
|
1524
|
-
description: "
|
|
1546
|
+
description: "Create and submit mpc-auth multiSignRequest for minting a Uniswap V4 LP position. Batches ERC-20 approve(s) + Position Manager tx from LP create response.",
|
|
1525
1547
|
prerequisites: ["ctm_uniswap_v4_lp_create_position output", "keyGenId + chainId + purposeText"],
|
|
1526
1548
|
followUp: [
|
|
1527
|
-
|
|
1528
|
-
"
|
|
1529
|
-
"After execute: ctm_uniswap_v4_register_position_from_mint_tx (mint tx hash)"
|
|
1549
|
+
...MCP_MULTISIGN_SUBMIT_FOLLOW_UP,
|
|
1550
|
+
"After broadcast: ctm_uniswap_v4_register_position_from_mint_tx (mint tx hash)"
|
|
1530
1551
|
],
|
|
1531
1552
|
handler: {
|
|
1532
1553
|
importPath: "protocols/evm/uniswap-v4",
|
|
1533
1554
|
exportName: "buildEvmMultisignBodyUniswapV4MintLiquidityBatch"
|
|
1534
1555
|
},
|
|
1535
|
-
inputZod: mcpUniswapV4BuildMintLiquidityMultisignInputSchema
|
|
1536
|
-
outputZod: multisignOutputSchema
|
|
1556
|
+
inputZod: mcpUniswapV4BuildMintLiquidityMultisignInputSchema
|
|
1537
1557
|
}),
|
|
1538
1558
|
defineMcpTool({
|
|
1539
1559
|
name: "ctm_uniswap_v4_lp_increase",
|
|
@@ -1547,20 +1567,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1547
1567
|
inputZod: mcpUniswapV4LpIncreaseInputSchema,
|
|
1548
1568
|
outputZod: mcpUniswapV4LpIncreaseOutputSchema
|
|
1549
1569
|
}),
|
|
1550
|
-
|
|
1570
|
+
defineMultisignSubmitMcpTool({
|
|
1551
1571
|
name: "ctm_uniswap_v4_build_increase_liquidity_multisign",
|
|
1552
1572
|
actionId: "uniswap-v4.increase-liquidity",
|
|
1553
1573
|
protocolId: "uniswap-v4",
|
|
1554
1574
|
chainCategory: "evm",
|
|
1555
|
-
description: "
|
|
1575
|
+
description: "Create and submit mpc-auth multiSignRequest to increase Uniswap V4 position liquidity.",
|
|
1556
1576
|
prerequisites: ["ctm_uniswap_v4_lp_increase output"],
|
|
1557
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1558
1577
|
handler: {
|
|
1559
1578
|
importPath: "protocols/evm/uniswap-v4",
|
|
1560
1579
|
exportName: "buildEvmMultisignBodyUniswapV4IncreaseLiquidityBatch"
|
|
1561
1580
|
},
|
|
1562
|
-
inputZod: mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema
|
|
1563
|
-
outputZod: multisignOutputSchema
|
|
1581
|
+
inputZod: mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema
|
|
1564
1582
|
}),
|
|
1565
1583
|
defineMcpTool({
|
|
1566
1584
|
name: "ctm_uniswap_v4_lp_decrease",
|
|
@@ -1574,20 +1592,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1574
1592
|
inputZod: mcpUniswapV4LpDecreaseInputSchema,
|
|
1575
1593
|
outputZod: mcpUniswapV4LpDecreaseOutputSchema
|
|
1576
1594
|
}),
|
|
1577
|
-
|
|
1595
|
+
defineMultisignSubmitMcpTool({
|
|
1578
1596
|
name: "ctm_uniswap_v4_build_decrease_liquidity_multisign",
|
|
1579
1597
|
actionId: "uniswap-v4.decrease-liquidity",
|
|
1580
1598
|
protocolId: "uniswap-v4",
|
|
1581
1599
|
chainCategory: "evm",
|
|
1582
|
-
description: "
|
|
1600
|
+
description: "Create and submit mpc-auth multiSignRequest to decrease Uniswap V4 position liquidity.",
|
|
1583
1601
|
prerequisites: ["ctm_uniswap_v4_lp_decrease output"],
|
|
1584
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1585
1602
|
handler: {
|
|
1586
1603
|
importPath: "protocols/evm/uniswap-v4",
|
|
1587
1604
|
exportName: "buildEvmMultisignBodyUniswapV4DecreaseLiquidityBatch"
|
|
1588
1605
|
},
|
|
1589
|
-
inputZod: mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema
|
|
1590
|
-
outputZod: multisignOutputSchema
|
|
1606
|
+
inputZod: mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema
|
|
1591
1607
|
}),
|
|
1592
1608
|
defineMcpTool({
|
|
1593
1609
|
name: "ctm_uniswap_v4_lp_collect",
|
|
@@ -1601,20 +1617,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1601
1617
|
inputZod: mcpUniswapV4LpClaimInputSchema,
|
|
1602
1618
|
outputZod: mcpUniswapV4LpClaimOutputSchema
|
|
1603
1619
|
}),
|
|
1604
|
-
|
|
1620
|
+
defineMultisignSubmitMcpTool({
|
|
1605
1621
|
name: "ctm_uniswap_v4_build_collect_fees_multisign",
|
|
1606
1622
|
actionId: "uniswap-v4.collect-fees",
|
|
1607
1623
|
protocolId: "uniswap-v4",
|
|
1608
1624
|
chainCategory: "evm",
|
|
1609
|
-
description: "
|
|
1625
|
+
description: "Create and submit mpc-auth multiSignRequest to collect fees from a Uniswap V4 position.",
|
|
1610
1626
|
prerequisites: ["ctm_uniswap_v4_lp_collect output"],
|
|
1611
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1612
1627
|
handler: {
|
|
1613
1628
|
importPath: "protocols/evm/uniswap-v4",
|
|
1614
1629
|
exportName: "buildEvmMultisignBodyUniswapV4CollectFeesBatch"
|
|
1615
1630
|
},
|
|
1616
|
-
inputZod: mcpUniswapV4BuildCollectFeesMultisignInputSchema
|
|
1617
|
-
outputZod: multisignOutputSchema
|
|
1631
|
+
inputZod: mcpUniswapV4BuildCollectFeesMultisignInputSchema
|
|
1618
1632
|
}),
|
|
1619
1633
|
defineMcpTool({
|
|
1620
1634
|
name: "ctm_uniswap_v4_lp_list_positions",
|
|
@@ -1677,21 +1691,19 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1677
1691
|
inputZod: mcpCurveDaoQuoteInputSchema,
|
|
1678
1692
|
outputZod: mcpCurveDaoQuoteOutputSchema
|
|
1679
1693
|
}),
|
|
1680
|
-
|
|
1694
|
+
defineMultisignSubmitMcpTool({
|
|
1681
1695
|
name: "ctm_curve_dao_build_swap_multisign",
|
|
1682
1696
|
actionId: "curve-dao.swap",
|
|
1683
1697
|
protocolId: "curve-dao",
|
|
1684
1698
|
chainCategory: "evm",
|
|
1685
|
-
description: "
|
|
1699
|
+
description: "Create and submit mpc-auth multiSignRequest for a Curve Router NG swap via @curvefi/api populateSwap. Optionally batches ERC-20 approve txs when allowance is insufficient, then exchange.",
|
|
1686
1700
|
prerequisites: [
|
|
1687
1701
|
"ctm_curve_dao_quote (recommended)",
|
|
1688
1702
|
"keyGenId + chainId + purposeText + slippagePercent (0\u2013100 exclusive)",
|
|
1689
1703
|
"get_defi_protocol_skill for tokenIn address rules"
|
|
1690
1704
|
],
|
|
1691
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest with clientSig and signedMessage"],
|
|
1692
1705
|
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveDaoBatch" },
|
|
1693
|
-
inputZod: mcpCurveDaoBuildSwapMultisignInputSchema
|
|
1694
|
-
outputZod: multisignOutputSchema
|
|
1706
|
+
inputZod: mcpCurveDaoBuildSwapMultisignInputSchema
|
|
1695
1707
|
}),
|
|
1696
1708
|
defineMcpTool({
|
|
1697
1709
|
name: "ctm_gmx_fetch_markets",
|
|
@@ -1819,6 +1831,7 @@ function getAgentCatalogForMcp() {
|
|
|
1819
1831
|
protocols: getProtocolModules(),
|
|
1820
1832
|
commonParams: EVM_COMMON_PARAM_DOCS,
|
|
1821
1833
|
multisignOutput: MULTISIGN_OUTPUT_DOC,
|
|
1834
|
+
multisignSubmitOutput: MULTISIGN_SUBMIT_OUTPUT_DOC,
|
|
1822
1835
|
managementSig: MANAGEMENT_SIG_DOC,
|
|
1823
1836
|
/** Zod schemas for MCP tool I/O — source of truth for continuum-mcp-server validation. */
|
|
1824
1837
|
inputSchemas: MCP_TOOL_INPUT_SCHEMAS,
|
|
@@ -1827,9 +1840,14 @@ function getAgentCatalogForMcp() {
|
|
|
1827
1840
|
evmSwapTypical: [
|
|
1828
1841
|
"1. Quote (protocol-specific API if needed)",
|
|
1829
1842
|
"2. Build protocol calldata (e.g. create_swap)",
|
|
1830
|
-
"3. build_*_multisign \u2192 {
|
|
1831
|
-
"4.
|
|
1832
|
-
|
|
1843
|
+
"3. build_*_multisign \u2192 { requestId } (MCP auto-submits)",
|
|
1844
|
+
"4. wait_for_sign_request_ready \u2192 sign_request_agree \u2192 trigger_sign_result \u2192 broadcast_sign_result"
|
|
1845
|
+
],
|
|
1846
|
+
evmSwapManualTypical: [
|
|
1847
|
+
"1. Quote (protocol-specific API if needed)",
|
|
1848
|
+
"2. Build protocol calldata",
|
|
1849
|
+
"3. Protocol builder \u2192 { bodyForSign, messageToSign } (node app only)",
|
|
1850
|
+
"4. Sign messageToSign and POST /multiSignRequest with clientSig and signedMessage"
|
|
1833
1851
|
],
|
|
1834
1852
|
managementPostTypical: [
|
|
1835
1853
|
"1. GET /getNodeKey \u2192 nodeKey (128 hex)",
|
|
@@ -2407,12 +2425,26 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
2407
2425
|
function getToolsForProtocol(protocolId) {
|
|
2408
2426
|
return MCP_TOOL_DEFINITIONS.filter((t) => t.protocolId === protocolId);
|
|
2409
2427
|
}
|
|
2428
|
+
function readSharedMultisignMcpGasSection() {
|
|
2429
|
+
try {
|
|
2430
|
+
return readFileSync(join(skillsDir, "_shared", "multisign-mcp-gas.md"), "utf8").trim();
|
|
2431
|
+
} catch {
|
|
2432
|
+
return "";
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2410
2435
|
function getProtocolSkill(protocolId) {
|
|
2411
2436
|
if (!SKILL_PROTOCOL_IDS.includes(protocolId)) {
|
|
2412
2437
|
return void 0;
|
|
2413
2438
|
}
|
|
2414
2439
|
try {
|
|
2415
|
-
|
|
2440
|
+
const skill = readFileSync(join(skillsDir, protocolId, "SKILL.md"), "utf8").trim();
|
|
2441
|
+
const shared = readSharedMultisignMcpGasSection();
|
|
2442
|
+
if (!shared) return skill;
|
|
2443
|
+
if (skill.includes("## Gas and MCP submit")) return skill;
|
|
2444
|
+
return `${skill}
|
|
2445
|
+
|
|
2446
|
+
${shared}
|
|
2447
|
+
`;
|
|
2416
2448
|
} catch {
|
|
2417
2449
|
return void 0;
|
|
2418
2450
|
}
|
|
@@ -2671,22 +2703,6 @@ function getProtocolSupportAdvisor(protocolId) {
|
|
|
2671
2703
|
function listProtocolSupportAdvisorIds() {
|
|
2672
2704
|
return Object.keys(PROTOCOL_SUPPORT_ADVISORS);
|
|
2673
2705
|
}
|
|
2674
|
-
var mcpServerCommonInputSchema = z.object({
|
|
2675
|
-
keyGenId: z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
|
|
2676
|
-
chainId: z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
|
|
2677
|
-
purposeText: z.string().min(1).describe("Human-readable purpose for the sign request"),
|
|
2678
|
-
useCustomGas: z.boolean().optional().describe("Apply chain gas settings from registry when true")
|
|
2679
|
-
});
|
|
2680
|
-
function mcpServerMultisignInput(fields) {
|
|
2681
|
-
return mcpServerCommonInputSchema.extend(fields);
|
|
2682
|
-
}
|
|
2683
|
-
var mcpServerSubmitOutputSchema = z.object({
|
|
2684
|
-
requestId: z.string().min(1)
|
|
2685
|
-
}).describe("mpc-auth multiSignRequest id; continue with trigger_sign_result / broadcast_sign_result");
|
|
2686
|
-
var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2687
|
-
"ctm_uniswap_v4_quote",
|
|
2688
|
-
"ctm_uniswap_v4_create_swap"
|
|
2689
|
-
]);
|
|
2690
2706
|
|
|
2691
2707
|
// src/agent/catalog.ts
|
|
2692
2708
|
registerProtocolModule(uniswapV4ProtocolModule);
|
|
@@ -2720,6 +2736,6 @@ function getAgentCatalog() {
|
|
|
2720
2736
|
};
|
|
2721
2737
|
}
|
|
2722
2738
|
|
|
2723
|
-
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, 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, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema,
|
|
2739
|
+
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, mcpCurveDaoBuildSwapMultisignInputSchema, mcpCurveDaoQuoteInputSchema, mcpCurveDaoQuoteOutputSchema, mcpEthenaClaimInputSchema, mcpEthenaCooldownInputSchema, mcpEthenaRedeemInputSchema, mcpEthenaStakeInputSchema, mcpEulerV2BorrowRepayInputSchema, mcpEulerV2CollateralDepositInputSchema, mcpEulerV2CollateralWithdrawInputSchema, mcpEulerV2IsolatedBorrowInputSchema, mcpEulerV2IsolatedLendInputSchema, mcpEulerV2VaultWithdrawInputSchema, mcpGmxCancelInputSchema, mcpGmxDecreaseInputSchema, mcpGmxFetchGmApyInputSchema, mcpGmxFetchGmApyOutputSchema, mcpGmxFetchGmMarketsInputSchema, mcpGmxFetchGmMarketsOutputSchema, mcpGmxFetchMarketPricesInputSchema, mcpGmxFetchMarketPricesOutputSchema, mcpGmxFetchMarketsInputSchema, mcpGmxFetchMarketsOutputSchema, mcpGmxFetchOhlcvInputSchema, mcpGmxFetchOhlcvOutputSchema, mcpGmxFetchPositionsInputSchema, mcpGmxFetchPositionsOutputSchema, mcpGmxFetchStakingPowerInputSchema, mcpGmxFetchStakingPowerOutputSchema, mcpGmxGmDepositInputSchema, mcpGmxGmWithdrawInputSchema, mcpGmxIncreaseInputSchema, mcpServerSubmitOutputSchema as mcpGmxMultisignOutputSchema, mcpGmxStakeGmxInputSchema, mcpGmxUnstakeGmxInputSchema, mcpLidoClaimWithdrawalInputSchema, mcpLidoRequestWithdrawalsInputSchema, mcpLidoSubmitInputSchema, mcpLidoUnwrapWstEthInputSchema, mcpLidoWrapStEthInputSchema, mcpMapleDepositInputSchema, mcpMapleRequestRedeemInputSchema, mcpMultisignInput, multisignOutputSchema as mcpMultisignOutputSchema, mcpServerSubmitOutputSchema as mcpMultisignSubmitOutputSchema, mcpServerCommonInputSchema, mcpServerMultisignInput, mcpServerSubmitOutputSchema, mcpSkyLockstakeCloseInputSchema, mcpSkyLockstakeDrawInputSchema, mcpSkyLockstakeGetRewardInputSchema, mcpSkyLockstakeStakeInputSchema, mcpSkyLockstakeWipeInputSchema, mcpSkySusdsDepositInputSchema, mcpSkySusdsRedeemInputSchema, mcpUniswapV4BuildCollectFeesMultisignInputSchema, mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema, mcpUniswapV4BuildMintLiquidityMultisignInputSchema, mcpUniswapV4BuildSwapMultisignInputSchema, mcpUniswapV4CreateSwapInputSchema, mcpUniswapV4CreateSwapOutputSchema, mcpUniswapV4LpClaimInputSchema, mcpUniswapV4LpClaimOutputSchema, mcpUniswapV4LpCreatePositionInputSchema, mcpUniswapV4LpCreatePositionOutputSchema, mcpUniswapV4LpDecreaseInputSchema, mcpUniswapV4LpDecreaseOutputSchema, mcpUniswapV4LpIncreaseInputSchema, mcpUniswapV4LpIncreaseOutputSchema, mcpUniswapV4LpListPoolsInputSchema, mcpUniswapV4LpListPoolsOutputSchema, mcpUniswapV4LpListPositionsInputSchema, mcpUniswapV4LpListPositionsOutputSchema, mcpUniswapV4QuoteInputSchema, mcpUniswapV4QuoteOutputSchema, mcpUniswapV4RegisterPositionFromMintTxInputSchema, mcpUniswapV4RegisterPositionFromMintTxOutputSchema, mcpUniswapV4RegisterPositionNftInputSchema, mcpUniswapV4RegisterPositionNftOutputSchema, multisignOutputSchema, parseMcpToolInput, parseMcpToolOutput, parseMultisignBuilderOutput, uniswapQuoteTradeTypeSchema, zodSchemaToMcpJsonSchema };
|
|
2724
2740
|
//# sourceMappingURL=catalog.js.map
|
|
2725
2741
|
//# sourceMappingURL=catalog.js.map
|