@continuumdao/ctm-mpc-defi 0.2.7 → 0.2.9
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 +754 -104
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +693 -5
- package/dist/agent/catalog.js +721 -104
- 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/hyperliquid/SKILL.md +177 -0
- 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/dist/protocols/evm/hyperliquid/index.cjs +1177 -0
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -0
- package/dist/protocols/evm/hyperliquid/index.d.ts +515 -0
- package/dist/protocols/evm/hyperliquid/index.js +1109 -0
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -0
- package/package.json +6 -1
package/dist/agent/catalog.cjs
CHANGED
|
@@ -382,7 +382,7 @@ var EVM_COMMON_PARAM_DOCS = {
|
|
|
382
382
|
useCustomGas: {
|
|
383
383
|
type: "boolean",
|
|
384
384
|
required: true,
|
|
385
|
-
description: "When true, apply
|
|
385
|
+
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."
|
|
386
386
|
},
|
|
387
387
|
chainId: {
|
|
388
388
|
type: "number",
|
|
@@ -410,8 +410,17 @@ var EVM_COMMON_PARAM_DOCS = {
|
|
|
410
410
|
description: "Snapshot written to extraJSON.customGasChainDetails when useCustomGas is true."
|
|
411
411
|
}
|
|
412
412
|
};
|
|
413
|
+
var MULTISIGN_SUBMIT_OUTPUT_DOC = {
|
|
414
|
+
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.",
|
|
415
|
+
fields: {
|
|
416
|
+
requestId: {
|
|
417
|
+
type: "string",
|
|
418
|
+
description: "Sign request id from POST /multiSignRequest."
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
};
|
|
413
422
|
var MULTISIGN_OUTPUT_DOC = {
|
|
414
|
-
description: "Unsigned mpc-auth multiSignRequest payload.
|
|
423
|
+
description: "Unsigned mpc-auth multiSignRequest payload from protocol builders. MCP agents receive { requestId } instead; node-app callers sign messageToSign and POST { ...bodyForSign, clientSig, signedMessage }.",
|
|
415
424
|
fields: {
|
|
416
425
|
bodyForSign: {
|
|
417
426
|
type: "object",
|
|
@@ -460,6 +469,21 @@ var MANAGEMENT_SIG_DOC = {
|
|
|
460
469
|
fetchPreferredKeyGen: "GET /getPreferredKeyGen for agent default KeyGen."
|
|
461
470
|
}
|
|
462
471
|
};
|
|
472
|
+
|
|
473
|
+
// src/agent/mcpMultisignSubmitMeta.ts
|
|
474
|
+
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.";
|
|
475
|
+
var MCP_MULTISIGN_SUBMIT_FOLLOW_UP = [
|
|
476
|
+
"wait_for_sign_request_ready",
|
|
477
|
+
"sign_request_agree",
|
|
478
|
+
"trigger_sign_result",
|
|
479
|
+
"broadcast_sign_result"
|
|
480
|
+
];
|
|
481
|
+
function withMultisignSubmitMcpMeta(description, followUp = MCP_MULTISIGN_SUBMIT_FOLLOW_UP) {
|
|
482
|
+
return {
|
|
483
|
+
description: `${description.trim()} ${MCP_MULTISIGN_SUBMIT_DESCRIPTION_SUFFIX}`,
|
|
484
|
+
followUp: [...followUp]
|
|
485
|
+
};
|
|
486
|
+
}
|
|
463
487
|
function zodSchemaToMcpJsonSchema(schema) {
|
|
464
488
|
const raw = zodToJsonSchema.zodToJsonSchema(schema, {
|
|
465
489
|
target: "openApi3",
|
|
@@ -504,7 +528,7 @@ var evmMultisignCommonInputSchema = zod.z.object({
|
|
|
504
528
|
"Human-readable purpose for the sign request. Stored in bodyForSign.purpose (may be appended with an automatic batch suffix)."
|
|
505
529
|
),
|
|
506
530
|
useCustomGas: zod.z.boolean().describe(
|
|
507
|
-
"When true, apply
|
|
531
|
+
"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."
|
|
508
532
|
),
|
|
509
533
|
chainId: zod.z.number().int().positive().describe("EVM chain id (decimal). Becomes destinationChainID on the sign request."),
|
|
510
534
|
rpcUrl: zod.z.string().min(1).describe("HTTPS JSON-RPC URL for gas estimation, nonce, and allowance reads."),
|
|
@@ -520,9 +544,12 @@ var multisignOutputSchema = zod.z.object({
|
|
|
520
544
|
),
|
|
521
545
|
messageToSign: zod.z.string().describe("JSON.stringify(bodyForSign) \u2014 exact string to sign before adding clientSig.")
|
|
522
546
|
}).describe(
|
|
523
|
-
"Unsigned mpc-auth multiSignRequest payload
|
|
547
|
+
"Unsigned mpc-auth multiSignRequest payload from protocol builders (used internally before management submit)."
|
|
524
548
|
);
|
|
525
549
|
var jsonObjectSchema = zod.z.record(zod.z.unknown());
|
|
550
|
+
function parseMultisignBuilderOutput(data) {
|
|
551
|
+
return multisignOutputSchema.parse(data);
|
|
552
|
+
}
|
|
526
553
|
var uniswapQuoteTradeTypeSchema = zod.z.enum(["EXACT_INPUT", "EXACT_OUTPUT"]);
|
|
527
554
|
var mcpUniswapV4QuoteInputSchema = zod.z.object({
|
|
528
555
|
type: uniswapQuoteTradeTypeSchema.describe("EXACT_INPUT or EXACT_OUTPUT"),
|
|
@@ -741,6 +768,26 @@ var mcpCurveDaoBuildSwapMultisignInputSchema = evmMultisignCommonInputSchema.ext
|
|
|
741
768
|
amountHuman: zod.z.string().min(1).describe("Human-readable amount of tokenIn"),
|
|
742
769
|
slippagePercent: zod.z.number().gt(0).lt(100).describe("Slippage 0\u2013100 exclusive")
|
|
743
770
|
});
|
|
771
|
+
var mcpServerCommonInputSchema = zod.z.object({
|
|
772
|
+
keyGenId: zod.z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
|
|
773
|
+
chainId: zod.z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
|
|
774
|
+
purposeText: zod.z.string().min(1).describe("Human-readable purpose for the sign request"),
|
|
775
|
+
useCustomGas: zod.z.boolean().optional().describe("Apply chain gas settings from registry when true")
|
|
776
|
+
});
|
|
777
|
+
function mcpServerMultisignInput(fields) {
|
|
778
|
+
return mcpServerCommonInputSchema.extend(fields);
|
|
779
|
+
}
|
|
780
|
+
var mcpServerSubmitOutputSchema = zod.z.object({
|
|
781
|
+
requestId: zod.z.string().min(1).describe("Sign request id from POST /multiSignRequest \u2014 success; do not retry the same build tool.")
|
|
782
|
+
}).describe(
|
|
783
|
+
"Submitted mpc-auth multiSignRequest. Continue with wait_for_sign_request_ready \u2192 sign_request_agree \u2192 trigger_sign_result \u2192 broadcast_sign_result."
|
|
784
|
+
);
|
|
785
|
+
var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
786
|
+
"ctm_uniswap_v4_quote",
|
|
787
|
+
"ctm_uniswap_v4_create_swap"
|
|
788
|
+
]);
|
|
789
|
+
|
|
790
|
+
// src/agent/schemas/protocols.ts
|
|
744
791
|
function mcpMultisignInput(fields) {
|
|
745
792
|
return evmMultisignCommonInputSchema.extend(fields);
|
|
746
793
|
}
|
|
@@ -1028,16 +1075,254 @@ var mcpGmxFetchOhlcvOutputSchema = zod.z.object({
|
|
|
1028
1075
|
timeframe: gmxOhlcvTimeframeSchema,
|
|
1029
1076
|
candles: zod.z.array(gmxOhlcvCandleSchema)
|
|
1030
1077
|
});
|
|
1078
|
+
function mcpHyperliquidMultisignInput(fields) {
|
|
1079
|
+
return evmMultisignCommonInputSchema.extend(fields);
|
|
1080
|
+
}
|
|
1081
|
+
var hyperliquidTifSchema = zod.z.enum(["alo", "gtc", "ioc"]);
|
|
1082
|
+
var hyperliquidOhlcvIntervalSchema = zod.z.enum([
|
|
1083
|
+
"1m",
|
|
1084
|
+
"3m",
|
|
1085
|
+
"5m",
|
|
1086
|
+
"15m",
|
|
1087
|
+
"30m",
|
|
1088
|
+
"1h",
|
|
1089
|
+
"2h",
|
|
1090
|
+
"4h",
|
|
1091
|
+
"8h",
|
|
1092
|
+
"12h",
|
|
1093
|
+
"1d",
|
|
1094
|
+
"3d",
|
|
1095
|
+
"1w",
|
|
1096
|
+
"1M"
|
|
1097
|
+
]);
|
|
1098
|
+
var hyperliquidPositionRowSchema = zod.z.object({
|
|
1099
|
+
key: zod.z.string(),
|
|
1100
|
+
coin: zod.z.string(),
|
|
1101
|
+
isLong: zod.z.boolean(),
|
|
1102
|
+
size: zod.z.string().nullable(),
|
|
1103
|
+
entryPx: zod.z.string().nullable(),
|
|
1104
|
+
positionValueUsd: zod.z.string().nullable(),
|
|
1105
|
+
unrealizedPnlUsd: zod.z.string().nullable(),
|
|
1106
|
+
liquidationPx: zod.z.string().nullable(),
|
|
1107
|
+
leverageLabel: zod.z.string().nullable(),
|
|
1108
|
+
maxLeverage: zod.z.number().nullable(),
|
|
1109
|
+
marginUsedUsd: zod.z.string().nullable(),
|
|
1110
|
+
returnOnEquity: zod.z.string().nullable()
|
|
1111
|
+
});
|
|
1112
|
+
var hyperliquidActiveAssetSchema = zod.z.object({
|
|
1113
|
+
markPx: zod.z.string().nullable(),
|
|
1114
|
+
leverageLabel: zod.z.string().nullable(),
|
|
1115
|
+
availableToBuy: zod.z.string().nullable(),
|
|
1116
|
+
availableToSell: zod.z.string().nullable()
|
|
1117
|
+
});
|
|
1118
|
+
var hyperliquidAccountSummarySchema = zod.z.object({
|
|
1119
|
+
accountValueUsd: zod.z.string().nullable(),
|
|
1120
|
+
totalMarginUsedUsd: zod.z.string().nullable(),
|
|
1121
|
+
withdrawableUsd: zod.z.string().nullable()
|
|
1122
|
+
});
|
|
1123
|
+
var mcpHyperliquidFetchMarketsInputSchema = zod.z.object({
|
|
1124
|
+
chainId: zod.z.number().int().positive(),
|
|
1125
|
+
dex: zod.z.string().optional()
|
|
1126
|
+
});
|
|
1127
|
+
var mcpHyperliquidFetchMarketsOutputSchema = zod.z.object({
|
|
1128
|
+
markets: zod.z.array(
|
|
1129
|
+
zod.z.object({
|
|
1130
|
+
name: zod.z.string(),
|
|
1131
|
+
asset: zod.z.number(),
|
|
1132
|
+
szDecimals: zod.z.number(),
|
|
1133
|
+
maxLeverage: zod.z.number(),
|
|
1134
|
+
onlyIsolated: zod.z.boolean().optional()
|
|
1135
|
+
})
|
|
1136
|
+
),
|
|
1137
|
+
dexes: zod.z.array(
|
|
1138
|
+
zod.z.object({
|
|
1139
|
+
name: zod.z.string(),
|
|
1140
|
+
fullName: zod.z.string()
|
|
1141
|
+
})
|
|
1142
|
+
)
|
|
1143
|
+
});
|
|
1144
|
+
var mcpHyperliquidFetchOpenContextInputSchema = zod.z.object({
|
|
1145
|
+
chainId: zod.z.number().int().positive(),
|
|
1146
|
+
executorAddress: evmAddressSchema,
|
|
1147
|
+
coin: zod.z.string().min(1),
|
|
1148
|
+
dex: zod.z.string().optional()
|
|
1149
|
+
});
|
|
1150
|
+
var mcpHyperliquidFetchOpenContextOutputSchema = zod.z.object({
|
|
1151
|
+
context: zod.z.object({
|
|
1152
|
+
account: hyperliquidAccountSummarySchema,
|
|
1153
|
+
activeAsset: hyperliquidActiveAssetSchema
|
|
1154
|
+
})
|
|
1155
|
+
});
|
|
1156
|
+
var mcpHyperliquidFetchPositionsInputSchema = zod.z.object({
|
|
1157
|
+
chainId: zod.z.number().int().positive(),
|
|
1158
|
+
executorAddress: evmAddressSchema,
|
|
1159
|
+
dex: zod.z.string().optional()
|
|
1160
|
+
});
|
|
1161
|
+
var mcpHyperliquidFetchPositionsOutputSchema = zod.z.object({
|
|
1162
|
+
positions: zod.z.array(hyperliquidPositionRowSchema)
|
|
1163
|
+
});
|
|
1164
|
+
var mcpHyperliquidFetchOpenOrdersInputSchema = zod.z.object({
|
|
1165
|
+
chainId: zod.z.number().int().positive(),
|
|
1166
|
+
executorAddress: evmAddressSchema,
|
|
1167
|
+
dex: zod.z.string().optional()
|
|
1168
|
+
});
|
|
1169
|
+
var mcpHyperliquidFetchOpenOrdersOutputSchema = zod.z.object({
|
|
1170
|
+
orders: zod.z.array(
|
|
1171
|
+
zod.z.object({
|
|
1172
|
+
coin: zod.z.string(),
|
|
1173
|
+
side: zod.z.string(),
|
|
1174
|
+
limitPx: zod.z.string(),
|
|
1175
|
+
sz: zod.z.string(),
|
|
1176
|
+
oid: zod.z.number(),
|
|
1177
|
+
timestamp: zod.z.number(),
|
|
1178
|
+
reduceOnly: zod.z.boolean().optional()
|
|
1179
|
+
})
|
|
1180
|
+
)
|
|
1181
|
+
});
|
|
1182
|
+
var mcpHyperliquidFetchMarketSnapshotInputSchema = zod.z.object({
|
|
1183
|
+
chainId: zod.z.number().int().positive(),
|
|
1184
|
+
coin: zod.z.string().min(1),
|
|
1185
|
+
interval: hyperliquidOhlcvIntervalSchema.optional(),
|
|
1186
|
+
dex: zod.z.string().optional()
|
|
1187
|
+
});
|
|
1188
|
+
var mcpHyperliquidFetchMarketSnapshotOutputSchema = zod.z.object({
|
|
1189
|
+
snapshot: zod.z.object({
|
|
1190
|
+
coin: zod.z.string(),
|
|
1191
|
+
midUsd: zod.z.string().nullable(),
|
|
1192
|
+
fetchedAtMs: zod.z.number(),
|
|
1193
|
+
interval: hyperliquidOhlcvIntervalSchema,
|
|
1194
|
+
candles: zod.z.array(
|
|
1195
|
+
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()
|
|
1202
|
+
})
|
|
1203
|
+
)
|
|
1204
|
+
})
|
|
1205
|
+
});
|
|
1206
|
+
var mcpHyperliquidFetchUsdClassBalancesInputSchema = zod.z.object({
|
|
1207
|
+
chainId: zod.z.number().int().positive(),
|
|
1208
|
+
executorAddress: evmAddressSchema
|
|
1209
|
+
});
|
|
1210
|
+
var mcpHyperliquidFetchUsdClassBalancesOutputSchema = zod.z.object({
|
|
1211
|
+
balances: zod.z.object({
|
|
1212
|
+
spotUsdcAvailable: zod.z.string(),
|
|
1213
|
+
perpWithdrawable: zod.z.string()
|
|
1214
|
+
})
|
|
1215
|
+
});
|
|
1216
|
+
var mcpHyperliquidFetchVaultsInputSchema = zod.z.object({
|
|
1217
|
+
chainId: zod.z.number().int().positive(),
|
|
1218
|
+
executorAddress: evmAddressSchema.optional()
|
|
1219
|
+
});
|
|
1220
|
+
var mcpHyperliquidFetchVaultsOutputSchema = zod.z.object({
|
|
1221
|
+
vaults: zod.z.array(
|
|
1222
|
+
zod.z.object({
|
|
1223
|
+
vaultAddress: zod.z.string(),
|
|
1224
|
+
name: zod.z.string(),
|
|
1225
|
+
apr: zod.z.number().nullable(),
|
|
1226
|
+
tvlUsd: zod.z.string().nullable()
|
|
1227
|
+
})
|
|
1228
|
+
)
|
|
1229
|
+
});
|
|
1230
|
+
var mcpHyperliquidFetchUserVaultEquitiesInputSchema = zod.z.object({
|
|
1231
|
+
chainId: zod.z.number().int().positive(),
|
|
1232
|
+
executorAddress: evmAddressSchema
|
|
1233
|
+
});
|
|
1234
|
+
var mcpHyperliquidFetchUserVaultEquitiesOutputSchema = zod.z.object({
|
|
1235
|
+
rows: zod.z.array(
|
|
1236
|
+
zod.z.object({
|
|
1237
|
+
vaultAddress: zod.z.string(),
|
|
1238
|
+
equity: zod.z.string()
|
|
1239
|
+
})
|
|
1240
|
+
)
|
|
1241
|
+
});
|
|
1242
|
+
var mcpHyperliquidFetchStakingSummaryInputSchema = zod.z.object({
|
|
1243
|
+
chainId: zod.z.number().int().positive(),
|
|
1244
|
+
executorAddress: evmAddressSchema
|
|
1245
|
+
});
|
|
1246
|
+
var mcpHyperliquidFetchStakingSummaryOutputSchema = zod.z.object({
|
|
1247
|
+
summary: zod.z.object({
|
|
1248
|
+
delegated: zod.z.string(),
|
|
1249
|
+
undelegated: zod.z.string()
|
|
1250
|
+
})
|
|
1251
|
+
});
|
|
1252
|
+
var mcpHyperliquidFetchDelegationsInputSchema = zod.z.object({
|
|
1253
|
+
chainId: zod.z.number().int().positive(),
|
|
1254
|
+
executorAddress: evmAddressSchema
|
|
1255
|
+
});
|
|
1256
|
+
var mcpHyperliquidFetchDelegationsOutputSchema = zod.z.object({
|
|
1257
|
+
delegations: zod.z.array(
|
|
1258
|
+
zod.z.object({
|
|
1259
|
+
validator: zod.z.string(),
|
|
1260
|
+
amount: zod.z.string()
|
|
1261
|
+
})
|
|
1262
|
+
)
|
|
1263
|
+
});
|
|
1264
|
+
var mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidMultisignInput({
|
|
1265
|
+
coin: zod.z.string().min(1),
|
|
1266
|
+
isBuy: zod.z.boolean(),
|
|
1267
|
+
limitPxHuman: zod.z.string().min(1),
|
|
1268
|
+
szHuman: zod.z.string().min(1),
|
|
1269
|
+
marketKind: zod.z.enum(["perp", "spot"]).optional(),
|
|
1270
|
+
tif: hyperliquidTifSchema.optional(),
|
|
1271
|
+
dex: zod.z.string().optional()
|
|
1272
|
+
});
|
|
1273
|
+
var mcpHyperliquidCloseInputSchema = mcpHyperliquidMultisignInput({
|
|
1274
|
+
coin: zod.z.string().min(1),
|
|
1275
|
+
isLong: zod.z.boolean(),
|
|
1276
|
+
limitPxHuman: zod.z.string().min(1),
|
|
1277
|
+
szHuman: zod.z.string().min(1),
|
|
1278
|
+
dex: zod.z.string().optional(),
|
|
1279
|
+
tif: hyperliquidTifSchema.optional()
|
|
1280
|
+
});
|
|
1281
|
+
var mcpHyperliquidCancelInputSchema = mcpHyperliquidMultisignInput({
|
|
1282
|
+
coin: zod.z.string().min(1),
|
|
1283
|
+
oid: zod.z.number().int().positive(),
|
|
1284
|
+
marketKind: zod.z.enum(["perp", "spot"]).optional(),
|
|
1285
|
+
dex: zod.z.string().optional()
|
|
1286
|
+
});
|
|
1287
|
+
var mcpHyperliquidUsdTransferInputSchema = mcpHyperliquidMultisignInput({
|
|
1288
|
+
usdHuman: zod.z.string().min(1),
|
|
1289
|
+
toPerp: zod.z.boolean()
|
|
1290
|
+
});
|
|
1291
|
+
var mcpHyperliquidVaultDepositInputSchema = mcpHyperliquidMultisignInput({
|
|
1292
|
+
vaultAddress: evmAddressSchema,
|
|
1293
|
+
usdHuman: zod.z.string().min(1)
|
|
1294
|
+
});
|
|
1295
|
+
var mcpHyperliquidVaultWithdrawInputSchema = mcpHyperliquidMultisignInput({
|
|
1296
|
+
vaultAddress: evmAddressSchema,
|
|
1297
|
+
usdHuman: zod.z.string().min(1)
|
|
1298
|
+
});
|
|
1299
|
+
var mcpHyperliquidStakeInputSchema = mcpHyperliquidMultisignInput({
|
|
1300
|
+
hypeHuman: zod.z.string().min(1)
|
|
1301
|
+
});
|
|
1302
|
+
var mcpHyperliquidUnstakeInputSchema = mcpHyperliquidMultisignInput({
|
|
1303
|
+
hypeHuman: zod.z.string().min(1)
|
|
1304
|
+
});
|
|
1305
|
+
var mcpHyperliquidDelegateInputSchema = mcpHyperliquidMultisignInput({
|
|
1306
|
+
hypeHuman: zod.z.string().min(1),
|
|
1307
|
+
validator: evmAddressSchema
|
|
1308
|
+
});
|
|
1309
|
+
var mcpHyperliquidUndelegateInputSchema = mcpHyperliquidMultisignInput({
|
|
1310
|
+
hypeHuman: zod.z.string().min(1),
|
|
1311
|
+
validator: evmAddressSchema
|
|
1312
|
+
});
|
|
1031
1313
|
|
|
1032
1314
|
// src/agent/mcpProtocolTools.ts
|
|
1033
1315
|
function defineProtocolMcpTool(def) {
|
|
1316
|
+
const meta = withMultisignSubmitMcpMeta(def.description, def.followUp ?? MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
1034
1317
|
return {
|
|
1035
1318
|
...def,
|
|
1036
|
-
|
|
1319
|
+
description: meta.description,
|
|
1320
|
+
followUp: meta.followUp,
|
|
1321
|
+
outputZod: mcpServerSubmitOutputSchema,
|
|
1037
1322
|
inputSchema: zodSchemaToMcpJsonSchema(def.inputZod),
|
|
1038
|
-
outputSchema: zodSchemaToMcpJsonSchema(
|
|
1323
|
+
outputSchema: zodSchemaToMcpJsonSchema(mcpServerSubmitOutputSchema),
|
|
1039
1324
|
parseInput: (data) => def.inputZod.parse(data),
|
|
1040
|
-
parseOutput: (data) =>
|
|
1325
|
+
parseOutput: (data) => mcpServerSubmitOutputSchema.parse(data)
|
|
1041
1326
|
};
|
|
1042
1327
|
}
|
|
1043
1328
|
var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
@@ -1046,9 +1331,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1046
1331
|
actionId: "lido.submit",
|
|
1047
1332
|
protocolId: "lido",
|
|
1048
1333
|
chainCategory: "evm",
|
|
1049
|
-
description: "
|
|
1334
|
+
description: "Create and submit mpc-auth multiSignRequest for Lido ETH stake (submit).",
|
|
1050
1335
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1051
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1052
1336
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoSubmit" },
|
|
1053
1337
|
inputZod: mcpLidoSubmitInputSchema
|
|
1054
1338
|
}),
|
|
@@ -1059,7 +1343,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1059
1343
|
chainCategory: "evm",
|
|
1060
1344
|
description: "Build batch for Lido withdrawal queue (approve + requestWithdrawals).",
|
|
1061
1345
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1062
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1063
1346
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoRequestWithdrawals" },
|
|
1064
1347
|
inputZod: mcpLidoRequestWithdrawalsInputSchema
|
|
1065
1348
|
}),
|
|
@@ -1070,7 +1353,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1070
1353
|
chainCategory: "evm",
|
|
1071
1354
|
description: "Build tx for Lido claimWithdrawal.",
|
|
1072
1355
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1073
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1074
1356
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoClaimWithdrawal" },
|
|
1075
1357
|
inputZod: mcpLidoClaimWithdrawalInputSchema
|
|
1076
1358
|
}),
|
|
@@ -1081,7 +1363,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1081
1363
|
chainCategory: "evm",
|
|
1082
1364
|
description: "Build batch for wstETH wrap.",
|
|
1083
1365
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1084
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1085
1366
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoWrapStEth" },
|
|
1086
1367
|
inputZod: mcpLidoWrapStEthInputSchema
|
|
1087
1368
|
}),
|
|
@@ -1092,7 +1373,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1092
1373
|
chainCategory: "evm",
|
|
1093
1374
|
description: "Build tx for wstETH unwrap.",
|
|
1094
1375
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1095
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1096
1376
|
handler: { importPath: "protocols/evm/lido", exportName: "buildEvmMultisignBodyLidoUnwrapWstEth" },
|
|
1097
1377
|
inputZod: mcpLidoUnwrapWstEthInputSchema
|
|
1098
1378
|
}),
|
|
@@ -1103,7 +1383,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1103
1383
|
chainCategory: "evm",
|
|
1104
1384
|
description: "Build batch: USDe approve + sUSDe deposit.",
|
|
1105
1385
|
prerequisites: ["keyGen", "executorAddress", "Ethereum mainnet RPC"],
|
|
1106
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1107
1386
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaUsdeStakeToSusde" },
|
|
1108
1387
|
inputZod: mcpEthenaStakeInputSchema
|
|
1109
1388
|
}),
|
|
@@ -1114,7 +1393,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1114
1393
|
chainCategory: "evm",
|
|
1115
1394
|
description: "Build sUSDe redeem when cooldown is off.",
|
|
1116
1395
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1117
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1118
1396
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaSusdeRedeemToUsde" },
|
|
1119
1397
|
inputZod: mcpEthenaRedeemInputSchema
|
|
1120
1398
|
}),
|
|
@@ -1125,7 +1403,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1125
1403
|
chainCategory: "evm",
|
|
1126
1404
|
description: "Build sUSDe cooldownShares batch step.",
|
|
1127
1405
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1128
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1129
1406
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaSusdeCooldownShares" },
|
|
1130
1407
|
inputZod: mcpEthenaCooldownInputSchema
|
|
1131
1408
|
}),
|
|
@@ -1136,7 +1413,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1136
1413
|
chainCategory: "evm",
|
|
1137
1414
|
description: "Build unstake claim after cooldown.",
|
|
1138
1415
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1139
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1140
1416
|
handler: { importPath: "protocols/evm/ethena", exportName: "buildEvmMultisignBodyEthenaUnstakeClaim" },
|
|
1141
1417
|
inputZod: mcpEthenaClaimInputSchema
|
|
1142
1418
|
}),
|
|
@@ -1147,7 +1423,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1147
1423
|
chainCategory: "evm",
|
|
1148
1424
|
description: "Build Maple Syrup router deposit batch.",
|
|
1149
1425
|
prerequisites: ["keyGen", "executorAddress", "router + pool addresses"],
|
|
1150
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1151
1426
|
handler: { importPath: "protocols/evm/maple", exportName: "buildEvmMultisignBodyMapleSyrupDeposit" },
|
|
1152
1427
|
inputZod: mcpMapleDepositInputSchema
|
|
1153
1428
|
}),
|
|
@@ -1158,7 +1433,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1158
1433
|
chainCategory: "evm",
|
|
1159
1434
|
description: "Build Maple PoolV2 requestRedeem batch.",
|
|
1160
1435
|
prerequisites: ["keyGen", "executorAddress", "pool address"],
|
|
1161
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1162
1436
|
handler: { importPath: "protocols/evm/maple", exportName: "buildEvmMultisignBodyMaplePoolRequestRedeem" },
|
|
1163
1437
|
inputZod: mcpMapleRequestRedeemInputSchema
|
|
1164
1438
|
}),
|
|
@@ -1169,7 +1443,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1169
1443
|
chainCategory: "evm",
|
|
1170
1444
|
description: "Build Sky Lockstake open/stake batch.",
|
|
1171
1445
|
prerequisites: ["keyGen", "executorAddress", "Ethereum mainnet RPC"],
|
|
1172
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1173
1446
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeStakePositionBatch" },
|
|
1174
1447
|
inputZod: mcpSkyLockstakeStakeInputSchema
|
|
1175
1448
|
}),
|
|
@@ -1180,7 +1453,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1180
1453
|
chainCategory: "evm",
|
|
1181
1454
|
description: "Build Lockstake draw (borrow USDS).",
|
|
1182
1455
|
prerequisites: ["keyGen", "executorAddress", "open urn"],
|
|
1183
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1184
1456
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeDrawBatch" },
|
|
1185
1457
|
inputZod: mcpSkyLockstakeDrawInputSchema
|
|
1186
1458
|
}),
|
|
@@ -1191,7 +1463,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1191
1463
|
chainCategory: "evm",
|
|
1192
1464
|
description: "Build Lockstake repay/wipe batch.",
|
|
1193
1465
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1194
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1195
1466
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeWipeBatch" },
|
|
1196
1467
|
inputZod: mcpSkyLockstakeWipeInputSchema
|
|
1197
1468
|
}),
|
|
@@ -1202,7 +1473,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1202
1473
|
chainCategory: "evm",
|
|
1203
1474
|
description: "Build Lockstake close position batch.",
|
|
1204
1475
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1205
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1206
1476
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeCloseBatch" },
|
|
1207
1477
|
inputZod: mcpSkyLockstakeCloseInputSchema
|
|
1208
1478
|
}),
|
|
@@ -1213,7 +1483,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1213
1483
|
chainCategory: "evm",
|
|
1214
1484
|
description: "Build Lockstake getReward batch.",
|
|
1215
1485
|
prerequisites: ["keyGen", "executorAddress", "urn index"],
|
|
1216
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1217
1486
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkyLockstakeGetRewardBatch" },
|
|
1218
1487
|
inputZod: mcpSkyLockstakeGetRewardInputSchema
|
|
1219
1488
|
}),
|
|
@@ -1224,7 +1493,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1224
1493
|
chainCategory: "evm",
|
|
1225
1494
|
description: "Build USDS \u2192 sUSDS ERC-4626 deposit batch.",
|
|
1226
1495
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1227
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1228
1496
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkySusdsDepositFromUsdsBatch" },
|
|
1229
1497
|
inputZod: mcpSkySusdsDepositInputSchema
|
|
1230
1498
|
}),
|
|
@@ -1235,7 +1503,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1235
1503
|
chainCategory: "evm",
|
|
1236
1504
|
description: "Build sUSDS redeem to USDS batch.",
|
|
1237
1505
|
prerequisites: ["keyGen", "executorAddress", "RPC URL"],
|
|
1238
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1239
1506
|
handler: { importPath: "protocols/evm/sky", exportName: "buildSkySusdsRedeemToUsdsBatch" },
|
|
1240
1507
|
inputZod: mcpSkySusdsRedeemInputSchema
|
|
1241
1508
|
}),
|
|
@@ -1246,7 +1513,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1246
1513
|
chainCategory: "evm",
|
|
1247
1514
|
description: "Build Aave v4 Spoke supply/deposit batch (wrap native, approve, supply).",
|
|
1248
1515
|
prerequisites: ["keyGenId", "chainId", "underlying", "amountHuman", "get_defi_protocol_skill for hubs/spokes"],
|
|
1249
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1250
1516
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4DepositBatch" },
|
|
1251
1517
|
inputZod: mcpAaveV4DepositInputSchema
|
|
1252
1518
|
}),
|
|
@@ -1257,7 +1523,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1257
1523
|
chainCategory: "evm",
|
|
1258
1524
|
description: "Build Aave v4 Spoke withdraw; health-factor preview when user has borrow debt.",
|
|
1259
1525
|
prerequisites: ["keyGenId", "chainId", "underlying (supplied asset)", "amountHuman"],
|
|
1260
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1261
1526
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeWithdraw" },
|
|
1262
1527
|
inputZod: mcpAaveV4WithdrawInputSchema
|
|
1263
1528
|
}),
|
|
@@ -1274,7 +1539,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1274
1539
|
"amountHuman",
|
|
1275
1540
|
"collateral supplied via deposit"
|
|
1276
1541
|
],
|
|
1277
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1278
1542
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeBorrow" },
|
|
1279
1543
|
inputZod: mcpAaveV4BorrowInputSchema
|
|
1280
1544
|
}),
|
|
@@ -1285,7 +1549,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1285
1549
|
chainCategory: "evm",
|
|
1286
1550
|
description: "Build Aave v4 Spoke repay (approve if needed + repay).",
|
|
1287
1551
|
prerequisites: ["keyGenId", "chainId", "underlying (debt token)", "amountHuman"],
|
|
1288
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1289
1552
|
handler: { importPath: "protocols/evm/aave-v4", exportName: "buildEvmMultisignBodyAaveV4SpokeRepay" },
|
|
1290
1553
|
inputZod: mcpAaveV4RepayInputSchema
|
|
1291
1554
|
}),
|
|
@@ -1296,7 +1559,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1296
1559
|
chainCategory: "evm",
|
|
1297
1560
|
description: "Build Euler v2 vault deposit/lend batch.",
|
|
1298
1561
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1299
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1300
1562
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2IsolatedLendDepositBatch" },
|
|
1301
1563
|
inputZod: mcpEulerV2IsolatedLendInputSchema
|
|
1302
1564
|
}),
|
|
@@ -1307,7 +1569,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1307
1569
|
chainCategory: "evm",
|
|
1308
1570
|
description: "Build Euler v2 isolated borrow loop batch.",
|
|
1309
1571
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral"],
|
|
1310
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1311
1572
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2IsolatedBorrowBatch" },
|
|
1312
1573
|
inputZod: mcpEulerV2IsolatedBorrowInputSchema
|
|
1313
1574
|
}),
|
|
@@ -1318,7 +1579,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1318
1579
|
chainCategory: "evm",
|
|
1319
1580
|
description: "Build Euler v2 vault withdraw/redeem batch.",
|
|
1320
1581
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1321
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1322
1582
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2VaultWithdraw" },
|
|
1323
1583
|
inputZod: mcpEulerV2VaultWithdrawInputSchema
|
|
1324
1584
|
}),
|
|
@@ -1329,7 +1589,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1329
1589
|
chainCategory: "evm",
|
|
1330
1590
|
description: "Build Euler v2 borrow repay batch.",
|
|
1331
1591
|
prerequisites: ["keyGen", "executorAddress", "vault address"],
|
|
1332
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1333
1592
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowRepayBatch" },
|
|
1334
1593
|
inputZod: mcpEulerV2BorrowRepayInputSchema
|
|
1335
1594
|
}),
|
|
@@ -1340,7 +1599,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1340
1599
|
chainCategory: "evm",
|
|
1341
1600
|
description: "Build Euler v2 borrow collateral deposit batch.",
|
|
1342
1601
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral asset"],
|
|
1343
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1344
1602
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralDepositBatch" },
|
|
1345
1603
|
inputZod: mcpEulerV2CollateralDepositInputSchema
|
|
1346
1604
|
}),
|
|
@@ -1351,7 +1609,6 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1351
1609
|
chainCategory: "evm",
|
|
1352
1610
|
description: "Build Euler v2 borrow collateral withdraw batch.",
|
|
1353
1611
|
prerequisites: ["keyGen", "executorAddress", "vault + collateral asset"],
|
|
1354
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1355
1612
|
handler: { importPath: "protocols/evm/euler-v2", exportName: "buildEvmMultisignBodyEulerV2BorrowCollateralWithdrawBatch" },
|
|
1356
1613
|
inputZod: mcpEulerV2CollateralWithdrawInputSchema
|
|
1357
1614
|
}),
|
|
@@ -1360,9 +1617,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1360
1617
|
actionId: "gmx.increase",
|
|
1361
1618
|
protocolId: "gmx",
|
|
1362
1619
|
chainCategory: "evm",
|
|
1363
|
-
description: "
|
|
1620
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX classic increase order (open/add perp). Keeper executes asynchronously after on-chain broadcast.",
|
|
1364
1621
|
prerequisites: ["keyGen", "executorAddress", "GMX market symbol", "classic mode only \u2014 no subaccounts"],
|
|
1365
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1366
1622
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxIncreaseBatch" },
|
|
1367
1623
|
inputZod: mcpGmxIncreaseInputSchema
|
|
1368
1624
|
}),
|
|
@@ -1371,9 +1627,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1371
1627
|
actionId: "gmx.decrease",
|
|
1372
1628
|
protocolId: "gmx",
|
|
1373
1629
|
chainCategory: "evm",
|
|
1374
|
-
description: "
|
|
1630
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX classic decrease order (close/reduce perp).",
|
|
1375
1631
|
prerequisites: ["keyGen", "executorAddress", "position market symbol"],
|
|
1376
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1377
1632
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxDecreaseBatch" },
|
|
1378
1633
|
inputZod: mcpGmxDecreaseInputSchema
|
|
1379
1634
|
}),
|
|
@@ -1382,9 +1637,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1382
1637
|
actionId: "gmx.cancel",
|
|
1383
1638
|
protocolId: "gmx",
|
|
1384
1639
|
chainCategory: "evm",
|
|
1385
|
-
description: "
|
|
1640
|
+
description: "Create and submit mpc-auth multiSignRequest to cancel a pending GMX order (classic on-chain).",
|
|
1386
1641
|
prerequisites: ["keyGen", "executorAddress", "orderId from fetchOrders"],
|
|
1387
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1388
1642
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxCancelBatch" },
|
|
1389
1643
|
inputZod: mcpGmxCancelInputSchema
|
|
1390
1644
|
}),
|
|
@@ -1393,9 +1647,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1393
1647
|
actionId: "gmx.gmDeposit",
|
|
1394
1648
|
protocolId: "gmx",
|
|
1395
1649
|
chainCategory: "evm",
|
|
1396
|
-
description: "
|
|
1650
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX GM pool deposit (ExchangeRouter multicall). Keeper executes asynchronously.",
|
|
1397
1651
|
prerequisites: ["keyGen", "executorAddress", "marketSymbol", "collateral token"],
|
|
1398
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1399
1652
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxGmDepositBatch" },
|
|
1400
1653
|
inputZod: mcpGmxGmDepositInputSchema
|
|
1401
1654
|
}),
|
|
@@ -1404,9 +1657,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1404
1657
|
actionId: "gmx.gmWithdraw",
|
|
1405
1658
|
protocolId: "gmx",
|
|
1406
1659
|
chainCategory: "evm",
|
|
1407
|
-
description: "
|
|
1660
|
+
description: "Create and submit mpc-auth multiSignRequest for GMX GM pool withdrawal (ExchangeRouter multicall). Keeper executes asynchronously.",
|
|
1408
1661
|
prerequisites: ["keyGen", "executorAddress", "GM market token balance"],
|
|
1409
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1410
1662
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxGmWithdrawBatch" },
|
|
1411
1663
|
inputZod: mcpGmxGmWithdrawInputSchema
|
|
1412
1664
|
}),
|
|
@@ -1415,9 +1667,8 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1415
1667
|
actionId: "gmx.stakeGmx",
|
|
1416
1668
|
protocolId: "gmx",
|
|
1417
1669
|
chainCategory: "evm",
|
|
1418
|
-
description: "
|
|
1670
|
+
description: "Create and submit mpc-auth multiSignRequest to stake GMX via RewardRouter.",
|
|
1419
1671
|
prerequisites: ["keyGen", "executorAddress", "GMX token balance"],
|
|
1420
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1421
1672
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxStakeGmxBatch" },
|
|
1422
1673
|
inputZod: mcpGmxStakeGmxInputSchema
|
|
1423
1674
|
}),
|
|
@@ -1426,11 +1677,113 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
1426
1677
|
actionId: "gmx.unstakeGmx",
|
|
1427
1678
|
protocolId: "gmx",
|
|
1428
1679
|
chainCategory: "evm",
|
|
1429
|
-
description: "
|
|
1680
|
+
description: "Create and submit mpc-auth multiSignRequest to unstake GMX via RewardRouter.",
|
|
1430
1681
|
prerequisites: ["keyGen", "executorAddress", "staked GMX balance"],
|
|
1431
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1432
1682
|
handler: { importPath: "protocols/evm/gmx", exportName: "buildEvmMultisignBodyGmxUnstakeGmxBatch" },
|
|
1433
1683
|
inputZod: mcpGmxUnstakeGmxInputSchema
|
|
1684
|
+
}),
|
|
1685
|
+
defineProtocolMcpTool({
|
|
1686
|
+
name: "ctm_hyperliquid_build_limit_order_multisign",
|
|
1687
|
+
actionId: "hyperliquid.limitOrder",
|
|
1688
|
+
protocolId: "hyperliquid",
|
|
1689
|
+
chainCategory: "evm",
|
|
1690
|
+
description: "Create and submit mpc-auth multiSignRequest for a Hyperliquid limit/IoC order via HyperEVM CoreWriter.",
|
|
1691
|
+
prerequisites: ["keyGen", "executorAddress", "chainId 999 or 998", "coin", "limitPxHuman", "szHuman"],
|
|
1692
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidLimitOrderBatch" },
|
|
1693
|
+
inputZod: mcpHyperliquidLimitOrderInputSchema
|
|
1694
|
+
}),
|
|
1695
|
+
defineProtocolMcpTool({
|
|
1696
|
+
name: "ctm_hyperliquid_build_close_multisign",
|
|
1697
|
+
actionId: "hyperliquid.close",
|
|
1698
|
+
protocolId: "hyperliquid",
|
|
1699
|
+
chainCategory: "evm",
|
|
1700
|
+
description: "Create and submit mpc-auth multiSignRequest to close/reduce a perp (IoC reduce-only limit via CoreWriter).",
|
|
1701
|
+
prerequisites: ["keyGen", "executorAddress", "open position from fetch_positions", "isLong matches position"],
|
|
1702
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidCloseBatch" },
|
|
1703
|
+
inputZod: mcpHyperliquidCloseInputSchema
|
|
1704
|
+
}),
|
|
1705
|
+
defineProtocolMcpTool({
|
|
1706
|
+
name: "ctm_hyperliquid_build_cancel_multisign",
|
|
1707
|
+
actionId: "hyperliquid.cancel",
|
|
1708
|
+
protocolId: "hyperliquid",
|
|
1709
|
+
chainCategory: "evm",
|
|
1710
|
+
description: "Create and submit mpc-auth multiSignRequest to cancel a Hyperliquid open order.",
|
|
1711
|
+
prerequisites: ["keyGen", "executorAddress", "oid from fetch_open_orders"],
|
|
1712
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidCancelBatch" },
|
|
1713
|
+
inputZod: mcpHyperliquidCancelInputSchema
|
|
1714
|
+
}),
|
|
1715
|
+
defineProtocolMcpTool({
|
|
1716
|
+
name: "ctm_hyperliquid_build_usd_transfer_multisign",
|
|
1717
|
+
actionId: "hyperliquid.usdTransfer",
|
|
1718
|
+
protocolId: "hyperliquid",
|
|
1719
|
+
chainCategory: "evm",
|
|
1720
|
+
description: "Create and submit mpc-auth multiSignRequest to move USDC between spot and perp margin.",
|
|
1721
|
+
prerequisites: ["keyGen", "executorAddress", "usdHuman", "toPerp boolean"],
|
|
1722
|
+
handler: {
|
|
1723
|
+
importPath: "protocols/evm/hyperliquid",
|
|
1724
|
+
exportName: "buildEvmMultisignBodyHyperliquidUsdClassTransferBatch"
|
|
1725
|
+
},
|
|
1726
|
+
inputZod: mcpHyperliquidUsdTransferInputSchema
|
|
1727
|
+
}),
|
|
1728
|
+
defineProtocolMcpTool({
|
|
1729
|
+
name: "ctm_hyperliquid_build_vault_deposit_multisign",
|
|
1730
|
+
actionId: "hyperliquid.vaultDeposit",
|
|
1731
|
+
protocolId: "hyperliquid",
|
|
1732
|
+
chainCategory: "evm",
|
|
1733
|
+
description: "Create and submit mpc-auth multiSignRequest for Hyperliquid vault deposit.",
|
|
1734
|
+
prerequisites: ["keyGen", "executorAddress", "vaultAddress from fetch_vaults"],
|
|
1735
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidVaultDepositBatch" },
|
|
1736
|
+
inputZod: mcpHyperliquidVaultDepositInputSchema
|
|
1737
|
+
}),
|
|
1738
|
+
defineProtocolMcpTool({
|
|
1739
|
+
name: "ctm_hyperliquid_build_vault_withdraw_multisign",
|
|
1740
|
+
actionId: "hyperliquid.vaultWithdraw",
|
|
1741
|
+
protocolId: "hyperliquid",
|
|
1742
|
+
chainCategory: "evm",
|
|
1743
|
+
description: "Create and submit mpc-auth multiSignRequest for Hyperliquid vault withdraw (includes accrued PnL).",
|
|
1744
|
+
prerequisites: ["keyGen", "executorAddress", "vaultAddress", "equity from fetch_user_vault_equities"],
|
|
1745
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidVaultWithdrawBatch" },
|
|
1746
|
+
inputZod: mcpHyperliquidVaultWithdrawInputSchema
|
|
1747
|
+
}),
|
|
1748
|
+
defineProtocolMcpTool({
|
|
1749
|
+
name: "ctm_hyperliquid_build_stake_multisign",
|
|
1750
|
+
actionId: "hyperliquid.stake",
|
|
1751
|
+
protocolId: "hyperliquid",
|
|
1752
|
+
chainCategory: "evm",
|
|
1753
|
+
description: "Create and submit mpc-auth multiSignRequest to stake HYPE via CoreWriter.",
|
|
1754
|
+
prerequisites: ["keyGen", "executorAddress", "HYPE balance on Hyperliquid account"],
|
|
1755
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidStakeDepositBatch" },
|
|
1756
|
+
inputZod: mcpHyperliquidStakeInputSchema
|
|
1757
|
+
}),
|
|
1758
|
+
defineProtocolMcpTool({
|
|
1759
|
+
name: "ctm_hyperliquid_build_unstake_multisign",
|
|
1760
|
+
actionId: "hyperliquid.unstake",
|
|
1761
|
+
protocolId: "hyperliquid",
|
|
1762
|
+
chainCategory: "evm",
|
|
1763
|
+
description: "Create and submit mpc-auth multiSignRequest to unstake HYPE via CoreWriter.",
|
|
1764
|
+
prerequisites: ["keyGen", "executorAddress", "staked HYPE"],
|
|
1765
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidStakeWithdrawBatch" },
|
|
1766
|
+
inputZod: mcpHyperliquidUnstakeInputSchema
|
|
1767
|
+
}),
|
|
1768
|
+
defineProtocolMcpTool({
|
|
1769
|
+
name: "ctm_hyperliquid_build_delegate_multisign",
|
|
1770
|
+
actionId: "hyperliquid.delegate",
|
|
1771
|
+
protocolId: "hyperliquid",
|
|
1772
|
+
chainCategory: "evm",
|
|
1773
|
+
description: "Create and submit mpc-auth multiSignRequest to delegate staked HYPE to a validator.",
|
|
1774
|
+
prerequisites: ["keyGen", "executorAddress", "validator address", "hypeHuman"],
|
|
1775
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidDelegateOnlyBatch" },
|
|
1776
|
+
inputZod: mcpHyperliquidDelegateInputSchema
|
|
1777
|
+
}),
|
|
1778
|
+
defineProtocolMcpTool({
|
|
1779
|
+
name: "ctm_hyperliquid_build_undelegate_multisign",
|
|
1780
|
+
actionId: "hyperliquid.undelegate",
|
|
1781
|
+
protocolId: "hyperliquid",
|
|
1782
|
+
chainCategory: "evm",
|
|
1783
|
+
description: "Create and submit mpc-auth multiSignRequest to undelegate HYPE from a validator.",
|
|
1784
|
+
prerequisites: ["keyGen", "executorAddress", "delegation from fetch_delegations"],
|
|
1785
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidUndelegateBatch" },
|
|
1786
|
+
inputZod: mcpHyperliquidUndelegateInputSchema
|
|
1434
1787
|
})
|
|
1435
1788
|
];
|
|
1436
1789
|
|
|
@@ -1444,6 +1797,15 @@ function defineMcpTool(def) {
|
|
|
1444
1797
|
parseOutput: (data) => def.outputZod.parse(data)
|
|
1445
1798
|
};
|
|
1446
1799
|
}
|
|
1800
|
+
function defineMultisignSubmitMcpTool(def) {
|
|
1801
|
+
const meta = withMultisignSubmitMcpMeta(def.description, def.followUp ?? MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
1802
|
+
return defineMcpTool({
|
|
1803
|
+
...def,
|
|
1804
|
+
description: meta.description,
|
|
1805
|
+
followUp: meta.followUp,
|
|
1806
|
+
outputZod: mcpServerSubmitOutputSchema
|
|
1807
|
+
});
|
|
1808
|
+
}
|
|
1447
1809
|
var CORE_MCP_TOOL_DEFINITIONS = [
|
|
1448
1810
|
defineMcpTool({
|
|
1449
1811
|
name: "ctm_uniswap_v4_quote",
|
|
@@ -1476,20 +1838,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1476
1838
|
inputZod: mcpUniswapV4CreateSwapInputSchema,
|
|
1477
1839
|
outputZod: mcpUniswapV4CreateSwapOutputSchema
|
|
1478
1840
|
}),
|
|
1479
|
-
|
|
1841
|
+
defineMultisignSubmitMcpTool({
|
|
1480
1842
|
name: "ctm_uniswap_v4_build_swap_multisign",
|
|
1481
1843
|
actionId: "uniswap-v4.swap-exact-input",
|
|
1482
1844
|
protocolId: "uniswap-v4",
|
|
1483
1845
|
chainCategory: "evm",
|
|
1484
|
-
description: "
|
|
1846
|
+
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).",
|
|
1485
1847
|
prerequisites: [
|
|
1486
1848
|
"ctm_uniswap_v4_create_swap output + matching quote snapshot and swapDeadlineUnix",
|
|
1487
1849
|
"keyGenId + chainId + purposeText"
|
|
1488
1850
|
],
|
|
1489
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest with clientSig and signedMessage"],
|
|
1490
1851
|
handler: { importPath: "protocols/evm/uniswap-v4", exportName: "buildEvmMultisignBodyUniswapV4SkipPermit2Batch" },
|
|
1491
|
-
inputZod: mcpUniswapV4BuildSwapMultisignInputSchema
|
|
1492
|
-
outputZod: multisignOutputSchema
|
|
1852
|
+
inputZod: mcpUniswapV4BuildSwapMultisignInputSchema
|
|
1493
1853
|
}),
|
|
1494
1854
|
defineMcpTool({
|
|
1495
1855
|
name: "ctm_uniswap_v4_list_lp_pools",
|
|
@@ -1519,24 +1879,22 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1519
1879
|
inputZod: mcpUniswapV4LpCreatePositionInputSchema,
|
|
1520
1880
|
outputZod: mcpUniswapV4LpCreatePositionOutputSchema
|
|
1521
1881
|
}),
|
|
1522
|
-
|
|
1882
|
+
defineMultisignSubmitMcpTool({
|
|
1523
1883
|
name: "ctm_uniswap_v4_build_mint_liquidity_multisign",
|
|
1524
1884
|
actionId: "uniswap-v4.mint-liquidity",
|
|
1525
1885
|
protocolId: "uniswap-v4",
|
|
1526
1886
|
chainCategory: "evm",
|
|
1527
|
-
description: "
|
|
1887
|
+
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.",
|
|
1528
1888
|
prerequisites: ["ctm_uniswap_v4_lp_create_position output", "keyGenId + chainId + purposeText"],
|
|
1529
1889
|
followUp: [
|
|
1530
|
-
|
|
1531
|
-
"
|
|
1532
|
-
"After execute: ctm_uniswap_v4_register_position_from_mint_tx (mint tx hash)"
|
|
1890
|
+
...MCP_MULTISIGN_SUBMIT_FOLLOW_UP,
|
|
1891
|
+
"After broadcast: ctm_uniswap_v4_register_position_from_mint_tx (mint tx hash)"
|
|
1533
1892
|
],
|
|
1534
1893
|
handler: {
|
|
1535
1894
|
importPath: "protocols/evm/uniswap-v4",
|
|
1536
1895
|
exportName: "buildEvmMultisignBodyUniswapV4MintLiquidityBatch"
|
|
1537
1896
|
},
|
|
1538
|
-
inputZod: mcpUniswapV4BuildMintLiquidityMultisignInputSchema
|
|
1539
|
-
outputZod: multisignOutputSchema
|
|
1897
|
+
inputZod: mcpUniswapV4BuildMintLiquidityMultisignInputSchema
|
|
1540
1898
|
}),
|
|
1541
1899
|
defineMcpTool({
|
|
1542
1900
|
name: "ctm_uniswap_v4_lp_increase",
|
|
@@ -1550,20 +1908,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1550
1908
|
inputZod: mcpUniswapV4LpIncreaseInputSchema,
|
|
1551
1909
|
outputZod: mcpUniswapV4LpIncreaseOutputSchema
|
|
1552
1910
|
}),
|
|
1553
|
-
|
|
1911
|
+
defineMultisignSubmitMcpTool({
|
|
1554
1912
|
name: "ctm_uniswap_v4_build_increase_liquidity_multisign",
|
|
1555
1913
|
actionId: "uniswap-v4.increase-liquidity",
|
|
1556
1914
|
protocolId: "uniswap-v4",
|
|
1557
1915
|
chainCategory: "evm",
|
|
1558
|
-
description: "
|
|
1916
|
+
description: "Create and submit mpc-auth multiSignRequest to increase Uniswap V4 position liquidity.",
|
|
1559
1917
|
prerequisites: ["ctm_uniswap_v4_lp_increase output"],
|
|
1560
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1561
1918
|
handler: {
|
|
1562
1919
|
importPath: "protocols/evm/uniswap-v4",
|
|
1563
1920
|
exportName: "buildEvmMultisignBodyUniswapV4IncreaseLiquidityBatch"
|
|
1564
1921
|
},
|
|
1565
|
-
inputZod: mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema
|
|
1566
|
-
outputZod: multisignOutputSchema
|
|
1922
|
+
inputZod: mcpUniswapV4BuildIncreaseLiquidityMultisignInputSchema
|
|
1567
1923
|
}),
|
|
1568
1924
|
defineMcpTool({
|
|
1569
1925
|
name: "ctm_uniswap_v4_lp_decrease",
|
|
@@ -1577,20 +1933,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1577
1933
|
inputZod: mcpUniswapV4LpDecreaseInputSchema,
|
|
1578
1934
|
outputZod: mcpUniswapV4LpDecreaseOutputSchema
|
|
1579
1935
|
}),
|
|
1580
|
-
|
|
1936
|
+
defineMultisignSubmitMcpTool({
|
|
1581
1937
|
name: "ctm_uniswap_v4_build_decrease_liquidity_multisign",
|
|
1582
1938
|
actionId: "uniswap-v4.decrease-liquidity",
|
|
1583
1939
|
protocolId: "uniswap-v4",
|
|
1584
1940
|
chainCategory: "evm",
|
|
1585
|
-
description: "
|
|
1941
|
+
description: "Create and submit mpc-auth multiSignRequest to decrease Uniswap V4 position liquidity.",
|
|
1586
1942
|
prerequisites: ["ctm_uniswap_v4_lp_decrease output"],
|
|
1587
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1588
1943
|
handler: {
|
|
1589
1944
|
importPath: "protocols/evm/uniswap-v4",
|
|
1590
1945
|
exportName: "buildEvmMultisignBodyUniswapV4DecreaseLiquidityBatch"
|
|
1591
1946
|
},
|
|
1592
|
-
inputZod: mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema
|
|
1593
|
-
outputZod: multisignOutputSchema
|
|
1947
|
+
inputZod: mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema
|
|
1594
1948
|
}),
|
|
1595
1949
|
defineMcpTool({
|
|
1596
1950
|
name: "ctm_uniswap_v4_lp_collect",
|
|
@@ -1604,20 +1958,18 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1604
1958
|
inputZod: mcpUniswapV4LpClaimInputSchema,
|
|
1605
1959
|
outputZod: mcpUniswapV4LpClaimOutputSchema
|
|
1606
1960
|
}),
|
|
1607
|
-
|
|
1961
|
+
defineMultisignSubmitMcpTool({
|
|
1608
1962
|
name: "ctm_uniswap_v4_build_collect_fees_multisign",
|
|
1609
1963
|
actionId: "uniswap-v4.collect-fees",
|
|
1610
1964
|
protocolId: "uniswap-v4",
|
|
1611
1965
|
chainCategory: "evm",
|
|
1612
|
-
description: "
|
|
1966
|
+
description: "Create and submit mpc-auth multiSignRequest to collect fees from a Uniswap V4 position.",
|
|
1613
1967
|
prerequisites: ["ctm_uniswap_v4_lp_collect output"],
|
|
1614
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest"],
|
|
1615
1968
|
handler: {
|
|
1616
1969
|
importPath: "protocols/evm/uniswap-v4",
|
|
1617
1970
|
exportName: "buildEvmMultisignBodyUniswapV4CollectFeesBatch"
|
|
1618
1971
|
},
|
|
1619
|
-
inputZod: mcpUniswapV4BuildCollectFeesMultisignInputSchema
|
|
1620
|
-
outputZod: multisignOutputSchema
|
|
1972
|
+
inputZod: mcpUniswapV4BuildCollectFeesMultisignInputSchema
|
|
1621
1973
|
}),
|
|
1622
1974
|
defineMcpTool({
|
|
1623
1975
|
name: "ctm_uniswap_v4_lp_list_positions",
|
|
@@ -1680,21 +2032,19 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1680
2032
|
inputZod: mcpCurveDaoQuoteInputSchema,
|
|
1681
2033
|
outputZod: mcpCurveDaoQuoteOutputSchema
|
|
1682
2034
|
}),
|
|
1683
|
-
|
|
2035
|
+
defineMultisignSubmitMcpTool({
|
|
1684
2036
|
name: "ctm_curve_dao_build_swap_multisign",
|
|
1685
2037
|
actionId: "curve-dao.swap",
|
|
1686
2038
|
protocolId: "curve-dao",
|
|
1687
2039
|
chainCategory: "evm",
|
|
1688
|
-
description: "
|
|
2040
|
+
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.",
|
|
1689
2041
|
prerequisites: [
|
|
1690
2042
|
"ctm_curve_dao_quote (recommended)",
|
|
1691
2043
|
"keyGenId + chainId + purposeText + slippagePercent (0\u2013100 exclusive)",
|
|
1692
2044
|
"get_defi_protocol_skill for tokenIn address rules"
|
|
1693
2045
|
],
|
|
1694
|
-
followUp: ["Sign messageToSign", "POST /multiSignRequest with clientSig and signedMessage"],
|
|
1695
2046
|
handler: { importPath: "protocols/evm/curve-dao", exportName: "buildEvmMultisignBodyCurveDaoBatch" },
|
|
1696
|
-
inputZod: mcpCurveDaoBuildSwapMultisignInputSchema
|
|
1697
|
-
outputZod: multisignOutputSchema
|
|
2047
|
+
inputZod: mcpCurveDaoBuildSwapMultisignInputSchema
|
|
1698
2048
|
}),
|
|
1699
2049
|
defineMcpTool({
|
|
1700
2050
|
name: "ctm_gmx_fetch_markets",
|
|
@@ -1779,6 +2129,126 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
1779
2129
|
handler: { importPath: "protocols/evm/gmx", exportName: "gmxFetchStakingPower" },
|
|
1780
2130
|
inputZod: mcpGmxFetchStakingPowerInputSchema,
|
|
1781
2131
|
outputZod: mcpGmxFetchStakingPowerOutputSchema
|
|
2132
|
+
}),
|
|
2133
|
+
defineMcpTool({
|
|
2134
|
+
name: "ctm_hyperliquid_fetch_markets",
|
|
2135
|
+
actionId: "hyperliquid.fetch-markets",
|
|
2136
|
+
protocolId: "hyperliquid",
|
|
2137
|
+
chainCategory: "evm",
|
|
2138
|
+
description: "List Hyperliquid perp markets (coin, maxLeverage, szDecimals) and HIP-3 dex names. chainId 999 mainnet or 998 testnet.",
|
|
2139
|
+
prerequisites: ["chainId 999 or 998"],
|
|
2140
|
+
followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
|
|
2141
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketsSummary" },
|
|
2142
|
+
inputZod: mcpHyperliquidFetchMarketsInputSchema,
|
|
2143
|
+
outputZod: mcpHyperliquidFetchMarketsOutputSchema
|
|
2144
|
+
}),
|
|
2145
|
+
defineMcpTool({
|
|
2146
|
+
name: "ctm_hyperliquid_fetch_open_context",
|
|
2147
|
+
actionId: "hyperliquid.fetch-open-context",
|
|
2148
|
+
protocolId: "hyperliquid",
|
|
2149
|
+
chainCategory: "evm",
|
|
2150
|
+
description: "Per-market trading context: account value, withdrawable, margin used, leverage setting, mark price, available buy/sell size.",
|
|
2151
|
+
prerequisites: ["chainId", "executorAddress", "coin from fetch_markets"],
|
|
2152
|
+
followUp: ["ctm_hyperliquid_build_limit_order_multisign"],
|
|
2153
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOpenContextSummary" },
|
|
2154
|
+
inputZod: mcpHyperliquidFetchOpenContextInputSchema,
|
|
2155
|
+
outputZod: mcpHyperliquidFetchOpenContextOutputSchema
|
|
2156
|
+
}),
|
|
2157
|
+
defineMcpTool({
|
|
2158
|
+
name: "ctm_hyperliquid_fetch_positions",
|
|
2159
|
+
actionId: "hyperliquid.fetch-positions",
|
|
2160
|
+
protocolId: "hyperliquid",
|
|
2161
|
+
chainCategory: "evm",
|
|
2162
|
+
description: "Open Hyperliquid perp positions for executor (size, entry, uPnL, liq price, leverage, margin).",
|
|
2163
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2164
|
+
followUp: ["ctm_hyperliquid_build_close_multisign"],
|
|
2165
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchPositionsForExecutor" },
|
|
2166
|
+
inputZod: mcpHyperliquidFetchPositionsInputSchema,
|
|
2167
|
+
outputZod: mcpHyperliquidFetchPositionsOutputSchema
|
|
2168
|
+
}),
|
|
2169
|
+
defineMcpTool({
|
|
2170
|
+
name: "ctm_hyperliquid_fetch_open_orders",
|
|
2171
|
+
actionId: "hyperliquid.fetch-open-orders",
|
|
2172
|
+
protocolId: "hyperliquid",
|
|
2173
|
+
chainCategory: "evm",
|
|
2174
|
+
description: "Pending Hyperliquid open orders for executor (oid, coin, side, price, size).",
|
|
2175
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2176
|
+
followUp: ["ctm_hyperliquid_build_cancel_multisign"],
|
|
2177
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchOpenOrdersSummary" },
|
|
2178
|
+
inputZod: mcpHyperliquidFetchOpenOrdersInputSchema,
|
|
2179
|
+
outputZod: mcpHyperliquidFetchOpenOrdersOutputSchema
|
|
2180
|
+
}),
|
|
2181
|
+
defineMcpTool({
|
|
2182
|
+
name: "ctm_hyperliquid_fetch_market_snapshot",
|
|
2183
|
+
actionId: "hyperliquid.fetch-market-snapshot",
|
|
2184
|
+
protocolId: "hyperliquid",
|
|
2185
|
+
chainCategory: "evm",
|
|
2186
|
+
description: "Mid price and OHLCV candles for a Hyperliquid perp coin. Default interval 15m.",
|
|
2187
|
+
prerequisites: ["chainId", "coin"],
|
|
2188
|
+
followUp: ["ctm_hyperliquid_fetch_open_context", "ctm_hyperliquid_build_limit_order_multisign"],
|
|
2189
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchMarketSnapshotSummary" },
|
|
2190
|
+
inputZod: mcpHyperliquidFetchMarketSnapshotInputSchema,
|
|
2191
|
+
outputZod: mcpHyperliquidFetchMarketSnapshotOutputSchema
|
|
2192
|
+
}),
|
|
2193
|
+
defineMcpTool({
|
|
2194
|
+
name: "ctm_hyperliquid_fetch_usd_class_balances",
|
|
2195
|
+
actionId: "hyperliquid.fetch-usd-balances",
|
|
2196
|
+
protocolId: "hyperliquid",
|
|
2197
|
+
chainCategory: "evm",
|
|
2198
|
+
description: "Spot USDC available and perp withdrawable USD for spot\u2194perp transfers.",
|
|
2199
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2200
|
+
followUp: ["ctm_hyperliquid_build_usd_transfer_multisign"],
|
|
2201
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchUsdClassBalancesSummary" },
|
|
2202
|
+
inputZod: mcpHyperliquidFetchUsdClassBalancesInputSchema,
|
|
2203
|
+
outputZod: mcpHyperliquidFetchUsdClassBalancesOutputSchema
|
|
2204
|
+
}),
|
|
2205
|
+
defineMcpTool({
|
|
2206
|
+
name: "ctm_hyperliquid_fetch_vaults",
|
|
2207
|
+
actionId: "hyperliquid.fetch-vaults",
|
|
2208
|
+
protocolId: "hyperliquid",
|
|
2209
|
+
chainCategory: "evm",
|
|
2210
|
+
description: "Vault catalog by TVL with APR (mainnet only; may take ~10\u201315s). Pass executorAddress to merge user-held vaults.",
|
|
2211
|
+
prerequisites: ["chainId 999 for catalog"],
|
|
2212
|
+
followUp: ["ctm_hyperliquid_build_vault_deposit_multisign"],
|
|
2213
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchVaultCatalogSummary" },
|
|
2214
|
+
inputZod: mcpHyperliquidFetchVaultsInputSchema,
|
|
2215
|
+
outputZod: mcpHyperliquidFetchVaultsOutputSchema
|
|
2216
|
+
}),
|
|
2217
|
+
defineMcpTool({
|
|
2218
|
+
name: "ctm_hyperliquid_fetch_user_vault_equities",
|
|
2219
|
+
actionId: "hyperliquid.fetch-user-vault-equities",
|
|
2220
|
+
protocolId: "hyperliquid",
|
|
2221
|
+
chainCategory: "evm",
|
|
2222
|
+
description: "USD equity the user holds in Hyperliquid vaults.",
|
|
2223
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2224
|
+
followUp: ["ctm_hyperliquid_build_vault_withdraw_multisign"],
|
|
2225
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchUserVaultEquitiesSummary" },
|
|
2226
|
+
inputZod: mcpHyperliquidFetchUserVaultEquitiesInputSchema,
|
|
2227
|
+
outputZod: mcpHyperliquidFetchUserVaultEquitiesOutputSchema
|
|
2228
|
+
}),
|
|
2229
|
+
defineMcpTool({
|
|
2230
|
+
name: "ctm_hyperliquid_fetch_staking_summary",
|
|
2231
|
+
actionId: "hyperliquid.fetch-staking-summary",
|
|
2232
|
+
protocolId: "hyperliquid",
|
|
2233
|
+
chainCategory: "evm",
|
|
2234
|
+
description: "HYPE staking summary: delegated and undelegated amounts.",
|
|
2235
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2236
|
+
followUp: ["ctm_hyperliquid_build_stake_multisign", "ctm_hyperliquid_build_delegate_multisign"],
|
|
2237
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchStakingSummaryForExecutor" },
|
|
2238
|
+
inputZod: mcpHyperliquidFetchStakingSummaryInputSchema,
|
|
2239
|
+
outputZod: mcpHyperliquidFetchStakingSummaryOutputSchema
|
|
2240
|
+
}),
|
|
2241
|
+
defineMcpTool({
|
|
2242
|
+
name: "ctm_hyperliquid_fetch_delegations",
|
|
2243
|
+
actionId: "hyperliquid.fetch-delegations",
|
|
2244
|
+
protocolId: "hyperliquid",
|
|
2245
|
+
chainCategory: "evm",
|
|
2246
|
+
description: "HYPE delegations by validator for executor.",
|
|
2247
|
+
prerequisites: ["chainId", "executorAddress"],
|
|
2248
|
+
followUp: ["ctm_hyperliquid_build_undelegate_multisign"],
|
|
2249
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "hyperliquidFetchDelegationsForExecutor" },
|
|
2250
|
+
inputZod: mcpHyperliquidFetchDelegationsInputSchema,
|
|
2251
|
+
outputZod: mcpHyperliquidFetchDelegationsOutputSchema
|
|
1782
2252
|
})
|
|
1783
2253
|
];
|
|
1784
2254
|
var MCP_TOOL_DEFINITIONS = [
|
|
@@ -1822,6 +2292,7 @@ function getAgentCatalogForMcp() {
|
|
|
1822
2292
|
protocols: getProtocolModules(),
|
|
1823
2293
|
commonParams: EVM_COMMON_PARAM_DOCS,
|
|
1824
2294
|
multisignOutput: MULTISIGN_OUTPUT_DOC,
|
|
2295
|
+
multisignSubmitOutput: MULTISIGN_SUBMIT_OUTPUT_DOC,
|
|
1825
2296
|
managementSig: MANAGEMENT_SIG_DOC,
|
|
1826
2297
|
/** Zod schemas for MCP tool I/O — source of truth for continuum-mcp-server validation. */
|
|
1827
2298
|
inputSchemas: MCP_TOOL_INPUT_SCHEMAS,
|
|
@@ -1830,9 +2301,14 @@ function getAgentCatalogForMcp() {
|
|
|
1830
2301
|
evmSwapTypical: [
|
|
1831
2302
|
"1. Quote (protocol-specific API if needed)",
|
|
1832
2303
|
"2. Build protocol calldata (e.g. create_swap)",
|
|
1833
|
-
"3. build_*_multisign \u2192 {
|
|
1834
|
-
"4.
|
|
1835
|
-
|
|
2304
|
+
"3. build_*_multisign \u2192 { requestId } (MCP auto-submits)",
|
|
2305
|
+
"4. wait_for_sign_request_ready \u2192 sign_request_agree \u2192 trigger_sign_result \u2192 broadcast_sign_result"
|
|
2306
|
+
],
|
|
2307
|
+
evmSwapManualTypical: [
|
|
2308
|
+
"1. Quote (protocol-specific API if needed)",
|
|
2309
|
+
"2. Build protocol calldata",
|
|
2310
|
+
"3. Protocol builder \u2192 { bodyForSign, messageToSign } (node app only)",
|
|
2311
|
+
"4. Sign messageToSign and POST /multiSignRequest with clientSig and signedMessage"
|
|
1836
2312
|
],
|
|
1837
2313
|
managementPostTypical: [
|
|
1838
2314
|
"1. GET /getNodeKey \u2192 nodeKey (128 hex)",
|
|
@@ -2395,6 +2871,146 @@ var gmxProtocolModule = {
|
|
|
2395
2871
|
]
|
|
2396
2872
|
};
|
|
2397
2873
|
registerProtocolModule(gmxProtocolModule);
|
|
2874
|
+
|
|
2875
|
+
// src/protocols/evm/hyperliquid/support.ts
|
|
2876
|
+
var HYPERLIQUID_SUPPORTED_CHAIN_IDS = [999, 998];
|
|
2877
|
+
function isHyperliquidChainSupported(chainId) {
|
|
2878
|
+
return HYPERLIQUID_SUPPORTED_CHAIN_IDS.includes(chainId);
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2881
|
+
// src/protocols/evm/hyperliquid/index.ts
|
|
2882
|
+
var HYPERLIQUID_PROTOCOL_ID = "hyperliquid";
|
|
2883
|
+
var hyperliquidProtocolModule = {
|
|
2884
|
+
id: HYPERLIQUID_PROTOCOL_ID,
|
|
2885
|
+
chainCategory: "evm",
|
|
2886
|
+
isChainSupported(ctx) {
|
|
2887
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
2888
|
+
const chainId = typeof ctx.chainId === "number" ? ctx.chainId : Number(ctx.chainId);
|
|
2889
|
+
return Number.isFinite(chainId) && isHyperliquidChainSupported(chainId);
|
|
2890
|
+
},
|
|
2891
|
+
isTokenSupported(token) {
|
|
2892
|
+
if (token.category !== "evm") return false;
|
|
2893
|
+
return token.kind === "erc20" || token.kind === "native";
|
|
2894
|
+
},
|
|
2895
|
+
actions: [
|
|
2896
|
+
{
|
|
2897
|
+
id: "hyperliquid.limitOrder",
|
|
2898
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2899
|
+
chainCategory: "evm",
|
|
2900
|
+
description: "Place a Hyperliquid limit/IoC order via HyperEVM CoreWriter",
|
|
2901
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2902
|
+
params: {
|
|
2903
|
+
coin: { type: "string", required: true, description: "Market coin e.g. BTC" },
|
|
2904
|
+
isBuy: { type: "boolean", required: true, description: "true for buy/long, false for sell/short" },
|
|
2905
|
+
limitPxHuman: { type: "string", required: true, description: "Limit price" },
|
|
2906
|
+
szHuman: { type: "string", required: true, description: "Order size in coin units" },
|
|
2907
|
+
marketKind: { type: "string", required: false, description: "perp (default) or spot" },
|
|
2908
|
+
tif: { type: "string", required: false, description: "gtc, ioc, or alo" },
|
|
2909
|
+
dex: { type: "string", required: false, description: "HIP-3 dex name when applicable" }
|
|
2910
|
+
}
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
id: "hyperliquid.close",
|
|
2914
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2915
|
+
chainCategory: "evm",
|
|
2916
|
+
description: "Close or reduce a perp via IoC reduce-only limit order (CoreWriter)",
|
|
2917
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2918
|
+
params: {
|
|
2919
|
+
coin: { type: "string", required: true, description: "Market coin" },
|
|
2920
|
+
isLong: { type: "boolean", required: true, description: "true if closing a long position" },
|
|
2921
|
+
limitPxHuman: { type: "string", required: true, description: "Limit price" },
|
|
2922
|
+
szHuman: { type: "string", required: true, description: "Size to close in coin units" }
|
|
2923
|
+
}
|
|
2924
|
+
},
|
|
2925
|
+
{
|
|
2926
|
+
id: "hyperliquid.cancel",
|
|
2927
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2928
|
+
chainCategory: "evm",
|
|
2929
|
+
description: "Cancel a Hyperliquid open order via CoreWriter",
|
|
2930
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2931
|
+
params: {
|
|
2932
|
+
coin: { type: "string", required: true, description: "Market coin" },
|
|
2933
|
+
oid: { type: "number", required: true, description: "Order id from openOrders" }
|
|
2934
|
+
}
|
|
2935
|
+
},
|
|
2936
|
+
{
|
|
2937
|
+
id: "hyperliquid.usdTransfer",
|
|
2938
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2939
|
+
chainCategory: "evm",
|
|
2940
|
+
description: "Move USDC between Hyperliquid spot and perp margin accounts",
|
|
2941
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2942
|
+
params: {
|
|
2943
|
+
usdHuman: { type: "string", required: true, description: "USD amount" },
|
|
2944
|
+
toPerp: { type: "boolean", required: true, description: "true spot\u2192perp, false perp\u2192spot" }
|
|
2945
|
+
}
|
|
2946
|
+
},
|
|
2947
|
+
{
|
|
2948
|
+
id: "hyperliquid.vaultDeposit",
|
|
2949
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2950
|
+
chainCategory: "evm",
|
|
2951
|
+
description: "Deposit USD into a Hyperliquid vault",
|
|
2952
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2953
|
+
params: {
|
|
2954
|
+
vaultAddress: { type: "string", required: true, description: "Vault address" },
|
|
2955
|
+
usdHuman: { type: "string", required: true, description: "USD amount" }
|
|
2956
|
+
}
|
|
2957
|
+
},
|
|
2958
|
+
{
|
|
2959
|
+
id: "hyperliquid.vaultWithdraw",
|
|
2960
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2961
|
+
chainCategory: "evm",
|
|
2962
|
+
description: "Withdraw USD from a Hyperliquid vault (includes accrued PnL)",
|
|
2963
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2964
|
+
params: {
|
|
2965
|
+
vaultAddress: { type: "string", required: true, description: "Vault address" },
|
|
2966
|
+
usdHuman: { type: "string", required: true, description: "USD amount" }
|
|
2967
|
+
}
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
id: "hyperliquid.stake",
|
|
2971
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2972
|
+
chainCategory: "evm",
|
|
2973
|
+
description: "Stake HYPE via CoreWriter",
|
|
2974
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2975
|
+
params: {
|
|
2976
|
+
hypeHuman: { type: "string", required: true, description: "HYPE amount" }
|
|
2977
|
+
}
|
|
2978
|
+
},
|
|
2979
|
+
{
|
|
2980
|
+
id: "hyperliquid.unstake",
|
|
2981
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2982
|
+
chainCategory: "evm",
|
|
2983
|
+
description: "Unstake HYPE via CoreWriter",
|
|
2984
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2985
|
+
params: {
|
|
2986
|
+
hypeHuman: { type: "string", required: true, description: "HYPE amount" }
|
|
2987
|
+
}
|
|
2988
|
+
},
|
|
2989
|
+
{
|
|
2990
|
+
id: "hyperliquid.delegate",
|
|
2991
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
2992
|
+
chainCategory: "evm",
|
|
2993
|
+
description: "Delegate staked HYPE to a validator",
|
|
2994
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
2995
|
+
params: {
|
|
2996
|
+
hypeHuman: { type: "string", required: true, description: "HYPE amount" },
|
|
2997
|
+
validator: { type: "string", required: true, description: "Validator address" }
|
|
2998
|
+
}
|
|
2999
|
+
},
|
|
3000
|
+
{
|
|
3001
|
+
id: "hyperliquid.undelegate",
|
|
3002
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
3003
|
+
chainCategory: "evm",
|
|
3004
|
+
description: "Undelegate HYPE from a validator",
|
|
3005
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
3006
|
+
params: {
|
|
3007
|
+
hypeHuman: { type: "string", required: true, description: "HYPE amount" },
|
|
3008
|
+
validator: { type: "string", required: true, description: "Validator address" }
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
]
|
|
3012
|
+
};
|
|
3013
|
+
registerProtocolModule(hyperliquidProtocolModule);
|
|
2398
3014
|
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");
|
|
2399
3015
|
var SKILL_PROTOCOL_IDS = [
|
|
2400
3016
|
"aave-v4",
|
|
@@ -2405,17 +3021,32 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
2405
3021
|
"euler-v2",
|
|
2406
3022
|
"maple-syrup",
|
|
2407
3023
|
"sky",
|
|
2408
|
-
"gmx"
|
|
3024
|
+
"gmx",
|
|
3025
|
+
"hyperliquid"
|
|
2409
3026
|
];
|
|
2410
3027
|
function getToolsForProtocol(protocolId) {
|
|
2411
3028
|
return MCP_TOOL_DEFINITIONS.filter((t) => t.protocolId === protocolId);
|
|
2412
3029
|
}
|
|
3030
|
+
function readSharedMultisignMcpGasSection() {
|
|
3031
|
+
try {
|
|
3032
|
+
return fs.readFileSync(path.join(skillsDir, "_shared", "multisign-mcp-gas.md"), "utf8").trim();
|
|
3033
|
+
} catch {
|
|
3034
|
+
return "";
|
|
3035
|
+
}
|
|
3036
|
+
}
|
|
2413
3037
|
function getProtocolSkill(protocolId) {
|
|
2414
3038
|
if (!SKILL_PROTOCOL_IDS.includes(protocolId)) {
|
|
2415
3039
|
return void 0;
|
|
2416
3040
|
}
|
|
2417
3041
|
try {
|
|
2418
|
-
|
|
3042
|
+
const skill = fs.readFileSync(path.join(skillsDir, protocolId, "SKILL.md"), "utf8").trim();
|
|
3043
|
+
const shared = readSharedMultisignMcpGasSection();
|
|
3044
|
+
if (!shared) return skill;
|
|
3045
|
+
if (skill.includes("## Gas and MCP submit")) return skill;
|
|
3046
|
+
return `${skill}
|
|
3047
|
+
|
|
3048
|
+
${shared}
|
|
3049
|
+
`;
|
|
2419
3050
|
} catch {
|
|
2420
3051
|
return void 0;
|
|
2421
3052
|
}
|
|
@@ -2674,22 +3305,6 @@ function getProtocolSupportAdvisor(protocolId) {
|
|
|
2674
3305
|
function listProtocolSupportAdvisorIds() {
|
|
2675
3306
|
return Object.keys(PROTOCOL_SUPPORT_ADVISORS);
|
|
2676
3307
|
}
|
|
2677
|
-
var mcpServerCommonInputSchema = zod.z.object({
|
|
2678
|
-
keyGenId: zod.z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
|
|
2679
|
-
chainId: zod.z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
|
|
2680
|
-
purposeText: zod.z.string().min(1).describe("Human-readable purpose for the sign request"),
|
|
2681
|
-
useCustomGas: zod.z.boolean().optional().describe("Apply chain gas settings from registry when true")
|
|
2682
|
-
});
|
|
2683
|
-
function mcpServerMultisignInput(fields) {
|
|
2684
|
-
return mcpServerCommonInputSchema.extend(fields);
|
|
2685
|
-
}
|
|
2686
|
-
var mcpServerSubmitOutputSchema = zod.z.object({
|
|
2687
|
-
requestId: zod.z.string().min(1)
|
|
2688
|
-
}).describe("mpc-auth multiSignRequest id; continue with trigger_sign_result / broadcast_sign_result");
|
|
2689
|
-
var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
2690
|
-
"ctm_uniswap_v4_quote",
|
|
2691
|
-
"ctm_uniswap_v4_create_swap"
|
|
2692
|
-
]);
|
|
2693
3308
|
|
|
2694
3309
|
// src/agent/catalog.ts
|
|
2695
3310
|
registerProtocolModule(uniswapV4ProtocolModule);
|
|
@@ -2701,6 +3316,7 @@ registerProtocolModule(skyProtocolModule);
|
|
|
2701
3316
|
registerProtocolModule(aaveV4ProtocolModule);
|
|
2702
3317
|
registerProtocolModule(eulerV2ProtocolModule);
|
|
2703
3318
|
registerProtocolModule(gmxProtocolModule);
|
|
3319
|
+
registerProtocolModule(hyperliquidProtocolModule);
|
|
2704
3320
|
function getAgentCatalog() {
|
|
2705
3321
|
return {
|
|
2706
3322
|
protocols: getProtocolModules(),
|
|
@@ -2718,6 +3334,7 @@ function getAgentCatalog() {
|
|
|
2718
3334
|
aaveV4: aaveV4ProtocolModule,
|
|
2719
3335
|
eulerV2: eulerV2ProtocolModule,
|
|
2720
3336
|
gmx: gmxProtocolModule,
|
|
3337
|
+
hyperliquid: hyperliquidProtocolModule,
|
|
2721
3338
|
/** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
|
|
2722
3339
|
mcp: getAgentCatalogForMcp()
|
|
2723
3340
|
};
|
|
@@ -2730,6 +3347,7 @@ exports.MCP_TOOL_DEFINITIONS = MCP_TOOL_DEFINITIONS;
|
|
|
2730
3347
|
exports.MCP_TOOL_INPUT_SCHEMAS = MCP_TOOL_INPUT_SCHEMAS;
|
|
2731
3348
|
exports.MCP_TOOL_OUTPUT_SCHEMAS = MCP_TOOL_OUTPUT_SCHEMAS;
|
|
2732
3349
|
exports.MULTISIGN_OUTPUT_DOC = MULTISIGN_OUTPUT_DOC;
|
|
3350
|
+
exports.MULTISIGN_SUBMIT_OUTPUT_DOC = MULTISIGN_SUBMIT_OUTPUT_DOC;
|
|
2733
3351
|
exports.PROTOCOL_SUPPORT_ADVISORS = PROTOCOL_SUPPORT_ADVISORS;
|
|
2734
3352
|
exports.chainDetailSchema = chainDetailSchema;
|
|
2735
3353
|
exports.evmAddressSchema = evmAddressSchema;
|
|
@@ -2786,9 +3404,39 @@ exports.mcpGmxFetchStakingPowerOutputSchema = mcpGmxFetchStakingPowerOutputSchem
|
|
|
2786
3404
|
exports.mcpGmxGmDepositInputSchema = mcpGmxGmDepositInputSchema;
|
|
2787
3405
|
exports.mcpGmxGmWithdrawInputSchema = mcpGmxGmWithdrawInputSchema;
|
|
2788
3406
|
exports.mcpGmxIncreaseInputSchema = mcpGmxIncreaseInputSchema;
|
|
2789
|
-
exports.mcpGmxMultisignOutputSchema =
|
|
3407
|
+
exports.mcpGmxMultisignOutputSchema = mcpServerSubmitOutputSchema;
|
|
2790
3408
|
exports.mcpGmxStakeGmxInputSchema = mcpGmxStakeGmxInputSchema;
|
|
2791
3409
|
exports.mcpGmxUnstakeGmxInputSchema = mcpGmxUnstakeGmxInputSchema;
|
|
3410
|
+
exports.mcpHyperliquidCancelInputSchema = mcpHyperliquidCancelInputSchema;
|
|
3411
|
+
exports.mcpHyperliquidCloseInputSchema = mcpHyperliquidCloseInputSchema;
|
|
3412
|
+
exports.mcpHyperliquidDelegateInputSchema = mcpHyperliquidDelegateInputSchema;
|
|
3413
|
+
exports.mcpHyperliquidFetchDelegationsInputSchema = mcpHyperliquidFetchDelegationsInputSchema;
|
|
3414
|
+
exports.mcpHyperliquidFetchDelegationsOutputSchema = mcpHyperliquidFetchDelegationsOutputSchema;
|
|
3415
|
+
exports.mcpHyperliquidFetchMarketSnapshotInputSchema = mcpHyperliquidFetchMarketSnapshotInputSchema;
|
|
3416
|
+
exports.mcpHyperliquidFetchMarketSnapshotOutputSchema = mcpHyperliquidFetchMarketSnapshotOutputSchema;
|
|
3417
|
+
exports.mcpHyperliquidFetchMarketsInputSchema = mcpHyperliquidFetchMarketsInputSchema;
|
|
3418
|
+
exports.mcpHyperliquidFetchMarketsOutputSchema = mcpHyperliquidFetchMarketsOutputSchema;
|
|
3419
|
+
exports.mcpHyperliquidFetchOpenContextInputSchema = mcpHyperliquidFetchOpenContextInputSchema;
|
|
3420
|
+
exports.mcpHyperliquidFetchOpenContextOutputSchema = mcpHyperliquidFetchOpenContextOutputSchema;
|
|
3421
|
+
exports.mcpHyperliquidFetchOpenOrdersInputSchema = mcpHyperliquidFetchOpenOrdersInputSchema;
|
|
3422
|
+
exports.mcpHyperliquidFetchOpenOrdersOutputSchema = mcpHyperliquidFetchOpenOrdersOutputSchema;
|
|
3423
|
+
exports.mcpHyperliquidFetchPositionsInputSchema = mcpHyperliquidFetchPositionsInputSchema;
|
|
3424
|
+
exports.mcpHyperliquidFetchPositionsOutputSchema = mcpHyperliquidFetchPositionsOutputSchema;
|
|
3425
|
+
exports.mcpHyperliquidFetchStakingSummaryInputSchema = mcpHyperliquidFetchStakingSummaryInputSchema;
|
|
3426
|
+
exports.mcpHyperliquidFetchStakingSummaryOutputSchema = mcpHyperliquidFetchStakingSummaryOutputSchema;
|
|
3427
|
+
exports.mcpHyperliquidFetchUsdClassBalancesInputSchema = mcpHyperliquidFetchUsdClassBalancesInputSchema;
|
|
3428
|
+
exports.mcpHyperliquidFetchUsdClassBalancesOutputSchema = mcpHyperliquidFetchUsdClassBalancesOutputSchema;
|
|
3429
|
+
exports.mcpHyperliquidFetchUserVaultEquitiesInputSchema = mcpHyperliquidFetchUserVaultEquitiesInputSchema;
|
|
3430
|
+
exports.mcpHyperliquidFetchUserVaultEquitiesOutputSchema = mcpHyperliquidFetchUserVaultEquitiesOutputSchema;
|
|
3431
|
+
exports.mcpHyperliquidFetchVaultsInputSchema = mcpHyperliquidFetchVaultsInputSchema;
|
|
3432
|
+
exports.mcpHyperliquidFetchVaultsOutputSchema = mcpHyperliquidFetchVaultsOutputSchema;
|
|
3433
|
+
exports.mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidLimitOrderInputSchema;
|
|
3434
|
+
exports.mcpHyperliquidStakeInputSchema = mcpHyperliquidStakeInputSchema;
|
|
3435
|
+
exports.mcpHyperliquidUndelegateInputSchema = mcpHyperliquidUndelegateInputSchema;
|
|
3436
|
+
exports.mcpHyperliquidUnstakeInputSchema = mcpHyperliquidUnstakeInputSchema;
|
|
3437
|
+
exports.mcpHyperliquidUsdTransferInputSchema = mcpHyperliquidUsdTransferInputSchema;
|
|
3438
|
+
exports.mcpHyperliquidVaultDepositInputSchema = mcpHyperliquidVaultDepositInputSchema;
|
|
3439
|
+
exports.mcpHyperliquidVaultWithdrawInputSchema = mcpHyperliquidVaultWithdrawInputSchema;
|
|
2792
3440
|
exports.mcpLidoClaimWithdrawalInputSchema = mcpLidoClaimWithdrawalInputSchema;
|
|
2793
3441
|
exports.mcpLidoRequestWithdrawalsInputSchema = mcpLidoRequestWithdrawalsInputSchema;
|
|
2794
3442
|
exports.mcpLidoSubmitInputSchema = mcpLidoSubmitInputSchema;
|
|
@@ -2798,6 +3446,7 @@ exports.mcpMapleDepositInputSchema = mcpMapleDepositInputSchema;
|
|
|
2798
3446
|
exports.mcpMapleRequestRedeemInputSchema = mcpMapleRequestRedeemInputSchema;
|
|
2799
3447
|
exports.mcpMultisignInput = mcpMultisignInput;
|
|
2800
3448
|
exports.mcpMultisignOutputSchema = multisignOutputSchema;
|
|
3449
|
+
exports.mcpMultisignSubmitOutputSchema = mcpServerSubmitOutputSchema;
|
|
2801
3450
|
exports.mcpServerCommonInputSchema = mcpServerCommonInputSchema;
|
|
2802
3451
|
exports.mcpServerMultisignInput = mcpServerMultisignInput;
|
|
2803
3452
|
exports.mcpServerSubmitOutputSchema = mcpServerSubmitOutputSchema;
|
|
@@ -2836,6 +3485,7 @@ exports.mcpUniswapV4RegisterPositionNftOutputSchema = mcpUniswapV4RegisterPositi
|
|
|
2836
3485
|
exports.multisignOutputSchema = multisignOutputSchema;
|
|
2837
3486
|
exports.parseMcpToolInput = parseMcpToolInput;
|
|
2838
3487
|
exports.parseMcpToolOutput = parseMcpToolOutput;
|
|
3488
|
+
exports.parseMultisignBuilderOutput = parseMultisignBuilderOutput;
|
|
2839
3489
|
exports.uniswapQuoteTradeTypeSchema = uniswapQuoteTradeTypeSchema;
|
|
2840
3490
|
exports.zodSchemaToMcpJsonSchema = zodSchemaToMcpJsonSchema;
|
|
2841
3491
|
//# sourceMappingURL=catalog.cjs.map
|