@continuumdao/ctm-mpc-defi 0.2.48 → 0.2.50
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 +1664 -5
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +2705 -7
- package/dist/agent/catalog.js +1599 -6
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/derive/SKILL.md +112 -0
- package/dist/agent/skills/hyperliquid/SKILL.md +22 -2
- package/dist/agent/skills/trueo/SKILL.md +64 -0
- package/dist/chains/evm/index.d.ts +118 -6
- package/dist/chains/near/index.d.ts +7 -1
- package/dist/chains/solana/index.d.ts +7 -1
- package/dist/core/index.cjs +3 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +138 -7
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +848 -16
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +600 -6
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.d.ts +125 -5
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/arcus/index.d.ts +66 -2
- package/dist/protocols/evm/circle-cctp/index.d.ts +71 -2
- package/dist/protocols/evm/compound-v3/index.d.ts +52 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +56 -1
- package/dist/protocols/evm/curve-dao/index.d.ts +66 -2
- package/dist/protocols/evm/derive/index.cjs +2655 -0
- package/dist/protocols/evm/derive/index.cjs.map +1 -0
- package/dist/protocols/evm/derive/index.d.ts +859 -0
- package/dist/protocols/evm/derive/index.js +2536 -0
- package/dist/protocols/evm/derive/index.js.map +1 -0
- package/dist/protocols/evm/ethena/index.d.ts +52 -1
- package/dist/protocols/evm/euler-v2/index.d.ts +115 -16
- package/dist/protocols/evm/gmx/index.d.ts +66 -2
- package/dist/protocols/evm/hyperliquid/index.cjs +545 -267
- package/dist/protocols/evm/hyperliquid/index.cjs.map +1 -1
- package/dist/protocols/evm/hyperliquid/index.d.ts +152 -7
- package/dist/protocols/evm/hyperliquid/index.js +535 -269
- package/dist/protocols/evm/hyperliquid/index.js.map +1 -1
- package/dist/protocols/evm/lido/index.d.ts +52 -1
- package/dist/protocols/evm/maple/index.d.ts +52 -1
- package/dist/protocols/evm/morpho/index.d.ts +115 -4
- package/dist/protocols/evm/pendle/index.cjs +3 -1
- package/dist/protocols/evm/pendle/index.cjs.map +1 -1
- package/dist/protocols/evm/pendle/index.d.ts +125 -5
- package/dist/protocols/evm/pendle/index.js +3 -1
- package/dist/protocols/evm/pendle/index.js.map +1 -1
- package/dist/protocols/evm/permit2/index.d.ts +14 -1
- package/dist/protocols/evm/sky/index.d.ts +52 -1
- package/dist/protocols/evm/trueo/index.cjs +2308 -0
- package/dist/protocols/evm/trueo/index.cjs.map +1 -0
- package/dist/protocols/evm/trueo/index.d.ts +1254 -0
- package/dist/protocols/evm/trueo/index.js +2165 -0
- package/dist/protocols/evm/trueo/index.js.map +1 -0
- package/dist/protocols/evm/uniswap-v4/index.d.ts +78 -4
- package/dist/protocols/evm/venice/index.d.ts +52 -1
- package/package.json +12 -2
- package/dist/buildBatch-tsEUVn_a.d.ts +0 -45
- package/dist/eip712Multisign-6oNIlObj.d.ts +0 -39
- package/dist/envelope-Cm-llShH.d.ts +0 -37
- package/dist/merklDistributor-CdqtZC9N.d.ts +0 -65
- package/dist/multisign-Dr0j9fHm.d.ts +0 -489
- package/dist/registry-BvsXh0-r.d.ts +0 -8
- package/dist/types-RJpoU4Pc.d.ts +0 -34
- package/dist/types-lIfv59N1.d.ts +0 -63
package/dist/agent/catalog.cjs
CHANGED
|
@@ -4,6 +4,7 @@ var viem = require('viem');
|
|
|
4
4
|
var api = require('@morpho-org/midnight-sdk/api');
|
|
5
5
|
var zodToJsonSchema = require('zod-to-json-schema');
|
|
6
6
|
var zod = require('zod');
|
|
7
|
+
require('@msgpack/msgpack');
|
|
7
8
|
var module$1 = require('module');
|
|
8
9
|
var url = require('url');
|
|
9
10
|
var fs = require('fs');
|
|
@@ -1302,6 +1303,14 @@ function aliasField(o, target, ...sources) {
|
|
|
1302
1303
|
const val = firstDefined(...sources.map((k) => o[k]));
|
|
1303
1304
|
if (val != null) o[target] = val;
|
|
1304
1305
|
}
|
|
1306
|
+
function normalizeHyperliquidTrailingOffsetType(o) {
|
|
1307
|
+
const raw = String(o.trailingOffsetType ?? "").trim().toLowerCase();
|
|
1308
|
+
if (!raw) return;
|
|
1309
|
+
if (raw === "price" || raw === "px" || raw === "distance") o.trailingOffsetType = "price";
|
|
1310
|
+
else if (raw === "percentage" || raw === "percent" || raw === "pct" || raw === "%") {
|
|
1311
|
+
o.trailingOffsetType = "percentage";
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1305
1314
|
function derivePurposeIfMissing(o, build) {
|
|
1306
1315
|
const purposeText = String(o.purposeText ?? o.purpose ?? "").trim();
|
|
1307
1316
|
if (purposeText) {
|
|
@@ -1378,18 +1387,40 @@ function preprocessHyperliquidLimitOrderInput(raw) {
|
|
|
1378
1387
|
aliasField(o, "szHuman", "szHuman", "sz", "size");
|
|
1379
1388
|
aliasField(o, "takeProfitTriggerPxHuman", "takeProfitTriggerPxHuman", "takeProfitPxHuman", "tpTriggerPxHuman", "targetPxHuman");
|
|
1380
1389
|
aliasField(o, "stopLossTriggerPxHuman", "stopLossTriggerPxHuman", "stopLossPxHuman", "slTriggerPxHuman", "invalidationPxHuman");
|
|
1390
|
+
aliasField(o, "trailingOffsetHuman", "trailingOffsetHuman", "retracement", "trailingOffset");
|
|
1391
|
+
aliasField(o, "trailingOffsetType", "trailingOffsetType", "retracementUnit", "offsetType");
|
|
1392
|
+
aliasField(o, "trailingActivationPxHuman", "trailingActivationPxHuman", "activationPx", "activationPrice");
|
|
1393
|
+
normalizeHyperliquidTrailingOffsetType(o);
|
|
1381
1394
|
derivePurposeIfMissing(o, (x) => {
|
|
1382
1395
|
const coin = String(x.coin ?? "").trim();
|
|
1383
1396
|
const side = x.isBuy === true || x.isBuy === "true" ? "buy" : "sell";
|
|
1384
1397
|
const sz = String(x.szHuman ?? "").trim();
|
|
1385
1398
|
const tp = String(x.takeProfitTriggerPxHuman ?? "").trim();
|
|
1386
1399
|
const sl = String(x.stopLossTriggerPxHuman ?? "").trim();
|
|
1400
|
+
const trail = String(x.trailingOffsetHuman ?? "").trim();
|
|
1401
|
+
if (coin && sz && trail) return `HL trailing ${side} ${coin} ${sz}`;
|
|
1387
1402
|
if (coin && sz && (tp || sl)) return `HL bracket ${side} ${coin} ${sz}`;
|
|
1388
1403
|
if (coin && sz) return `HL limit ${side} ${coin} ${sz}`;
|
|
1389
1404
|
return void 0;
|
|
1390
1405
|
});
|
|
1391
1406
|
return o;
|
|
1392
1407
|
}
|
|
1408
|
+
function preprocessHyperliquidTrailingStopInput(raw) {
|
|
1409
|
+
const o = preprocessHyperliquidCoinInput(raw);
|
|
1410
|
+
if (!preprocessObject(o)) return raw;
|
|
1411
|
+
aliasField(o, "szHuman", "szHuman", "sz", "size");
|
|
1412
|
+
aliasField(o, "trailingOffsetHuman", "trailingOffsetHuman", "retracement", "trailingOffset");
|
|
1413
|
+
aliasField(o, "trailingOffsetType", "trailingOffsetType", "retracementUnit", "offsetType");
|
|
1414
|
+
aliasField(o, "trailingActivationPxHuman", "trailingActivationPxHuman", "activationPx", "activationPrice");
|
|
1415
|
+
normalizeHyperliquidTrailingOffsetType(o);
|
|
1416
|
+
derivePurposeIfMissing(o, (x) => {
|
|
1417
|
+
const coin = String(x.coin ?? "").trim();
|
|
1418
|
+
const offset = String(x.trailingOffsetHuman ?? "").trim();
|
|
1419
|
+
if (coin && offset) return `HL trailing stop ${coin} ${offset}`;
|
|
1420
|
+
return void 0;
|
|
1421
|
+
});
|
|
1422
|
+
return o;
|
|
1423
|
+
}
|
|
1393
1424
|
function preprocessHyperliquidCloseInput(raw) {
|
|
1394
1425
|
const o = preprocessHyperliquidCoinInput(raw);
|
|
1395
1426
|
if (!preprocessObject(o)) return raw;
|
|
@@ -2716,7 +2747,15 @@ var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
2716
2747
|
"ctm_uniswap_v4_limit_order_quote",
|
|
2717
2748
|
"ctm_uniswap_v4_fetch_limit_orders",
|
|
2718
2749
|
"ctm_uniswap_v4_check_permissions",
|
|
2719
|
-
"ctm_uniswap_v4_kyc_apply_link"
|
|
2750
|
+
"ctm_uniswap_v4_kyc_apply_link",
|
|
2751
|
+
"search_prediction_markets",
|
|
2752
|
+
"get_prediction_market",
|
|
2753
|
+
"ctm_trueo_fetch_categories",
|
|
2754
|
+
"ctm_trueo_fetch_trending",
|
|
2755
|
+
"ctm_trueo_search_markets",
|
|
2756
|
+
"ctm_trueo_fetch_market",
|
|
2757
|
+
"ctm_trueo_fetch_chance_series",
|
|
2758
|
+
"ctm_trueo_fetch_orderbook"
|
|
2720
2759
|
]);
|
|
2721
2760
|
|
|
2722
2761
|
// src/agent/schemas/protocols.ts
|
|
@@ -4572,6 +4611,34 @@ var mcpGmxFetchOhlcvOutputSchema = zod.z.object({
|
|
|
4572
4611
|
candleCount: zod.z.number().int().nonnegative(),
|
|
4573
4612
|
candles: zod.z.array(gmxOhlcvCandleSchema)
|
|
4574
4613
|
});
|
|
4614
|
+
function hyperliquidFloatToWire(value) {
|
|
4615
|
+
const n = typeof value === "number" ? value : Number.parseFloat(String(value).trim());
|
|
4616
|
+
if (!Number.isFinite(n)) throw new Error("Invalid Hyperliquid wire number.");
|
|
4617
|
+
const rounded = n.toFixed(8);
|
|
4618
|
+
if (Math.abs(Number.parseFloat(rounded) - n) >= 1e-12) {
|
|
4619
|
+
throw new Error(`Hyperliquid wire value ${value} has too many decimal places.`);
|
|
4620
|
+
}
|
|
4621
|
+
const normalized = Number(rounded === "-0" ? "0" : rounded);
|
|
4622
|
+
return String(normalized);
|
|
4623
|
+
}
|
|
4624
|
+
var HYPERLIQUID_TRAILING_ACTIVATION_PX_ERROR = "Invalid trailing activation price.";
|
|
4625
|
+
var POSITIVE_DECIMAL_RE = /^\d+(\.\d+)?$/;
|
|
4626
|
+
function parseHyperliquidTrailingActivationPx(value) {
|
|
4627
|
+
if (value == null) return null;
|
|
4628
|
+
const raw = String(value).trim().replace(/,/g, "");
|
|
4629
|
+
if (!raw) return null;
|
|
4630
|
+
if (!POSITIVE_DECIMAL_RE.test(raw)) {
|
|
4631
|
+
throw new Error(HYPERLIQUID_TRAILING_ACTIVATION_PX_ERROR);
|
|
4632
|
+
}
|
|
4633
|
+
const px = Number.parseFloat(raw);
|
|
4634
|
+
if (!Number.isFinite(px) || px <= 0) {
|
|
4635
|
+
throw new Error(HYPERLIQUID_TRAILING_ACTIVATION_PX_ERROR);
|
|
4636
|
+
}
|
|
4637
|
+
hyperliquidFloatToWire(raw);
|
|
4638
|
+
return raw;
|
|
4639
|
+
}
|
|
4640
|
+
|
|
4641
|
+
// src/agent/schemas/hyperliquid.ts
|
|
4575
4642
|
function mcpHyperliquidMultisignInput(fields, preprocess) {
|
|
4576
4643
|
const inner = evmMultisignCommonInputSchema.extend(fields);
|
|
4577
4644
|
const shaped = preprocess ? zod.z.preprocess(preprocess, inner) : inner;
|
|
@@ -4719,7 +4786,16 @@ var mcpHyperliquidFetchOpenOrdersOutputSchema = zod.z.object({
|
|
|
4719
4786
|
sz: zod.z.string(),
|
|
4720
4787
|
oid: zod.z.number().describe("Pass to build_cancel_multisign as oid"),
|
|
4721
4788
|
timestamp: zod.z.number(),
|
|
4722
|
-
reduceOnly: zod.z.boolean().optional()
|
|
4789
|
+
reduceOnly: zod.z.boolean().optional(),
|
|
4790
|
+
isTrigger: zod.z.boolean().optional(),
|
|
4791
|
+
triggerPx: zod.z.string().optional(),
|
|
4792
|
+
triggerCondition: zod.z.string().optional(),
|
|
4793
|
+
orderType: zod.z.string().optional(),
|
|
4794
|
+
trailingStop: zod.z.object({
|
|
4795
|
+
retracement: zod.z.string(),
|
|
4796
|
+
activationPx: zod.z.string().nullable(),
|
|
4797
|
+
bestPx: zod.z.string().nullable()
|
|
4798
|
+
}).nullable().optional()
|
|
4723
4799
|
})
|
|
4724
4800
|
)
|
|
4725
4801
|
});
|
|
@@ -4844,6 +4920,16 @@ var mcpHyperliquidFetchDelegationsOutputSchema = zod.z.object({
|
|
|
4844
4920
|
)
|
|
4845
4921
|
});
|
|
4846
4922
|
var hyperliquidTpslExecModeSchema = zod.z.enum(["limit_at_trigger", "market"]);
|
|
4923
|
+
var mcpHyperliquidTrailingActivationPxSchema = zod.z.string().min(1).optional().superRefine((value, ctx) => {
|
|
4924
|
+
try {
|
|
4925
|
+
parseHyperliquidTrailingActivationPx(value);
|
|
4926
|
+
} catch (e) {
|
|
4927
|
+
ctx.addIssue({
|
|
4928
|
+
code: zod.z.ZodIssueCode.custom,
|
|
4929
|
+
message: e instanceof Error ? e.message : "Invalid trailing activation price."
|
|
4930
|
+
});
|
|
4931
|
+
}
|
|
4932
|
+
}).describe("Optional mark price where trailing tracking begins. Omit to start immediately.");
|
|
4847
4933
|
var mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidMultisignInput(
|
|
4848
4934
|
{
|
|
4849
4935
|
coin: zod.z.string().min(1).describe("coin from fetch_markets (name) or search_markets"),
|
|
@@ -4855,10 +4941,30 @@ var mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidMultisignInput(
|
|
|
4855
4941
|
dex: zod.z.string().optional(),
|
|
4856
4942
|
takeProfitTriggerPxHuman: zod.z.string().min(1).optional().describe("Take-profit trigger price \u2014 with SL enables L1 normalTpsl bracket (EIP-712, not CoreWriter)."),
|
|
4857
4943
|
stopLossTriggerPxHuman: zod.z.string().min(1).optional().describe("Stop-loss trigger price \u2014 with TP enables L1 normalTpsl bracket (EIP-712, not CoreWriter)."),
|
|
4858
|
-
tpslExecMode: hyperliquidTpslExecModeSchema.optional().describe("Trigger execution: limit_at_trigger (default) or market.")
|
|
4944
|
+
tpslExecMode: hyperliquidTpslExecModeSchema.optional().describe("Trigger execution: limit_at_trigger (default) or market."),
|
|
4945
|
+
trailingOffsetHuman: zod.z.string().min(1).optional().describe(
|
|
4946
|
+
"Trailing-stop retracement (price distance or percent). Cannot combine with stopLossTriggerPxHuman. Perp only \u2014 EIP-712 /exchange."
|
|
4947
|
+
),
|
|
4948
|
+
trailingOffsetType: zod.z.enum(["price", "percentage"]).optional().describe("price = fixed distance; percentage = retracement rate (default)."),
|
|
4949
|
+
trailingActivationPxHuman: mcpHyperliquidTrailingActivationPxSchema
|
|
4859
4950
|
},
|
|
4860
4951
|
preprocessHyperliquidLimitOrderInput
|
|
4861
4952
|
);
|
|
4953
|
+
var mcpHyperliquidTrailingStopInputSchema = mcpHyperliquidMultisignInput(
|
|
4954
|
+
{
|
|
4955
|
+
coin: zod.z.string().min(1).describe("perp coin from fetch_markets or fetch_positions"),
|
|
4956
|
+
isBuy: agentBooleanSchema().describe(
|
|
4957
|
+
"Execution side: false to close a long / open a short; true to close a short / open a long."
|
|
4958
|
+
),
|
|
4959
|
+
szHuman: zod.z.string().min(1).describe("Size in coin units (use position size to close)."),
|
|
4960
|
+
reduceOnly: agentBooleanSchema().optional().describe("true (default) closes/reduces; false can open a position."),
|
|
4961
|
+
trailingOffsetHuman: zod.z.string().min(1).describe("Retracement distance or percent (e.g. 2 or 2%)."),
|
|
4962
|
+
trailingOffsetType: zod.z.enum(["price", "percentage"]).optional().describe("price = fixed distance; percentage = retracement rate (default)."),
|
|
4963
|
+
trailingActivationPxHuman: mcpHyperliquidTrailingActivationPxSchema,
|
|
4964
|
+
dex: zod.z.string().optional()
|
|
4965
|
+
},
|
|
4966
|
+
preprocessHyperliquidTrailingStopInput
|
|
4967
|
+
);
|
|
4862
4968
|
var mcpHyperliquidCloseInputSchema = mcpHyperliquidMultisignInput(
|
|
4863
4969
|
{
|
|
4864
4970
|
coin: zod.z.string().min(1),
|
|
@@ -5190,6 +5296,512 @@ var mcpArcusBuildWithdrawMultisignInputSchema = withMultisignKeySourceRefine(
|
|
|
5190
5296
|
product: arcusFundProductSchema
|
|
5191
5297
|
})
|
|
5192
5298
|
);
|
|
5299
|
+
var mcpTrueoFetchCategoriesInputSchema = zod.z.object({}).passthrough();
|
|
5300
|
+
var mcpTrueoFetchCategoriesOutputSchema = zod.z.object({
|
|
5301
|
+
categories: zod.z.array(zod.z.object({ id: zod.z.number(), name: zod.z.string() })),
|
|
5302
|
+
chainId: zod.z.number()
|
|
5303
|
+
});
|
|
5304
|
+
var mcpTrueoMarketRowSchema = zod.z.object({
|
|
5305
|
+
address: zod.z.string(),
|
|
5306
|
+
question: zod.z.string(),
|
|
5307
|
+
rules: zod.z.string(),
|
|
5308
|
+
source: zod.z.string(),
|
|
5309
|
+
categories: zod.z.array(zod.z.string()),
|
|
5310
|
+
size: zod.z.string(),
|
|
5311
|
+
tvl: zod.z.number().nullable(),
|
|
5312
|
+
yesTokenAddress: zod.z.string(),
|
|
5313
|
+
noTokenAddress: zod.z.string(),
|
|
5314
|
+
yesPoolAddress: zod.z.string(),
|
|
5315
|
+
noPoolAddress: zod.z.string(),
|
|
5316
|
+
paymentTokenAddress: zod.z.string(),
|
|
5317
|
+
paymentTokenSymbol: zod.z.string(),
|
|
5318
|
+
paymentTokenDecimals: zod.z.number(),
|
|
5319
|
+
endOfTrading: zod.z.number(),
|
|
5320
|
+
status: zod.z.number(),
|
|
5321
|
+
outcome: zod.z.number().optional(),
|
|
5322
|
+
statusUpdatedAt: zod.z.string().nullable().optional(),
|
|
5323
|
+
imageUrl: zod.z.string().nullable(),
|
|
5324
|
+
yesPoolTick: zod.z.number().nullable(),
|
|
5325
|
+
noPoolTick: zod.z.number().nullable(),
|
|
5326
|
+
yesPoolSqrtPriceX96: zod.z.string().nullable(),
|
|
5327
|
+
noPoolSqrtPriceX96: zod.z.string().nullable(),
|
|
5328
|
+
yesPrice: zod.z.number().nullable(),
|
|
5329
|
+
noPrice: zod.z.number().nullable(),
|
|
5330
|
+
yesPriceLabel: zod.z.string().nullable(),
|
|
5331
|
+
noPriceLabel: zod.z.string().nullable(),
|
|
5332
|
+
expiresAt: zod.z.string().nullable(),
|
|
5333
|
+
expiresAtLabel: zod.z.string().nullable(),
|
|
5334
|
+
chainId: zod.z.number(),
|
|
5335
|
+
network: zod.z.string()
|
|
5336
|
+
});
|
|
5337
|
+
var mcpTrueoFetchTrendingInputSchema = zod.z.object({
|
|
5338
|
+
limit: zod.z.number().int().positive().optional(),
|
|
5339
|
+
includeAll: agentOptionalBooleanSchema().describe(
|
|
5340
|
+
"If true, include older closed/resolved markets. Default: live and recently finished (14 days)."
|
|
5341
|
+
)
|
|
5342
|
+
});
|
|
5343
|
+
var mcpTrueoFetchTrendingOutputSchema = zod.z.object({
|
|
5344
|
+
markets: zod.z.array(mcpTrueoMarketRowSchema),
|
|
5345
|
+
notes: zod.z.string(),
|
|
5346
|
+
hasMore: zod.z.boolean().optional(),
|
|
5347
|
+
nextOffset: zod.z.number().int().nonnegative().optional()
|
|
5348
|
+
});
|
|
5349
|
+
var mcpTrueoSearchMarketsInputSchema = zod.z.object({
|
|
5350
|
+
query: zod.z.string().optional().describe("Search haystack: question, rules, categories, address"),
|
|
5351
|
+
category: zod.z.string().optional().describe("Category name from fetch_categories, e.g. Politics"),
|
|
5352
|
+
limit: zod.z.number().int().positive().optional(),
|
|
5353
|
+
offset: zod.z.number().int().nonnegative().optional(),
|
|
5354
|
+
includeAll: agentOptionalBooleanSchema().describe(
|
|
5355
|
+
"If true, include older closed/resolved markets. Default: live and recently finished (14 days)."
|
|
5356
|
+
),
|
|
5357
|
+
excludeAddresses: zod.z.array(zod.z.string()).optional().describe("Skip these market addresses (after trending, pass the listed addresses).")
|
|
5358
|
+
});
|
|
5359
|
+
var mcpTrueoSearchMarketsOutputSchema = mcpTrueoFetchTrendingOutputSchema;
|
|
5360
|
+
var mcpTrueoFetchMarketInputSchema = zod.z.object({
|
|
5361
|
+
marketAddress: evmAddressSchema.describe("Trueo market address")
|
|
5362
|
+
});
|
|
5363
|
+
var mcpTrueoFetchMarketOutputSchema = mcpTrueoMarketRowSchema;
|
|
5364
|
+
var mcpTrueoFetchChanceSeriesInputSchema = zod.z.object({
|
|
5365
|
+
poolId: zod.z.string().min(1).describe("Yes or No pool id from fetch_market"),
|
|
5366
|
+
from: zod.z.number().optional(),
|
|
5367
|
+
to: zod.z.number().optional(),
|
|
5368
|
+
resolution: zod.z.string().optional().describe("Sample step in seconds (3600 = hourly). 1H/1D/1W/All coerce to hourly \u2014 Trueo rejects calendar 1D/1W."),
|
|
5369
|
+
lookbackDays: zod.z.number().optional()
|
|
5370
|
+
});
|
|
5371
|
+
var mcpTrueoFetchChanceSeriesOutputSchema = zod.z.object({
|
|
5372
|
+
poolId: zod.z.string(),
|
|
5373
|
+
bars: zod.z.array(
|
|
5374
|
+
zod.z.object({
|
|
5375
|
+
timestamp: zod.z.number(),
|
|
5376
|
+
open: zod.z.number(),
|
|
5377
|
+
high: zod.z.number(),
|
|
5378
|
+
low: zod.z.number(),
|
|
5379
|
+
close: zod.z.number()
|
|
5380
|
+
})
|
|
5381
|
+
),
|
|
5382
|
+
from: zod.z.number(),
|
|
5383
|
+
to: zod.z.number(),
|
|
5384
|
+
resolution: zod.z.string(),
|
|
5385
|
+
notes: zod.z.string().optional()
|
|
5386
|
+
});
|
|
5387
|
+
var mcpTrueoFetchOrderbookInputSchema = zod.z.object({
|
|
5388
|
+
marketAddress: evmAddressSchema,
|
|
5389
|
+
side: zod.z.enum(["yes", "no"]).optional(),
|
|
5390
|
+
rpcUrl: zod.z.string().min(1).optional().describe("Server-filled from chain registry. Agents should omit.")
|
|
5391
|
+
});
|
|
5392
|
+
var mcpTrueoFetchOrderbookOutputSchema = zod.z.object({
|
|
5393
|
+
marketAddress: zod.z.string(),
|
|
5394
|
+
side: zod.z.enum(["yes", "no"]),
|
|
5395
|
+
poolId: zod.z.string(),
|
|
5396
|
+
currentTick: zod.z.number().nullable(),
|
|
5397
|
+
impliedPrice: zod.z.number().nullable(),
|
|
5398
|
+
impliedPriceLabel: zod.z.string().nullable(),
|
|
5399
|
+
levels: zod.z.array(zod.z.record(zod.z.unknown())),
|
|
5400
|
+
recentTrades: zod.z.array(zod.z.record(zod.z.unknown())),
|
|
5401
|
+
notes: zod.z.string()
|
|
5402
|
+
});
|
|
5403
|
+
var mcpSearchPredictionMarketsInputSchema = zod.z.object({
|
|
5404
|
+
query: zod.z.string().optional().describe(
|
|
5405
|
+
"Pass the operator topic verbatim (case-insensitive title substring). Do not substitute a category name. Empty lists trending."
|
|
5406
|
+
),
|
|
5407
|
+
category: zod.z.string().optional().describe("Venue category, e.g. Politics"),
|
|
5408
|
+
venues: zod.z.array(zod.z.string()).optional().describe("Optional venue filter. v1: trueo"),
|
|
5409
|
+
trending: agentOptionalBooleanSchema().describe(
|
|
5410
|
+
"Trending board only when query and category are empty. Ignored when query is set."
|
|
5411
|
+
),
|
|
5412
|
+
includeAll: agentOptionalBooleanSchema().describe(
|
|
5413
|
+
"If true, include older closed/resolved markets. Default: live and recently finished (14 days)."
|
|
5414
|
+
),
|
|
5415
|
+
limit: zod.z.number().int().positive().optional().describe("Page size. Default 10 (trending API max)."),
|
|
5416
|
+
offset: zod.z.number().int().nonnegative().optional().describe("Search offset for the next page. Trending is page 1 only."),
|
|
5417
|
+
indexBase: zod.z.number().int().nonnegative().optional().describe("Start #N at indexBase+1 so pages continue 11, 12, \u2026"),
|
|
5418
|
+
excludeAddresses: zod.z.array(zod.z.string()).optional().describe("Skip these venueMarketIds (after trending, pass the listed ids).")
|
|
5419
|
+
});
|
|
5420
|
+
var mcpPredictionMarketRowSchema = zod.z.object({
|
|
5421
|
+
venue: zod.z.string(),
|
|
5422
|
+
venueMarketId: zod.z.string(),
|
|
5423
|
+
question: zod.z.string(),
|
|
5424
|
+
categories: zod.z.array(zod.z.string()),
|
|
5425
|
+
yesPrice: zod.z.number().nullable(),
|
|
5426
|
+
noPrice: zod.z.number().nullable(),
|
|
5427
|
+
yesPriceLabel: zod.z.string().nullable(),
|
|
5428
|
+
noPriceLabel: zod.z.string().nullable(),
|
|
5429
|
+
volume: zod.z.string(),
|
|
5430
|
+
tvl: zod.z.number().nullable(),
|
|
5431
|
+
expiresAt: zod.z.string().nullable(),
|
|
5432
|
+
expiresAtLabel: zod.z.string().nullable(),
|
|
5433
|
+
tradingEndsLabel: zod.z.string().optional(),
|
|
5434
|
+
endOfTrading: zod.z.number().optional(),
|
|
5435
|
+
status: zod.z.string(),
|
|
5436
|
+
outcome: zod.z.number().optional(),
|
|
5437
|
+
statusUpdatedAt: zod.z.string().nullable().optional(),
|
|
5438
|
+
resolutionLabel: zod.z.string().nullable().optional(),
|
|
5439
|
+
chainId: zod.z.number(),
|
|
5440
|
+
paymentSymbol: zod.z.string(),
|
|
5441
|
+
tradable: zod.z.boolean(),
|
|
5442
|
+
index: zod.z.number().int().positive().optional(),
|
|
5443
|
+
rules: zod.z.string().optional(),
|
|
5444
|
+
source: zod.z.string().optional(),
|
|
5445
|
+
imageUrl: zod.z.string().nullable().optional(),
|
|
5446
|
+
ohlc: zod.z.array(
|
|
5447
|
+
zod.z.object({
|
|
5448
|
+
timestamp: zod.z.number(),
|
|
5449
|
+
open: zod.z.number(),
|
|
5450
|
+
high: zod.z.number(),
|
|
5451
|
+
low: zod.z.number(),
|
|
5452
|
+
close: zod.z.number()
|
|
5453
|
+
})
|
|
5454
|
+
).optional().describe("Hourly Yes-chance samples for the Mini App graph (get_prediction_market).")
|
|
5455
|
+
});
|
|
5456
|
+
var mcpSearchPredictionMarketsOutputSchema = zod.z.object({
|
|
5457
|
+
markets: zod.z.array(mcpPredictionMarketRowSchema),
|
|
5458
|
+
notes: zod.z.string(),
|
|
5459
|
+
hasMore: zod.z.boolean().optional(),
|
|
5460
|
+
nextOffset: zod.z.number().int().nonnegative().optional(),
|
|
5461
|
+
nextIndexBase: zod.z.number().int().nonnegative().optional(),
|
|
5462
|
+
includeAll: zod.z.boolean().optional()
|
|
5463
|
+
});
|
|
5464
|
+
var mcpListMyPredictionMarketsInputSchema = zod.z.object({
|
|
5465
|
+
tokenAddresses: zod.z.array(zod.z.string()).optional().describe("YES/NO token addresses from get_token_registry (or added after a bet)."),
|
|
5466
|
+
marketAddresses: zod.z.array(zod.z.string()).optional().describe("Trueo market addresses from prior bets.")
|
|
5467
|
+
});
|
|
5468
|
+
var mcpListMyPredictionMarketsOutputSchema = mcpSearchPredictionMarketsOutputSchema;
|
|
5469
|
+
var mcpGetPredictionMarketInputSchema = zod.z.object({
|
|
5470
|
+
venue: zod.z.string().optional().describe("Default trueo"),
|
|
5471
|
+
venueMarketId: zod.z.string().min(1).describe("Venue id (Trueo: market address)")
|
|
5472
|
+
});
|
|
5473
|
+
var mcpGetPredictionMarketOutputSchema = mcpPredictionMarketRowSchema.passthrough();
|
|
5474
|
+
var mcpTrueoWrapTydInputSchema = mcpMultisignInput({
|
|
5475
|
+
amountHuman: zod.z.string().min(1).describe("USDC amount to deposit into the TYD vault")
|
|
5476
|
+
});
|
|
5477
|
+
var mcpTrueoUnwrapTydInputSchema = mcpMultisignInput({
|
|
5478
|
+
amountHuman: zod.z.string().min(1).describe("TYD share amount to redeem for USDC")
|
|
5479
|
+
});
|
|
5480
|
+
var mcpTrueoMintInputSchema = mcpMultisignInput({
|
|
5481
|
+
marketAddress: evmAddressSchema,
|
|
5482
|
+
amountHuman: zod.z.string().min(1).describe("TYD (or USDC when paymentKind=usdc) amount"),
|
|
5483
|
+
paymentKind: zod.z.enum(["tyd", "usdc"]).optional()
|
|
5484
|
+
});
|
|
5485
|
+
var mcpTrueoBurnInputSchema = mcpTrueoMintInputSchema;
|
|
5486
|
+
var mcpTrueoRedeemInputSchema = mcpTrueoMintInputSchema;
|
|
5487
|
+
var mcpTrueoSwapInputSchema = mcpMultisignInput({
|
|
5488
|
+
marketAddress: evmAddressSchema,
|
|
5489
|
+
side: zod.z.enum(["yes", "no"]),
|
|
5490
|
+
amountHuman: zod.z.string().min(1).describe("TYD amount in"),
|
|
5491
|
+
amountOutMinimumHuman: zod.z.string().optional()
|
|
5492
|
+
});
|
|
5493
|
+
var mcpTrueoCreateOrderInputSchema = mcpMultisignInput({
|
|
5494
|
+
marketAddress: evmAddressSchema,
|
|
5495
|
+
side: zod.z.enum(["yes", "no"]),
|
|
5496
|
+
amountHuman: zod.z.string().min(1),
|
|
5497
|
+
tickLower: zod.z.number().int(),
|
|
5498
|
+
tickUpper: zod.z.number().int(),
|
|
5499
|
+
enablePartialFill: agentOptionalBooleanSchema()
|
|
5500
|
+
});
|
|
5501
|
+
var mcpTrueoCancelOrderInputSchema = mcpMultisignInput({
|
|
5502
|
+
marketAddress: evmAddressSchema,
|
|
5503
|
+
side: zod.z.enum(["yes", "no"]),
|
|
5504
|
+
orderId: zod.z.number().int().nonnegative()
|
|
5505
|
+
});
|
|
5506
|
+
function mcpDeriveMultisignInput(fields) {
|
|
5507
|
+
return withMultisignKeySourceRefine(evmMultisignCommonInputSchema.extend(fields));
|
|
5508
|
+
}
|
|
5509
|
+
var deriveAuthSchema = zod.z.object({
|
|
5510
|
+
wallet: zod.z.string().min(1),
|
|
5511
|
+
timestamp: zod.z.string().min(1),
|
|
5512
|
+
signature: zod.z.string().min(1)
|
|
5513
|
+
}).optional().describe("Server-filled EIP-191 login (X-DeriveWallet / Timestamp / Signature). Agents must not pass auth.");
|
|
5514
|
+
var deriveNetworkSchema = zod.z.enum(["mainnet", "testnet"]).optional();
|
|
5515
|
+
var deriveFetchBaseSchema = zod.z.object({
|
|
5516
|
+
chainId: zod.z.coerce.number().int().positive().optional().describe("Asset-row chain (dialog context). Trading is always Derive API."),
|
|
5517
|
+
network: deriveNetworkSchema
|
|
5518
|
+
});
|
|
5519
|
+
var deriveWalletSchema = deriveFetchBaseSchema.extend({
|
|
5520
|
+
wallet: evmAddressSchema.optional(),
|
|
5521
|
+
executorAddress: evmAddressSchema.optional().describe("MPC executor \u2014 same address is the Derive owner on every chain."),
|
|
5522
|
+
auth: deriveAuthSchema
|
|
5523
|
+
});
|
|
5524
|
+
var deriveOhlcvIntervalSchema = zod.z.enum(["1m", "5m", "15m", "30m", "1h", "4h", "1d", "1w"]);
|
|
5525
|
+
var deriveOhlcvCandleSchema = zod.z.object({
|
|
5526
|
+
timestampMs: zod.z.number(),
|
|
5527
|
+
open: zod.z.string(),
|
|
5528
|
+
high: zod.z.string(),
|
|
5529
|
+
low: zod.z.string(),
|
|
5530
|
+
close: zod.z.string(),
|
|
5531
|
+
volume: zod.z.string()
|
|
5532
|
+
});
|
|
5533
|
+
var mcpDeriveFetchCurrenciesInputSchema = deriveFetchBaseSchema;
|
|
5534
|
+
var mcpDeriveFetchCurrenciesOutputSchema = zod.z.object({
|
|
5535
|
+
currencies: zod.z.array(zod.z.object({ currency: zod.z.string() })),
|
|
5536
|
+
network: zod.z.string().optional()
|
|
5537
|
+
});
|
|
5538
|
+
var mcpDeriveFetchOptionChainInputSchema = deriveFetchBaseSchema.extend({
|
|
5539
|
+
currency: zod.z.string().min(1).describe("Underlying currency e.g. ETH"),
|
|
5540
|
+
expired: zod.z.boolean().optional()
|
|
5541
|
+
});
|
|
5542
|
+
var mcpDeriveFetchOptionChainOutputSchema = zod.z.object({
|
|
5543
|
+
currency: zod.z.string(),
|
|
5544
|
+
instrumentCount: zod.z.number(),
|
|
5545
|
+
callCount: zod.z.number(),
|
|
5546
|
+
putCount: zod.z.number(),
|
|
5547
|
+
expiries: zod.z.array(
|
|
5548
|
+
zod.z.object({
|
|
5549
|
+
expiryYmd: zod.z.string(),
|
|
5550
|
+
expiryUnix: zod.z.number().nullable(),
|
|
5551
|
+
callCount: zod.z.number(),
|
|
5552
|
+
putCount: zod.z.number(),
|
|
5553
|
+
minStrike: zod.z.string().nullable(),
|
|
5554
|
+
maxStrike: zod.z.string().nullable()
|
|
5555
|
+
})
|
|
5556
|
+
),
|
|
5557
|
+
notes: zod.z.string(),
|
|
5558
|
+
network: zod.z.string().optional()
|
|
5559
|
+
});
|
|
5560
|
+
var mcpDeriveFetchTickersInputSchema = deriveFetchBaseSchema.extend({
|
|
5561
|
+
currency: zod.z.string().min(1).describe("Underlying e.g. ETH"),
|
|
5562
|
+
expiryDate: zod.z.union([zod.z.string().min(1), zod.z.number().int().positive()]).describe("YYYYMMDD from fetch_option_chain. String or number (20260925). 2026-09-25 is ok."),
|
|
5563
|
+
optionType: zod.z.enum(["C", "P"]).optional().describe("Calls only or puts only. Omit for both."),
|
|
5564
|
+
ladder: zod.z.enum(["atm", "all"]).optional().describe("Default atm (~9 strikes around index). Use all only when the operator wants every strike.")
|
|
5565
|
+
});
|
|
5566
|
+
var mcpDeriveFetchTickersOutputSchema = zod.z.object({
|
|
5567
|
+
currency: zod.z.string(),
|
|
5568
|
+
expiryDate: zod.z.string(),
|
|
5569
|
+
optionType: zod.z.enum(["C", "P"]).nullable().optional(),
|
|
5570
|
+
ladder: zod.z.enum(["atm", "all"]).optional(),
|
|
5571
|
+
indexPx: zod.z.string().nullable().optional(),
|
|
5572
|
+
listedCount: zod.z.number().optional(),
|
|
5573
|
+
tickerCount: zod.z.number().optional(),
|
|
5574
|
+
callCount: zod.z.number().optional(),
|
|
5575
|
+
putCount: zod.z.number().optional(),
|
|
5576
|
+
tickers: zod.z.array(
|
|
5577
|
+
zod.z.object({
|
|
5578
|
+
instrumentName: zod.z.string(),
|
|
5579
|
+
bidPx: zod.z.string().nullable(),
|
|
5580
|
+
askPx: zod.z.string().nullable(),
|
|
5581
|
+
markPx: zod.z.string().nullable(),
|
|
5582
|
+
indexPx: zod.z.string().nullable(),
|
|
5583
|
+
strike: zod.z.string().nullable(),
|
|
5584
|
+
expiry: zod.z.number().nullable(),
|
|
5585
|
+
expiryYmd: zod.z.string().nullable(),
|
|
5586
|
+
optionType: zod.z.enum(["C", "P"]).nullable(),
|
|
5587
|
+
greeks: zod.z.unknown().nullable()
|
|
5588
|
+
})
|
|
5589
|
+
),
|
|
5590
|
+
notes: zod.z.string().optional(),
|
|
5591
|
+
network: zod.z.string().optional()
|
|
5592
|
+
});
|
|
5593
|
+
var mcpDeriveSearchInstrumentsInputSchema = deriveFetchBaseSchema.extend({
|
|
5594
|
+
currency: zod.z.string().min(1),
|
|
5595
|
+
query: zod.z.string().min(1).describe("Instrument name fragment e.g. 3000-C or 20260626"),
|
|
5596
|
+
limit: zod.z.coerce.number().int().positive().max(50).optional()
|
|
5597
|
+
});
|
|
5598
|
+
var mcpDeriveSearchInstrumentsOutputSchema = zod.z.object({
|
|
5599
|
+
instruments: zod.z.array(zod.z.object({ instrumentName: zod.z.string() })),
|
|
5600
|
+
network: zod.z.string().optional()
|
|
5601
|
+
});
|
|
5602
|
+
var mcpDeriveFetchMarketSnapshotInputSchema = deriveFetchBaseSchema.extend({
|
|
5603
|
+
instrumentName: zod.z.string().min(1).describe("e.g. ETH-20260626-3000-C")
|
|
5604
|
+
});
|
|
5605
|
+
var mcpDeriveFetchMarketSnapshotOutputSchema = zod.z.object({
|
|
5606
|
+
snapshot: zod.z.object({
|
|
5607
|
+
instrumentName: zod.z.string(),
|
|
5608
|
+
livePrice: zod.z.object({
|
|
5609
|
+
markPx: zod.z.string().nullable(),
|
|
5610
|
+
indexPx: zod.z.string().nullable(),
|
|
5611
|
+
bidPx: zod.z.string().nullable(),
|
|
5612
|
+
askPx: zod.z.string().nullable(),
|
|
5613
|
+
midUsd: zod.z.string(),
|
|
5614
|
+
source: zod.z.string()
|
|
5615
|
+
}),
|
|
5616
|
+
greeks: zod.z.unknown().nullable(),
|
|
5617
|
+
fetchedAtMs: zod.z.number()
|
|
5618
|
+
}),
|
|
5619
|
+
network: zod.z.string().optional()
|
|
5620
|
+
});
|
|
5621
|
+
var mcpDeriveFetchOhlcvInputSchema = deriveFetchBaseSchema.extend({
|
|
5622
|
+
instrumentName: zod.z.string().optional().describe("Required for option candles"),
|
|
5623
|
+
currency: zod.z.string().optional().describe("Required for index candles (underlying spot)"),
|
|
5624
|
+
marketKind: zod.z.enum(["option", "index"]).optional(),
|
|
5625
|
+
interval: deriveOhlcvIntervalSchema.optional(),
|
|
5626
|
+
lookbackDays: zod.z.coerce.number().positive().optional(),
|
|
5627
|
+
lookbackHours: zod.z.coerce.number().positive().optional(),
|
|
5628
|
+
startTimeMs: zod.z.coerce.number().int().positive().optional(),
|
|
5629
|
+
endTimeMs: zod.z.coerce.number().int().positive().optional()
|
|
5630
|
+
});
|
|
5631
|
+
var mcpDeriveFetchOhlcvOutputSchema = zod.z.object({
|
|
5632
|
+
ohlcv: zod.z.object({
|
|
5633
|
+
market: zod.z.string(),
|
|
5634
|
+
coin: zod.z.string(),
|
|
5635
|
+
interval: zod.z.string(),
|
|
5636
|
+
marketKind: zod.z.enum(["option", "index"]),
|
|
5637
|
+
startTimeMs: zod.z.number(),
|
|
5638
|
+
endTimeMs: zod.z.number(),
|
|
5639
|
+
expectedBars: zod.z.number(),
|
|
5640
|
+
candleCount: zod.z.number(),
|
|
5641
|
+
latestCandle: deriveOhlcvCandleSchema.nullable(),
|
|
5642
|
+
candles: zod.z.array(deriveOhlcvCandleSchema),
|
|
5643
|
+
fetchedAtMs: zod.z.number(),
|
|
5644
|
+
dataSource: zod.z.literal("derive")
|
|
5645
|
+
}),
|
|
5646
|
+
dataSource: zod.z.literal("derive"),
|
|
5647
|
+
network: zod.z.string().optional()
|
|
5648
|
+
});
|
|
5649
|
+
var mcpDeriveOrderQuoteInputSchema = deriveFetchBaseSchema.extend({
|
|
5650
|
+
instrumentName: zod.z.string().min(1),
|
|
5651
|
+
direction: zod.z.enum(["buy", "sell"]),
|
|
5652
|
+
amount: zod.z.string().min(1),
|
|
5653
|
+
limitPrice: zod.z.string().min(1),
|
|
5654
|
+
subaccountId: agentCoercedIntSchema(zod.z.number().int().positive()).optional().describe("Required by v3 public/order_quote. From ctm_derive_fetch_subaccounts. Never 0.")
|
|
5655
|
+
});
|
|
5656
|
+
var mcpDeriveOrderQuoteOutputSchema = zod.z.object({
|
|
5657
|
+
quote: jsonObjectSchema,
|
|
5658
|
+
instrumentName: zod.z.string(),
|
|
5659
|
+
network: zod.z.string().optional()
|
|
5660
|
+
});
|
|
5661
|
+
var mcpDeriveFetchRiskUniversesInputSchema = deriveFetchBaseSchema;
|
|
5662
|
+
var mcpDeriveFetchRiskUniversesOutputSchema = zod.z.object({
|
|
5663
|
+
universes: zod.z.array(zod.z.unknown()),
|
|
5664
|
+
notes: zod.z.string(),
|
|
5665
|
+
network: zod.z.string().optional()
|
|
5666
|
+
});
|
|
5667
|
+
var mcpDeriveFetchPendingDepositsInputSchema = deriveWalletSchema;
|
|
5668
|
+
var mcpDeriveFetchPendingDepositsOutputSchema = zod.z.object({
|
|
5669
|
+
pending: zod.z.array(zod.z.unknown()),
|
|
5670
|
+
credited: zod.z.boolean(),
|
|
5671
|
+
notes: zod.z.string(),
|
|
5672
|
+
network: zod.z.string().optional()
|
|
5673
|
+
});
|
|
5674
|
+
var mcpDeriveFetchSubaccountsInputSchema = deriveWalletSchema;
|
|
5675
|
+
var mcpDeriveFetchSubaccountsOutputSchema = zod.z.object({
|
|
5676
|
+
wallet: zod.z.string(),
|
|
5677
|
+
subaccounts: zod.z.array(zod.z.number()),
|
|
5678
|
+
funded: zod.z.boolean(),
|
|
5679
|
+
notes: zod.z.string(),
|
|
5680
|
+
next: zod.z.array(zod.z.string()),
|
|
5681
|
+
network: zod.z.string().optional()
|
|
5682
|
+
});
|
|
5683
|
+
var deriveSubaccountInput = deriveWalletSchema.extend({
|
|
5684
|
+
subaccountId: agentCoercedIntSchema(zod.z.number().int().positive()).describe(
|
|
5685
|
+
"subaccountId from ctm_derive_fetch_subaccounts. Never 0. If that list is empty, deposit on Ethereum L1 first."
|
|
5686
|
+
)
|
|
5687
|
+
});
|
|
5688
|
+
var mcpDeriveFetchPortfolioInputSchema = deriveSubaccountInput;
|
|
5689
|
+
var mcpDeriveFetchPortfolioOutputSchema = zod.z.object({
|
|
5690
|
+
portfolio: zod.z.unknown(),
|
|
5691
|
+
subaccountId: zod.z.number(),
|
|
5692
|
+
wallet: zod.z.string(),
|
|
5693
|
+
network: zod.z.string().optional()
|
|
5694
|
+
});
|
|
5695
|
+
var mcpDeriveFetchPositionsInputSchema = deriveSubaccountInput;
|
|
5696
|
+
var mcpDeriveFetchPositionsOutputSchema = zod.z.object({
|
|
5697
|
+
positions: zod.z.array(zod.z.unknown()),
|
|
5698
|
+
subaccountId: zod.z.number(),
|
|
5699
|
+
wallet: zod.z.string(),
|
|
5700
|
+
network: zod.z.string().optional()
|
|
5701
|
+
});
|
|
5702
|
+
var mcpDeriveFetchOpenOrdersInputSchema = deriveSubaccountInput;
|
|
5703
|
+
var mcpDeriveFetchOpenOrdersOutputSchema = zod.z.object({
|
|
5704
|
+
orders: zod.z.array(zod.z.unknown()),
|
|
5705
|
+
subaccountId: zod.z.number(),
|
|
5706
|
+
wallet: zod.z.string(),
|
|
5707
|
+
network: zod.z.string().optional()
|
|
5708
|
+
});
|
|
5709
|
+
var deriveSubaccountIdField = agentCoercedIntSchema(zod.z.number().int().positive()).describe(
|
|
5710
|
+
"subaccountId from ctm_derive_fetch_subaccounts. Collateral lives on Ethereum L1; EIP-712 orders do not move the current-chain token. If none exist, deposit first."
|
|
5711
|
+
);
|
|
5712
|
+
var mcpDeriveDepositNewSubaccountInputSchema = mcpDeriveMultisignInput({
|
|
5713
|
+
protocolAsset: evmAddressSchema.describe("collaterals[].address from ctm_derive_fetch_risk_universes"),
|
|
5714
|
+
underlyingErc20: evmAddressSchema.describe("collaterals[].erc20.underlying_erc20 on Ethereum L1 (usually USDC)"),
|
|
5715
|
+
amountHuman: zod.z.string().min(1).describe("Deposit amount in underlying token units"),
|
|
5716
|
+
managerId: agentCoercedIntSchema(zod.z.number().int().positive()).describe("Risk-universe manager_id"),
|
|
5717
|
+
actionManager: evmAddressSchema.optional().describe("Override ACTION_MANAGER (required on mainnet until published)")
|
|
5718
|
+
});
|
|
5719
|
+
var mcpDeriveRegisterDepositAddressInputSchema = deriveFetchBaseSchema.extend({
|
|
5720
|
+
wallet: evmAddressSchema,
|
|
5721
|
+
managerId: agentCoercedIntSchema(zod.z.number().int().positive()).optional(),
|
|
5722
|
+
subaccountId: agentCoercedIntSchema(zod.z.number().int().nonnegative()).optional()
|
|
5723
|
+
});
|
|
5724
|
+
var mcpDeriveRegisterDepositAddressOutputSchema = zod.z.object({
|
|
5725
|
+
depositAddress: evmAddressSchema,
|
|
5726
|
+
wallet: evmAddressSchema,
|
|
5727
|
+
managerId: zod.z.number().int().nullable(),
|
|
5728
|
+
subaccountId: zod.z.number().int().nullable(),
|
|
5729
|
+
network: zod.z.string(),
|
|
5730
|
+
notes: zod.z.string()
|
|
5731
|
+
});
|
|
5732
|
+
var mcpDeriveDepositAddressTransferInputSchema = mcpDeriveMultisignInput({
|
|
5733
|
+
underlyingErc20: evmAddressSchema.describe("Ethereum L1 token to send (usually USDC)"),
|
|
5734
|
+
amountHuman: zod.z.string().min(1),
|
|
5735
|
+
depositAddress: evmAddressSchema.describe("From ctm_derive_register_deposit_address")
|
|
5736
|
+
});
|
|
5737
|
+
var mcpDeriveSocketDepositInputSchema = mcpDeriveMultisignInput({
|
|
5738
|
+
token: evmAddressSchema.describe("USDC / WETH / WBTC on this chain, or native 0x0 to wrap WETH"),
|
|
5739
|
+
amountHuman: zod.z.string().min(1),
|
|
5740
|
+
receiver: evmAddressSchema.optional().describe("Derive Chain receiver; defaults to executor")
|
|
5741
|
+
});
|
|
5742
|
+
var mcpDeriveHypeVaultDepositInputSchema = mcpDeriveMultisignInput({
|
|
5743
|
+
amountHuman: zod.z.string().min(1).describe("HYPE amount"),
|
|
5744
|
+
token: evmAddressSchema.optional().describe("Native 0x0 or WHYPE 0x555\u20265"),
|
|
5745
|
+
vault: evmAddressSchema.optional()
|
|
5746
|
+
});
|
|
5747
|
+
var mcpDerivePlaceOrderInputSchema = mcpDeriveMultisignInput({
|
|
5748
|
+
instrumentName: zod.z.string().min(1).describe("e.g. ETH-20260626-3000-C"),
|
|
5749
|
+
direction: zod.z.enum(["buy", "sell"]),
|
|
5750
|
+
amount: zod.z.string().min(1),
|
|
5751
|
+
limitPrice: zod.z.string().min(1),
|
|
5752
|
+
maxFee: zod.z.string().min(1),
|
|
5753
|
+
subaccountId: deriveSubaccountIdField,
|
|
5754
|
+
orderType: zod.z.enum(["limit", "market"]).optional(),
|
|
5755
|
+
timeInForce: zod.z.enum(["gtc", "ioc", "fok", "post_only"]).optional(),
|
|
5756
|
+
reduceOnly: zod.z.boolean().optional(),
|
|
5757
|
+
label: zod.z.string().optional(),
|
|
5758
|
+
ticketKind: zod.z.enum(["limit", "stop_limit", "twap"]).optional(),
|
|
5759
|
+
triggerPrice: zod.z.string().optional().describe("Required for stop_limit"),
|
|
5760
|
+
triggerType: zod.z.enum(["stoploss", "takeprofit"]).optional(),
|
|
5761
|
+
triggerPriceType: zod.z.enum(["mark", "index"]).optional(),
|
|
5762
|
+
algoDurationSec: agentCoercedIntSchema(zod.z.number().int().min(60)).optional().describe("Required for twap"),
|
|
5763
|
+
algoNumSlices: agentCoercedIntSchema(zod.z.number().int().min(2)).optional().describe("Required for twap")
|
|
5764
|
+
});
|
|
5765
|
+
var mcpDeriveReplaceOrderInputSchema = mcpDeriveMultisignInput({
|
|
5766
|
+
instrumentName: zod.z.string().min(1),
|
|
5767
|
+
direction: zod.z.enum(["buy", "sell"]),
|
|
5768
|
+
amount: zod.z.string().min(1),
|
|
5769
|
+
limitPrice: zod.z.string().min(1),
|
|
5770
|
+
maxFee: zod.z.string().min(1),
|
|
5771
|
+
subaccountId: deriveSubaccountIdField,
|
|
5772
|
+
orderType: zod.z.enum(["limit", "market"]).optional(),
|
|
5773
|
+
timeInForce: zod.z.enum(["gtc", "ioc", "fok", "post_only"]).optional(),
|
|
5774
|
+
reduceOnly: zod.z.boolean().optional(),
|
|
5775
|
+
label: zod.z.string().optional(),
|
|
5776
|
+
ticketKind: zod.z.enum(["limit", "stop_limit", "twap"]).optional(),
|
|
5777
|
+
triggerPrice: zod.z.string().optional(),
|
|
5778
|
+
triggerType: zod.z.enum(["stoploss", "takeprofit"]).optional(),
|
|
5779
|
+
triggerPriceType: zod.z.enum(["mark", "index"]).optional(),
|
|
5780
|
+
algoDurationSec: agentCoercedIntSchema(zod.z.number().int().min(60)).optional(),
|
|
5781
|
+
algoNumSlices: agentCoercedIntSchema(zod.z.number().int().min(2)).optional(),
|
|
5782
|
+
orderIdToCancel: zod.z.string().min(1).optional(),
|
|
5783
|
+
nonceToCancel: zod.z.string().min(1).optional()
|
|
5784
|
+
}).refine((d) => Boolean(d.orderIdToCancel) !== Boolean(d.nonceToCancel), {
|
|
5785
|
+
message: "Replace requires exactly one of orderIdToCancel or nonceToCancel."
|
|
5786
|
+
});
|
|
5787
|
+
var mcpDeriveCancelInputSchema = mcpDeriveMultisignInput({
|
|
5788
|
+
instrumentName: zod.z.string().min(1),
|
|
5789
|
+
orderId: zod.z.string().min(1).describe("order_id from ctm_derive_fetch_open_orders"),
|
|
5790
|
+
subaccountId: deriveSubaccountIdField
|
|
5791
|
+
});
|
|
5792
|
+
var mcpDeriveTransferSpotInputSchema = mcpDeriveMultisignInput({
|
|
5793
|
+
fromSubaccountId: deriveSubaccountIdField,
|
|
5794
|
+
toSubaccountId: agentCoercedIntSchema(zod.z.number().int().nonnegative()).describe(
|
|
5795
|
+
"Existing destination, or 0 to create an extra subaccount (requires newSubaccountManager)."
|
|
5796
|
+
),
|
|
5797
|
+
newSubaccountManager: agentCoercedIntSchema(zod.z.number().int().nonnegative()).describe(
|
|
5798
|
+
"Required when toSubaccountId is 0. Extra subaccounts only \u2014 first account is L1 deposit."
|
|
5799
|
+
),
|
|
5800
|
+
asset: evmAddressSchema.describe("Protocol asset address"),
|
|
5801
|
+
amount: zod.z.string().min(1),
|
|
5802
|
+
maxFeeUsd: zod.z.string().optional(),
|
|
5803
|
+
subId: agentCoercedIntSchema(zod.z.number().int().nonnegative()).optional()
|
|
5804
|
+
});
|
|
5193
5805
|
var mcpCctpFeeFieldsSchema = zod.z.object({
|
|
5194
5806
|
feeTierUsed: zod.z.enum(["low", "med", "high"]),
|
|
5195
5807
|
maxFee: zod.z.string().describe("Selected tier max fee in USDC base units (6 decimals)"),
|
|
@@ -5900,11 +6512,21 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
5900
6512
|
actionId: "hyperliquid.limitOrder",
|
|
5901
6513
|
protocolId: "hyperliquid",
|
|
5902
6514
|
chainCategory: "evm",
|
|
5903
|
-
description: "Create and submit mpc-auth multiSignRequest for a Hyperliquid limit/IoC order. Plain limit: CoreWriter (useCustomGas). When takeProfitTriggerPxHuman and/or
|
|
6515
|
+
description: "Create and submit mpc-auth multiSignRequest for a Hyperliquid limit/IoC order. Plain limit: CoreWriter (useCustomGas). When takeProfitTriggerPxHuman, stopLossTriggerPxHuman, and/or trailingOffsetHuman are set: L1 EIP-712 to /exchange (normalTpsl for TP/SL; trailingStop is a second signed action) \u2014 no useCustomGas. Trailing cannot combine with a fixed SL. Perp only for trailing.",
|
|
5904
6516
|
prerequisites: ["keyGenId", "chainId 999 or 998", "coin", "limitPxHuman", "szHuman"],
|
|
5905
6517
|
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildEvmMultisignBodyHyperliquidLimitOrderBatch" },
|
|
5906
6518
|
inputZod: mcpHyperliquidLimitOrderInputSchema
|
|
5907
6519
|
}),
|
|
6520
|
+
defineProtocolMcpTool({
|
|
6521
|
+
name: "ctm_hyperliquid_build_trailing_stop_multisign",
|
|
6522
|
+
actionId: "hyperliquid.trailingStop",
|
|
6523
|
+
protocolId: "hyperliquid",
|
|
6524
|
+
chainCategory: "evm",
|
|
6525
|
+
description: "Create and submit mpc-auth multiSignRequest for a Hyperliquid perp trailing stop (EIP-712 L1 trailingStop action to /exchange \u2014 no useCustomGas). Retracement is a price distance or percentage; optional activation price delays tracking. Typically reduce-only to close a position. isBuy false closes a long / opens a short.",
|
|
6526
|
+
prerequisites: ["keyGenId", "chainId 999 or 998", "coin", "szHuman", "trailingOffsetHuman"],
|
|
6527
|
+
handler: { importPath: "protocols/evm/hyperliquid", exportName: "buildHyperliquidTrailingStopMultisign" },
|
|
6528
|
+
inputZod: mcpHyperliquidTrailingStopInputSchema
|
|
6529
|
+
}),
|
|
5908
6530
|
defineProtocolMcpTool({
|
|
5909
6531
|
name: "ctm_hyperliquid_build_close_multisign",
|
|
5910
6532
|
actionId: "hyperliquid.close",
|
|
@@ -6446,6 +7068,188 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
6446
7068
|
prerequisites: ["keyGenId", "chainId", "comet", "steps"],
|
|
6447
7069
|
handler: { importPath: "protocols/evm/compound-v3", exportName: "buildEvmMultisignBodyCompoundV3Bulker" },
|
|
6448
7070
|
inputZod: mcpCompoundV3BulkerInputSchema
|
|
7071
|
+
}),
|
|
7072
|
+
defineProtocolMcpTool({
|
|
7073
|
+
name: "ctm_derive_build_deposit_new_subaccount_multisign",
|
|
7074
|
+
actionId: "derive.depositNewSubaccount",
|
|
7075
|
+
protocolId: "derive",
|
|
7076
|
+
chainCategory: "evm",
|
|
7077
|
+
description: "Ethereum L1 only (chainId 1 / 11155111): approve the underlying ERC-20 to ACTION_MANAGER, then depositToNewSubaccount. First credit creates the trading + fallback (manager 0) subaccounts. Arb/OP/Base: ctm_derive_build_socket_deposit_multisign. HyperEVM HYPE: ctm_derive_build_hype_vault_deposit_multisign. useCustomGas.",
|
|
7078
|
+
prerequisites: [
|
|
7079
|
+
"chainId 1 or 11155111",
|
|
7080
|
+
"managerId + protocolAsset + underlyingErc20 from ctm_derive_fetch_risk_universes",
|
|
7081
|
+
"Ethereum L1 collateral (usually USDC)"
|
|
7082
|
+
],
|
|
7083
|
+
followUp: ["ctm_derive_fetch_pending_deposits", "ctm_derive_fetch_subaccounts"],
|
|
7084
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveDepositNewSubaccountMultisign" },
|
|
7085
|
+
inputZod: mcpDeriveDepositNewSubaccountInputSchema
|
|
7086
|
+
}),
|
|
7087
|
+
defineProtocolMcpTool({
|
|
7088
|
+
name: "ctm_derive_build_deposit_address_transfer_multisign",
|
|
7089
|
+
actionId: "derive.depositAddressTransfer",
|
|
7090
|
+
protocolId: "derive",
|
|
7091
|
+
chainCategory: "evm",
|
|
7092
|
+
description: "Ethereum L1 ERC-20 transfer to a registered Derive deposit address (standard / keeper sweep). Call ctm_derive_register_deposit_address first. useCustomGas.",
|
|
7093
|
+
prerequisites: ["chainId 1 or 11155111", "depositAddress from ctm_derive_register_deposit_address"],
|
|
7094
|
+
followUp: ["ctm_derive_fetch_pending_deposits", "ctm_derive_fetch_subaccounts"],
|
|
7095
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveDepositAddressTransferMultisign" },
|
|
7096
|
+
inputZod: mcpDeriveDepositAddressTransferInputSchema
|
|
7097
|
+
}),
|
|
7098
|
+
defineProtocolMcpTool({
|
|
7099
|
+
name: "ctm_derive_build_socket_deposit_multisign",
|
|
7100
|
+
actionId: "derive.socketDeposit",
|
|
7101
|
+
protocolId: "derive",
|
|
7102
|
+
chainCategory: "evm",
|
|
7103
|
+
description: "Socket FAST deposit of USDC/WETH/WBTC on Ethereum, Optimism, Base, or Arbitrum. Native 0x0 wraps to WETH. Pays a small native bridge fee. useCustomGas.",
|
|
7104
|
+
prerequisites: ["chainId 1 / 10 / 8453 / 42161", "token + amountHuman"],
|
|
7105
|
+
followUp: ["ctm_derive_fetch_pending_deposits", "ctm_derive_fetch_subaccounts"],
|
|
7106
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveSocketDepositMultisign" },
|
|
7107
|
+
inputZod: mcpDeriveSocketDepositInputSchema
|
|
7108
|
+
}),
|
|
7109
|
+
defineProtocolMcpTool({
|
|
7110
|
+
name: "ctm_derive_build_hype_vault_deposit_multisign",
|
|
7111
|
+
actionId: "derive.hypeVaultDeposit",
|
|
7112
|
+
protocolId: "derive",
|
|
7113
|
+
chainCategory: "evm",
|
|
7114
|
+
description: "HyperEVM (999) HYPE vault: wrap native HYPE to WHYPE if needed, approve, deposit. First credit creates a Standard Margin subaccount. useCustomGas.",
|
|
7115
|
+
prerequisites: ["chainId 999", "amountHuman"],
|
|
7116
|
+
followUp: ["ctm_derive_fetch_pending_deposits", "ctm_derive_fetch_subaccounts"],
|
|
7117
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveHypeVaultDepositMultisign" },
|
|
7118
|
+
inputZod: mcpDeriveHypeVaultDepositInputSchema
|
|
7119
|
+
}),
|
|
7120
|
+
defineProtocolMcpTool({
|
|
7121
|
+
name: "ctm_derive_build_place_order_multisign",
|
|
7122
|
+
actionId: "derive.placeOrder",
|
|
7123
|
+
protocolId: "derive",
|
|
7124
|
+
chainCategory: "evm",
|
|
7125
|
+
description: "EIP-712 Derive options order (delivery derive_exchange). Requires subaccountId from ctm_derive_fetch_subaccounts. Does not move the current-chain token unless that row funded the account. No useCustomGas.",
|
|
7126
|
+
prerequisites: [
|
|
7127
|
+
"subaccountId from ctm_derive_fetch_subaccounts",
|
|
7128
|
+
"funded Derive collateral (L1 / Socket / HYPE vault)",
|
|
7129
|
+
"instrumentName, direction, amount, limitPrice, maxFee"
|
|
7130
|
+
],
|
|
7131
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDerivePlaceOrderMultisign" },
|
|
7132
|
+
inputZod: mcpDerivePlaceOrderInputSchema
|
|
7133
|
+
}),
|
|
7134
|
+
defineProtocolMcpTool({
|
|
7135
|
+
name: "ctm_derive_build_replace_order_multisign",
|
|
7136
|
+
actionId: "derive.replaceOrder",
|
|
7137
|
+
protocolId: "derive",
|
|
7138
|
+
chainCategory: "evm",
|
|
7139
|
+
description: "EIP-712 replace of a Derive open order. Requires subaccountId from ctm_derive_fetch_subaccounts and exactly one of orderIdToCancel or nonceToCancel. EIP-712 orders do not move the current-chain token.",
|
|
7140
|
+
prerequisites: [
|
|
7141
|
+
"subaccountId from ctm_derive_fetch_subaccounts",
|
|
7142
|
+
"funded Derive collateral (L1 / Socket / HYPE vault)",
|
|
7143
|
+
"orderIdToCancel or nonceToCancel"
|
|
7144
|
+
],
|
|
7145
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveReplaceOrderMultisign" },
|
|
7146
|
+
inputZod: mcpDeriveReplaceOrderInputSchema
|
|
7147
|
+
}),
|
|
7148
|
+
defineProtocolMcpTool({
|
|
7149
|
+
name: "ctm_derive_build_cancel_multisign",
|
|
7150
|
+
actionId: "derive.cancel",
|
|
7151
|
+
protocolId: "derive",
|
|
7152
|
+
chainCategory: "evm",
|
|
7153
|
+
description: "Cancel a Derive open order (v3 private/cancel via EIP-191 login delivery). Requires subaccountId from ctm_derive_fetch_subaccounts. Does not move the current-chain token.",
|
|
7154
|
+
prerequisites: [
|
|
7155
|
+
"subaccountId from ctm_derive_fetch_subaccounts",
|
|
7156
|
+
"orderId from ctm_derive_fetch_open_orders"
|
|
7157
|
+
],
|
|
7158
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveCancelMultisign" },
|
|
7159
|
+
inputZod: mcpDeriveCancelInputSchema
|
|
7160
|
+
}),
|
|
7161
|
+
defineProtocolMcpTool({
|
|
7162
|
+
name: "ctm_derive_build_transfer_spot_multisign",
|
|
7163
|
+
actionId: "derive.transferSpot",
|
|
7164
|
+
protocolId: "derive",
|
|
7165
|
+
chainCategory: "evm",
|
|
7166
|
+
description: "EIP-712 transfer_spot. Use toSubaccountId 0 + newSubaccountManager to create an extra subaccount after the first funded one. First account is a deposit (L1 / Socket / HYPE), not this tool.",
|
|
7167
|
+
prerequisites: [
|
|
7168
|
+
"fromSubaccountId from ctm_derive_fetch_subaccounts",
|
|
7169
|
+
"funded Derive collateral (L1 / Socket / HYPE vault)"
|
|
7170
|
+
],
|
|
7171
|
+
handler: { importPath: "protocols/evm/derive", exportName: "buildDeriveTransferSpotMultisign" },
|
|
7172
|
+
inputZod: mcpDeriveTransferSpotInputSchema
|
|
7173
|
+
}),
|
|
7174
|
+
defineProtocolMcpTool({
|
|
7175
|
+
name: "ctm_trueo_build_wrap_tyd_multisign",
|
|
7176
|
+
actionId: "trueo.wrap-tyd",
|
|
7177
|
+
protocolId: "trueo",
|
|
7178
|
+
chainCategory: "evm",
|
|
7179
|
+
description: "Mint TYD by depositing Base USDC into the Yearn ERC-4626 vault. Not a market bet. No marketAddress. 30-minute expiry.",
|
|
7180
|
+
prerequisites: ["keyGenId", "chainId 8453", "amountHuman (USDC)"],
|
|
7181
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoWrapTyd" },
|
|
7182
|
+
inputZod: mcpTrueoWrapTydInputSchema
|
|
7183
|
+
}),
|
|
7184
|
+
defineProtocolMcpTool({
|
|
7185
|
+
name: "ctm_trueo_build_unwrap_tyd_multisign",
|
|
7186
|
+
actionId: "trueo.unwrap-tyd",
|
|
7187
|
+
protocolId: "trueo",
|
|
7188
|
+
chainCategory: "evm",
|
|
7189
|
+
description: "Redeem TYD shares back to Base USDC via the Yearn ERC-4626 vault. Not a market bet. No marketAddress. 30-minute expiry.",
|
|
7190
|
+
prerequisites: ["keyGenId", "chainId 8453", "amountHuman (TYD)"],
|
|
7191
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoUnwrapTyd" },
|
|
7192
|
+
inputZod: mcpTrueoUnwrapTydInputSchema
|
|
7193
|
+
}),
|
|
7194
|
+
defineProtocolMcpTool({
|
|
7195
|
+
name: "ctm_trueo_build_mint_multisign",
|
|
7196
|
+
actionId: "trueo.mint",
|
|
7197
|
+
protocolId: "trueo",
|
|
7198
|
+
chainCategory: "evm",
|
|
7199
|
+
description: "Mint YES+NO from TYD (default) or USDC via TruthMarketAdapter. Base 8453. Not a bet \u2014 allowed near market close. 30-minute multiSign expiry.",
|
|
7200
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress from ctm_trueo_fetch_market", "amountHuman"],
|
|
7201
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoMint" },
|
|
7202
|
+
inputZod: mcpTrueoMintInputSchema
|
|
7203
|
+
}),
|
|
7204
|
+
defineProtocolMcpTool({
|
|
7205
|
+
name: "ctm_trueo_build_burn_multisign",
|
|
7206
|
+
actionId: "trueo.burn",
|
|
7207
|
+
protocolId: "trueo",
|
|
7208
|
+
chainCategory: "evm",
|
|
7209
|
+
description: "Burn equal YES+NO back to TYD (or USDC via adapter). Not a bet. 30-minute expiry.",
|
|
7210
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "amountHuman"],
|
|
7211
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoBurn" },
|
|
7212
|
+
inputZod: mcpTrueoBurnInputSchema
|
|
7213
|
+
}),
|
|
7214
|
+
defineProtocolMcpTool({
|
|
7215
|
+
name: "ctm_trueo_build_redeem_multisign",
|
|
7216
|
+
actionId: "trueo.redeem",
|
|
7217
|
+
protocolId: "trueo",
|
|
7218
|
+
chainCategory: "evm",
|
|
7219
|
+
description: "Redeem winning outcome tokens after resolution. Not a bet. 30-minute expiry.",
|
|
7220
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "amountHuman"],
|
|
7221
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoRedeem" },
|
|
7222
|
+
inputZod: mcpTrueoRedeemInputSchema
|
|
7223
|
+
}),
|
|
7224
|
+
defineProtocolMcpTool({
|
|
7225
|
+
name: "ctm_trueo_build_swap_multisign",
|
|
7226
|
+
actionId: "trueo.swap",
|
|
7227
|
+
protocolId: "trueo",
|
|
7228
|
+
chainCategory: "evm",
|
|
7229
|
+
description: "Buy Yes or No with TYD via UniversalRouterAdapter V4 swap. Refuses if the market closes within 5 minutes. extraJSON stores endOfTrading for Get Sig/Execute. 30-minute expiry.",
|
|
7230
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "side", "amountHuman"],
|
|
7231
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoSwap" },
|
|
7232
|
+
inputZod: mcpTrueoSwapInputSchema
|
|
7233
|
+
}),
|
|
7234
|
+
defineProtocolMcpTool({
|
|
7235
|
+
name: "ctm_trueo_build_create_order_multisign",
|
|
7236
|
+
actionId: "trueo.create-order",
|
|
7237
|
+
protocolId: "trueo",
|
|
7238
|
+
chainCategory: "evm",
|
|
7239
|
+
description: "Create an OrderManager limit order (Yes or No). Refuses if the market closes within 5 minutes. 30-minute expiry.",
|
|
7240
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "side", "amountHuman", "tickLower", "tickUpper"],
|
|
7241
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoCreateOrder" },
|
|
7242
|
+
inputZod: mcpTrueoCreateOrderInputSchema
|
|
7243
|
+
}),
|
|
7244
|
+
defineProtocolMcpTool({
|
|
7245
|
+
name: "ctm_trueo_build_cancel_order_multisign",
|
|
7246
|
+
actionId: "trueo.cancel-order",
|
|
7247
|
+
protocolId: "trueo",
|
|
7248
|
+
chainCategory: "evm",
|
|
7249
|
+
description: "Cancel an OrderManager order. Not a bet \u2014 allowed after close. 30-minute expiry.",
|
|
7250
|
+
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "side", "orderId"],
|
|
7251
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoCancelOrder" },
|
|
7252
|
+
inputZod: mcpTrueoCancelOrderInputSchema
|
|
6449
7253
|
})
|
|
6450
7254
|
];
|
|
6451
7255
|
|
|
@@ -8726,6 +9530,310 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8726
9530
|
],
|
|
8727
9531
|
handler: { importPath: "protocols/evm/pendle", exportName: "buildEvmMultisignBodyPendleRedeemRewardsBatch" },
|
|
8728
9532
|
inputZod: mcpPendleBuildRedeemRewardsMultisignInputSchema
|
|
9533
|
+
}),
|
|
9534
|
+
defineMcpTool({
|
|
9535
|
+
name: "ctm_derive_fetch_currencies",
|
|
9536
|
+
actionId: "derive.fetch-currencies",
|
|
9537
|
+
protocolId: "derive",
|
|
9538
|
+
chainCategory: "evm",
|
|
9539
|
+
description: "List Derive currencies from public/get_all_currencies. Used to map asset-row symbols (ETH, USDC, BTC, \u2026). load_defi_protocol derive activates defi:derive:market-data.",
|
|
9540
|
+
prerequisites: ["load_defi_protocol derive"],
|
|
9541
|
+
followUp: ["ctm_derive_fetch_option_chain", "ctm_derive_fetch_tickers", "ctm_derive_search_instruments"],
|
|
9542
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchCurrenciesSummary" },
|
|
9543
|
+
inputZod: mcpDeriveFetchCurrenciesInputSchema,
|
|
9544
|
+
outputZod: mcpDeriveFetchCurrenciesOutputSchema
|
|
9545
|
+
}),
|
|
9546
|
+
defineMcpTool({
|
|
9547
|
+
name: "ctm_derive_fetch_option_chain",
|
|
9548
|
+
actionId: "derive.fetch-option-chain",
|
|
9549
|
+
protocolId: "derive",
|
|
9550
|
+
chainCategory: "evm",
|
|
9551
|
+
description: "Compact Derive expiry ladder for a currency (counts + min/max strike per YYYYMMDD). Does not dump every instrument. Then ctm_derive_fetch_tickers for that expiry.",
|
|
9552
|
+
prerequisites: ["currency e.g. ETH"],
|
|
9553
|
+
followUp: ["ctm_derive_fetch_tickers", "ctm_derive_search_instruments", "ctm_derive_fetch_market_snapshot"],
|
|
9554
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchOptionChainAgentSummary" },
|
|
9555
|
+
inputZod: mcpDeriveFetchOptionChainInputSchema,
|
|
9556
|
+
outputZod: mcpDeriveFetchOptionChainOutputSchema
|
|
9557
|
+
}),
|
|
9558
|
+
defineMcpTool({
|
|
9559
|
+
name: "ctm_derive_fetch_tickers",
|
|
9560
|
+
actionId: "derive.fetch-tickers",
|
|
9561
|
+
protocolId: "derive",
|
|
9562
|
+
chainCategory: "evm",
|
|
9563
|
+
description: 'ATM strike/premium ladder for one Derive expiry (bid/ask/mark). expiryDate is YYYYMMDD \u2014 string or number. Default ~9 strikes around index; pass ladder:"all" for every strike.',
|
|
9564
|
+
prerequisites: ["currency", "expiryDate YYYYMMDD (string or number)"],
|
|
9565
|
+
followUp: ["ctm_derive_fetch_market_snapshot", "ctm_derive_order_quote", "ctm_derive_build_place_order_multisign"],
|
|
9566
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchTickersSummary" },
|
|
9567
|
+
inputZod: mcpDeriveFetchTickersInputSchema,
|
|
9568
|
+
outputZod: mcpDeriveFetchTickersOutputSchema
|
|
9569
|
+
}),
|
|
9570
|
+
defineMcpTool({
|
|
9571
|
+
name: "ctm_derive_search_instruments",
|
|
9572
|
+
actionId: "derive.search-instruments",
|
|
9573
|
+
protocolId: "derive",
|
|
9574
|
+
chainCategory: "evm",
|
|
9575
|
+
description: "Search Derive option instrument names by strike, expiry, or C/P suffix.",
|
|
9576
|
+
prerequisites: ["currency", "query"],
|
|
9577
|
+
followUp: ["ctm_derive_fetch_market_snapshot", "ctm_derive_build_place_order_multisign"],
|
|
9578
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveSearchInstrumentsSummary" },
|
|
9579
|
+
inputZod: mcpDeriveSearchInstrumentsInputSchema,
|
|
9580
|
+
outputZod: mcpDeriveSearchInstrumentsOutputSchema
|
|
9581
|
+
}),
|
|
9582
|
+
defineMcpTool({
|
|
9583
|
+
name: "ctm_derive_fetch_market_snapshot",
|
|
9584
|
+
actionId: "derive.fetch-market-snapshot",
|
|
9585
|
+
protocolId: "derive",
|
|
9586
|
+
chainCategory: "evm",
|
|
9587
|
+
description: "Live Derive ticker: mark, index, bid/ask, greeks. Throws if no live price.",
|
|
9588
|
+
prerequisites: ["instrumentName from fetch_option_chain"],
|
|
9589
|
+
followUp: ["ctm_derive_fetch_ohlcv", "ctm_derive_order_quote", "ctm_derive_build_place_order_multisign"],
|
|
9590
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchMarketSnapshotSummary" },
|
|
9591
|
+
inputZod: mcpDeriveFetchMarketSnapshotInputSchema,
|
|
9592
|
+
outputZod: mcpDeriveFetchMarketSnapshotOutputSchema
|
|
9593
|
+
}),
|
|
9594
|
+
defineMcpTool({
|
|
9595
|
+
name: "ctm_derive_fetch_ohlcv",
|
|
9596
|
+
actionId: "derive.fetch-ohlcv",
|
|
9597
|
+
protocolId: "derive",
|
|
9598
|
+
chainCategory: "evm",
|
|
9599
|
+
description: 'OHLCV for a Derive option (instrumentName) or underlying index (currency + marketKind index). Default is ~96 bars for the interval (not a 14-day dump). Envelope { ohlcv, dataSource: "derive" }. Then continuum__prepare_chart_from_rows if the user wants a chart.',
|
|
9600
|
+
prerequisites: ["instrumentName or currency"],
|
|
9601
|
+
followUp: ["continuum__prepare_chart_from_rows", "ctm_derive_fetch_market_snapshot"],
|
|
9602
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchOhlcvSummary" },
|
|
9603
|
+
inputZod: mcpDeriveFetchOhlcvInputSchema,
|
|
9604
|
+
outputZod: mcpDeriveFetchOhlcvOutputSchema
|
|
9605
|
+
}),
|
|
9606
|
+
defineMcpTool({
|
|
9607
|
+
name: "ctm_derive_order_quote",
|
|
9608
|
+
actionId: "derive.order-quote",
|
|
9609
|
+
protocolId: "derive",
|
|
9610
|
+
chainCategory: "evm",
|
|
9611
|
+
description: "Dry-run Derive fill / margin preview (public/order_quote).",
|
|
9612
|
+
prerequisites: ["instrumentName", "direction", "amount", "limitPrice"],
|
|
9613
|
+
followUp: ["ctm_derive_build_place_order_multisign"],
|
|
9614
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveOrderQuoteSummary" },
|
|
9615
|
+
inputZod: mcpDeriveOrderQuoteInputSchema,
|
|
9616
|
+
outputZod: mcpDeriveOrderQuoteOutputSchema
|
|
9617
|
+
}),
|
|
9618
|
+
defineMcpTool({
|
|
9619
|
+
name: "ctm_derive_fetch_risk_universes",
|
|
9620
|
+
actionId: "derive.fetch-risk-universes",
|
|
9621
|
+
protocolId: "derive",
|
|
9622
|
+
chainCategory: "evm",
|
|
9623
|
+
description: "List Derive risk universes (manager_id + collaterals). Required before the first deposit. Pick a manager that lists ETH options and USDC (or the row currency).",
|
|
9624
|
+
prerequisites: ["activate_tool_group defi:derive:options"],
|
|
9625
|
+
followUp: [
|
|
9626
|
+
"ctm_derive_build_deposit_new_subaccount_multisign",
|
|
9627
|
+
"ctm_derive_register_deposit_address",
|
|
9628
|
+
"ctm_derive_build_socket_deposit_multisign",
|
|
9629
|
+
"ctm_derive_build_hype_vault_deposit_multisign"
|
|
9630
|
+
],
|
|
9631
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchRiskUniversesSummary" },
|
|
9632
|
+
inputZod: mcpDeriveFetchRiskUniversesInputSchema,
|
|
9633
|
+
outputZod: mcpDeriveFetchRiskUniversesOutputSchema
|
|
9634
|
+
}),
|
|
9635
|
+
defineMcpTool({
|
|
9636
|
+
name: "ctm_derive_fetch_pending_deposits",
|
|
9637
|
+
actionId: "derive.fetch-pending-deposits",
|
|
9638
|
+
protocolId: "derive",
|
|
9639
|
+
chainCategory: "evm",
|
|
9640
|
+
description: "Poll public/get_pending_deposits for the KeyGen wallet. credited:false means wait; then call fetch_subaccounts. First deposit is L1, Socket (ETH/OP/Base/Arb), or HyperEVM HYPE.",
|
|
9641
|
+
prerequisites: ["wallet / executorAddress"],
|
|
9642
|
+
followUp: ["ctm_derive_fetch_subaccounts"],
|
|
9643
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchPendingDepositsSummary" },
|
|
9644
|
+
inputZod: mcpDeriveFetchPendingDepositsInputSchema,
|
|
9645
|
+
outputZod: mcpDeriveFetchPendingDepositsOutputSchema
|
|
9646
|
+
}),
|
|
9647
|
+
defineMcpTool({
|
|
9648
|
+
name: "ctm_derive_register_deposit_address",
|
|
9649
|
+
actionId: "derive.register-deposit-address",
|
|
9650
|
+
protocolId: "derive",
|
|
9651
|
+
chainCategory: "evm",
|
|
9652
|
+
description: "public/register_deposit_address \u2014 deterministic Ethereum L1 deposit address for this wallet. Then transfer the token with ctm_derive_build_deposit_address_transfer_multisign. Do not send from Base/Arb to this address.",
|
|
9653
|
+
prerequisites: ["wallet", "managerId (new subaccount) or subaccountId (existing)"],
|
|
9654
|
+
followUp: ["ctm_derive_build_deposit_address_transfer_multisign", "ctm_derive_fetch_pending_deposits"],
|
|
9655
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveRegisterDepositAddress" },
|
|
9656
|
+
inputZod: mcpDeriveRegisterDepositAddressInputSchema,
|
|
9657
|
+
outputZod: mcpDeriveRegisterDepositAddressOutputSchema
|
|
9658
|
+
}),
|
|
9659
|
+
defineMcpTool({
|
|
9660
|
+
name: "ctm_derive_fetch_subaccounts",
|
|
9661
|
+
actionId: "derive.fetch-subaccounts",
|
|
9662
|
+
protocolId: "derive",
|
|
9663
|
+
chainCategory: "evm",
|
|
9664
|
+
description: "List Derive subaccount ids for the KeyGen executor. Empty list returns funded:false and notes to deposit from a fundable logo row (L1 / Socket / HYPE vault). Two ids after first credit is normal (trading + fallback manager 0).",
|
|
9665
|
+
prerequisites: ["wallet / executorAddress", "node-cached EIP-191 login"],
|
|
9666
|
+
followUp: ["ctm_derive_fetch_portfolio", "ctm_derive_build_place_order_multisign"],
|
|
9667
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchSubaccountsSummary" },
|
|
9668
|
+
inputZod: mcpDeriveFetchSubaccountsInputSchema,
|
|
9669
|
+
outputZod: mcpDeriveFetchSubaccountsOutputSchema
|
|
9670
|
+
}),
|
|
9671
|
+
defineMcpTool({
|
|
9672
|
+
name: "ctm_derive_fetch_portfolio",
|
|
9673
|
+
actionId: "derive.fetch-portfolio",
|
|
9674
|
+
protocolId: "derive",
|
|
9675
|
+
chainCategory: "evm",
|
|
9676
|
+
description: "Derive private/get_subaccount portfolio for a funded subaccountId.",
|
|
9677
|
+
prerequisites: ["subaccountId from ctm_derive_fetch_subaccounts"],
|
|
9678
|
+
followUp: ["ctm_derive_fetch_positions", "ctm_derive_build_place_order_multisign"],
|
|
9679
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchPortfolioSummary" },
|
|
9680
|
+
inputZod: mcpDeriveFetchPortfolioInputSchema,
|
|
9681
|
+
outputZod: mcpDeriveFetchPortfolioOutputSchema
|
|
9682
|
+
}),
|
|
9683
|
+
defineMcpTool({
|
|
9684
|
+
name: "ctm_derive_fetch_positions",
|
|
9685
|
+
actionId: "derive.fetch-positions",
|
|
9686
|
+
protocolId: "derive",
|
|
9687
|
+
chainCategory: "evm",
|
|
9688
|
+
description: "Open Derive option positions for a subaccountId from fetch_subaccounts.",
|
|
9689
|
+
prerequisites: ["subaccountId from ctm_derive_fetch_subaccounts"],
|
|
9690
|
+
followUp: ["ctm_derive_build_place_order_multisign"],
|
|
9691
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchPositionsSummary" },
|
|
9692
|
+
inputZod: mcpDeriveFetchPositionsInputSchema,
|
|
9693
|
+
outputZod: mcpDeriveFetchPositionsOutputSchema
|
|
9694
|
+
}),
|
|
9695
|
+
defineMcpTool({
|
|
9696
|
+
name: "ctm_derive_fetch_open_orders",
|
|
9697
|
+
actionId: "derive.fetch-open-orders",
|
|
9698
|
+
protocolId: "derive",
|
|
9699
|
+
chainCategory: "evm",
|
|
9700
|
+
description: "Open Derive orders for a subaccountId. Follow with cancel/replace.",
|
|
9701
|
+
prerequisites: ["subaccountId from ctm_derive_fetch_subaccounts"],
|
|
9702
|
+
followUp: ["ctm_derive_build_cancel_multisign", "ctm_derive_build_replace_order_multisign"],
|
|
9703
|
+
handler: { importPath: "protocols/evm/derive", exportName: "deriveFetchOpenOrdersSummary" },
|
|
9704
|
+
inputZod: mcpDeriveFetchOpenOrdersInputSchema,
|
|
9705
|
+
outputZod: mcpDeriveFetchOpenOrdersOutputSchema
|
|
9706
|
+
}),
|
|
9707
|
+
defineMcpTool({
|
|
9708
|
+
name: "search_prediction_markets",
|
|
9709
|
+
actionId: "prediction-markets.search",
|
|
9710
|
+
protocolId: "prediction-markets",
|
|
9711
|
+
chainCategory: "evm",
|
|
9712
|
+
description: 'Venue-agnostic prediction market search for MPA chat. v1 adapter is Trueo on Base. Pass the operator topic verbatim as query (case-insensitive title substring). Do not substitute a category or synonym. Do not set trending when query is set. Empty query lists trending (max 10; cannot page). If hasMore, call again with offset/nextOffset, trending=false, indexBase=nextIndexBase, excludeAddresses of listed venueMarketIds. Default: live and recently finished (14 days) \u2014 do not pass includeAll unless the operator asked for closed or historical markets. If the live board is empty, say so. After a pick, get_prediction_market. Writes (mint / limit / burn / redeem / Yes-No swap) are not in the opening catalog \u2014 load_defi_protocol({ protocolId: "trueo" }) then get_defi_protocol_skill or search_continuum_tools for ctm_trueo_build_*.',
|
|
9713
|
+
prerequisites: [],
|
|
9714
|
+
followUp: ["get_prediction_market", "load_defi_protocol", "get_defi_protocol_skill"],
|
|
9715
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "searchPredictionMarketsSummary" },
|
|
9716
|
+
inputZod: mcpSearchPredictionMarketsInputSchema,
|
|
9717
|
+
outputZod: mcpSearchPredictionMarketsOutputSchema
|
|
9718
|
+
}),
|
|
9719
|
+
defineMcpTool({
|
|
9720
|
+
name: "get_prediction_market",
|
|
9721
|
+
actionId: "prediction-markets.get",
|
|
9722
|
+
protocolId: "prediction-markets",
|
|
9723
|
+
chainCategory: "evm",
|
|
9724
|
+
description: 'Full selected prediction market (rules, Yes/No, volume, TVL, expiry). Use after search_prediction_markets pick #N. Does not require load_defi_protocol. Writes stay behind load_defi_protocol({ protocolId: "trueo" }): ctm_trueo_build_wrap_tyd_multisign, ctm_trueo_build_unwrap_tyd_multisign, ctm_trueo_build_mint_multisign, ctm_trueo_build_create_order_multisign, ctm_trueo_build_burn_multisign, ctm_trueo_build_redeem_multisign, ctm_trueo_build_swap_multisign. Discover via get_defi_protocol_skill or search_continuum_tools \u2014 they are not on the opening chat catalog.',
|
|
9725
|
+
prerequisites: ["venueMarketId from search_prediction_markets"],
|
|
9726
|
+
followUp: [
|
|
9727
|
+
"load_defi_protocol",
|
|
9728
|
+
"get_defi_protocol_skill",
|
|
9729
|
+
"ctm_trueo_build_wrap_tyd_multisign",
|
|
9730
|
+
"ctm_trueo_build_mint_multisign",
|
|
9731
|
+
"ctm_trueo_build_create_order_multisign",
|
|
9732
|
+
"ctm_trueo_build_swap_multisign",
|
|
9733
|
+
"ctm_trueo_build_burn_multisign",
|
|
9734
|
+
"ctm_trueo_build_redeem_multisign"
|
|
9735
|
+
],
|
|
9736
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "getPredictionMarketSummary" },
|
|
9737
|
+
inputZod: mcpGetPredictionMarketInputSchema,
|
|
9738
|
+
outputZod: mcpGetPredictionMarketOutputSchema
|
|
9739
|
+
}),
|
|
9740
|
+
defineMcpTool({
|
|
9741
|
+
name: "list_my_prediction_markets",
|
|
9742
|
+
actionId: "prediction-markets.my-holdings",
|
|
9743
|
+
protocolId: "prediction-markets",
|
|
9744
|
+
chainCategory: "evm",
|
|
9745
|
+
description: "Live Yes/No, trading window, and resolution for markets the user has bet on. Pass YES/NO tokenAddresses from get_token_registry and/or marketAddresses from prior bets. Does not require load_defi_protocol. After a bet, add_to_token_registry for the YES or NO token so it shows here. Exit: load_defi_protocol trueo then ctm_trueo_build_burn_multisign or ctm_trueo_build_redeem_multisign.",
|
|
9746
|
+
prerequisites: [],
|
|
9747
|
+
followUp: [
|
|
9748
|
+
"get_prediction_market",
|
|
9749
|
+
"add_to_token_registry",
|
|
9750
|
+
"load_defi_protocol",
|
|
9751
|
+
"ctm_trueo_build_burn_multisign",
|
|
9752
|
+
"ctm_trueo_build_redeem_multisign"
|
|
9753
|
+
],
|
|
9754
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "listMyPredictionMarketsSummary" },
|
|
9755
|
+
inputZod: mcpListMyPredictionMarketsInputSchema,
|
|
9756
|
+
outputZod: mcpListMyPredictionMarketsOutputSchema
|
|
9757
|
+
}),
|
|
9758
|
+
defineMcpTool({
|
|
9759
|
+
name: "ctm_trueo_fetch_categories",
|
|
9760
|
+
actionId: "trueo.fetch-categories",
|
|
9761
|
+
protocolId: "trueo",
|
|
9762
|
+
chainCategory: "evm",
|
|
9763
|
+
description: "Trueo category chips (Politics, Crypto, Sports, \u2026). Use as category on search.",
|
|
9764
|
+
prerequisites: ["load_defi_protocol trueo"],
|
|
9765
|
+
followUp: ["ctm_trueo_search_markets", "ctm_trueo_fetch_trending"],
|
|
9766
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchCategoriesSummary" },
|
|
9767
|
+
inputZod: mcpTrueoFetchCategoriesInputSchema,
|
|
9768
|
+
outputZod: mcpTrueoFetchCategoriesOutputSchema
|
|
9769
|
+
}),
|
|
9770
|
+
defineMcpTool({
|
|
9771
|
+
name: "ctm_trueo_fetch_trending",
|
|
9772
|
+
actionId: "trueo.fetch-trending",
|
|
9773
|
+
protocolId: "trueo",
|
|
9774
|
+
chainCategory: "evm",
|
|
9775
|
+
description: "Trueo trending on Base (max 10; API does not page). More markets: ctm_trueo_search_markets with offset=0. Default: live and recently finished (14 days).",
|
|
9776
|
+
prerequisites: ["load_defi_protocol trueo"],
|
|
9777
|
+
followUp: ["ctm_trueo_fetch_market"],
|
|
9778
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchTrendingSummary" },
|
|
9779
|
+
inputZod: mcpTrueoFetchTrendingInputSchema,
|
|
9780
|
+
outputZod: mcpTrueoFetchTrendingOutputSchema
|
|
9781
|
+
}),
|
|
9782
|
+
defineMcpTool({
|
|
9783
|
+
name: "ctm_trueo_search_markets",
|
|
9784
|
+
actionId: "trueo.search-markets",
|
|
9785
|
+
protocolId: "trueo",
|
|
9786
|
+
chainCategory: "evm",
|
|
9787
|
+
description: "Trueo-only search (query + category), pages of 10. Same rows as search_prediction_markets. If hasMore, pass nextOffset and excludeAddresses of listed addresses. Default: live and recently finished (14 days).",
|
|
9788
|
+
prerequisites: ["load_defi_protocol trueo"],
|
|
9789
|
+
followUp: ["ctm_trueo_fetch_market"],
|
|
9790
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoSearchMarketsSummary" },
|
|
9791
|
+
inputZod: mcpTrueoSearchMarketsInputSchema,
|
|
9792
|
+
outputZod: mcpTrueoSearchMarketsOutputSchema
|
|
9793
|
+
}),
|
|
9794
|
+
defineMcpTool({
|
|
9795
|
+
name: "ctm_trueo_fetch_market",
|
|
9796
|
+
actionId: "trueo.fetch-market",
|
|
9797
|
+
protocolId: "trueo",
|
|
9798
|
+
chainCategory: "evm",
|
|
9799
|
+
description: "Selected Trueo market: rules, source, Yes/No %, TVL, size, tokens, pools, endOfTrading. Copy address for build_*. Writes: ctm_trueo_build_mint_multisign, ctm_trueo_build_create_order_multisign, ctm_trueo_build_swap_multisign, ctm_trueo_build_burn_multisign, ctm_trueo_build_redeem_multisign (after load_defi_protocol trueo).",
|
|
9800
|
+
prerequisites: ["marketAddress from search or trending"],
|
|
9801
|
+
followUp: [
|
|
9802
|
+
"ctm_trueo_fetch_chance_series",
|
|
9803
|
+
"ctm_trueo_fetch_orderbook",
|
|
9804
|
+
"ctm_trueo_build_mint_multisign",
|
|
9805
|
+
"ctm_trueo_build_create_order_multisign",
|
|
9806
|
+
"ctm_trueo_build_swap_multisign",
|
|
9807
|
+
"ctm_trueo_build_burn_multisign",
|
|
9808
|
+
"ctm_trueo_build_redeem_multisign"
|
|
9809
|
+
],
|
|
9810
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchMarketSummary" },
|
|
9811
|
+
inputZod: mcpTrueoFetchMarketInputSchema,
|
|
9812
|
+
outputZod: mcpTrueoFetchMarketOutputSchema
|
|
9813
|
+
}),
|
|
9814
|
+
defineMcpTool({
|
|
9815
|
+
name: "ctm_trueo_fetch_chance_series",
|
|
9816
|
+
actionId: "trueo.fetch-chance-series",
|
|
9817
|
+
protocolId: "trueo",
|
|
9818
|
+
chainCategory: "evm",
|
|
9819
|
+
description: "Yes/No chance samples for a pool id from fetch_market. Not candlesticks. Default hourly (3600s) over 14 days. 1H/1D/1W/All coerce to hourly.",
|
|
9820
|
+
prerequisites: ["poolId from ctm_trueo_fetch_market"],
|
|
9821
|
+
followUp: ["ctm_trueo_build_swap_multisign"],
|
|
9822
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchChanceSeriesSummary" },
|
|
9823
|
+
inputZod: mcpTrueoFetchChanceSeriesInputSchema,
|
|
9824
|
+
outputZod: mcpTrueoFetchChanceSeriesOutputSchema
|
|
9825
|
+
}),
|
|
9826
|
+
defineMcpTool({
|
|
9827
|
+
name: "ctm_trueo_fetch_orderbook",
|
|
9828
|
+
actionId: "trueo.fetch-orderbook",
|
|
9829
|
+
protocolId: "trueo",
|
|
9830
|
+
chainCategory: "evm",
|
|
9831
|
+
description: "Yes/No depth: live tick, implied price, OrderManager pending rows when rpcUrl is set, recent trades.",
|
|
9832
|
+
prerequisites: ["marketAddress from ctm_trueo_fetch_market"],
|
|
9833
|
+
followUp: ["ctm_trueo_build_swap_multisign", "ctm_trueo_build_create_order_multisign"],
|
|
9834
|
+
handler: { importPath: "protocols/evm/trueo", exportName: "trueoFetchOrderbookSummary" },
|
|
9835
|
+
inputZod: mcpTrueoFetchOrderbookInputSchema,
|
|
9836
|
+
outputZod: mcpTrueoFetchOrderbookOutputSchema
|
|
8729
9837
|
})
|
|
8730
9838
|
];
|
|
8731
9839
|
var MCP_TOOL_DEFINITIONS = [
|
|
@@ -9619,7 +10727,26 @@ var hyperliquidProtocolModule = {
|
|
|
9619
10727
|
dex: { type: "string", required: false, description: "HIP-3 dex name when applicable" },
|
|
9620
10728
|
takeProfitTriggerPxHuman: { type: "string", required: false, description: "TP trigger \u2014 enables L1 bracket with SL" },
|
|
9621
10729
|
stopLossTriggerPxHuman: { type: "string", required: false, description: "SL trigger \u2014 enables L1 bracket with TP" },
|
|
9622
|
-
tpslExecMode: { type: "string", required: false, description: "limit_at_trigger (default) or market" }
|
|
10730
|
+
tpslExecMode: { type: "string", required: false, description: "limit_at_trigger (default) or market" },
|
|
10731
|
+
trailingOffsetHuman: { type: "string", required: false, description: "Trailing retracement \u2014 EIP-712 trailingStop (cannot combine with SL)" },
|
|
10732
|
+
trailingOffsetType: { type: "string", required: false, description: "price or percentage" },
|
|
10733
|
+
trailingActivationPxHuman: { type: "string", required: false, description: "Optional activation mark price" }
|
|
10734
|
+
}
|
|
10735
|
+
},
|
|
10736
|
+
{
|
|
10737
|
+
id: "hyperliquid.trailingStop",
|
|
10738
|
+
protocolId: HYPERLIQUID_PROTOCOL_ID,
|
|
10739
|
+
chainCategory: "evm",
|
|
10740
|
+
description: "Place a Hyperliquid perp trailing stop via L1 trailingStop action (EIP-712 /exchange)",
|
|
10741
|
+
commonParams: ["keyGen", "purposeText"],
|
|
10742
|
+
params: {
|
|
10743
|
+
coin: { type: "string", required: true, description: "Perp coin" },
|
|
10744
|
+
isBuy: { type: "boolean", required: true, description: "false closes a long / opens a short" },
|
|
10745
|
+
szHuman: { type: "string", required: true, description: "Size in coin units" },
|
|
10746
|
+
trailingOffsetHuman: { type: "string", required: true, description: "Retracement distance or percent" },
|
|
10747
|
+
trailingOffsetType: { type: "string", required: false, description: "price or percentage (default)" },
|
|
10748
|
+
trailingActivationPxHuman: { type: "string", required: false, description: "Optional activation mark price" },
|
|
10749
|
+
reduceOnly: { type: "boolean", required: false, description: "true (default) reduces a position" }
|
|
9623
10750
|
}
|
|
9624
10751
|
},
|
|
9625
10752
|
{
|
|
@@ -11616,6 +12743,400 @@ var pendleProtocolModule = {
|
|
|
11616
12743
|
]
|
|
11617
12744
|
};
|
|
11618
12745
|
registerProtocolModule(pendleProtocolModule);
|
|
12746
|
+
|
|
12747
|
+
// src/protocols/evm/derive/constants.ts
|
|
12748
|
+
var DERIVE_PROTOCOL_ID = "derive";
|
|
12749
|
+
var DERIVE_MAINNET_API = "https://api.derive.xyz/v3";
|
|
12750
|
+
var DERIVE_TESTNET_API = "https://testnet.api.derive.xyz/v3";
|
|
12751
|
+
var DERIVE_MAINNET_API_V2 = "https://api.lyra.finance";
|
|
12752
|
+
var DERIVE_TESTNET_API_V2 = "https://api-demo.lyra.finance";
|
|
12753
|
+
function deriveNetworkFromChainId(chainId) {
|
|
12754
|
+
return chainId === 11155111 ? "testnet" : "mainnet";
|
|
12755
|
+
}
|
|
12756
|
+
function deriveApiBaseUrl(network = "mainnet") {
|
|
12757
|
+
return network === "testnet" ? DERIVE_TESTNET_API : DERIVE_MAINNET_API;
|
|
12758
|
+
}
|
|
12759
|
+
function deriveApiFallbackBaseUrl(network = "mainnet") {
|
|
12760
|
+
return network === "testnet" ? DERIVE_TESTNET_API_V2 : DERIVE_MAINNET_API_V2;
|
|
12761
|
+
}
|
|
12762
|
+
var DERIVE_ASSET_ROW_CHAIN_IDS = [1, 10, 8453, 42161, 999, 11155111];
|
|
12763
|
+
function isDeriveAssetRowChainId(chainId) {
|
|
12764
|
+
return DERIVE_ASSET_ROW_CHAIN_IDS.includes(chainId);
|
|
12765
|
+
}
|
|
12766
|
+
function isDeriveChainSupported(chainId) {
|
|
12767
|
+
return isDeriveAssetRowChainId(chainId);
|
|
12768
|
+
}
|
|
12769
|
+
var NATIVE_ZERO = "0x0000000000000000000000000000000000000000";
|
|
12770
|
+
var USDC = {
|
|
12771
|
+
1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
12772
|
+
10: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
12773
|
+
8453: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
12774
|
+
42161: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
12775
|
+
11155111: "0x73Efab09362052D26FB93A730Be4F8a5EdC833af"
|
|
12776
|
+
};
|
|
12777
|
+
var WETH = {
|
|
12778
|
+
1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
12779
|
+
10: "0x4200000000000000000000000000000000000006",
|
|
12780
|
+
8453: "0x4200000000000000000000000000000000000006",
|
|
12781
|
+
42161: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
|
|
12782
|
+
};
|
|
12783
|
+
var WBTC = {
|
|
12784
|
+
1: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
|
|
12785
|
+
10: "0x68f180fcCe6836688e9084f035309E29Bf0A2095",
|
|
12786
|
+
42161: "0x2f2a2543B76A4166549B7eCDcE5542a773Aa44fB"
|
|
12787
|
+
};
|
|
12788
|
+
var WHYPE = "0x5555555555555555555555555555555555555555";
|
|
12789
|
+
function deriveMappedTokensForChain(chainId) {
|
|
12790
|
+
const tokens = [];
|
|
12791
|
+
const add = (address, symbol, decimals, roles) => {
|
|
12792
|
+
if (!address) return;
|
|
12793
|
+
tokens.push({ address: viem.getAddress(address), symbol, decimals, roles });
|
|
12794
|
+
};
|
|
12795
|
+
if ([1, 10, 8453, 42161].includes(chainId)) {
|
|
12796
|
+
add(NATIVE_ZERO, "ETH", 18, ["native", "underlying"]);
|
|
12797
|
+
add(WETH[chainId], "WETH", 18, ["native_wrapped", "underlying"]);
|
|
12798
|
+
}
|
|
12799
|
+
if (chainId === 999) {
|
|
12800
|
+
add(NATIVE_ZERO, "HYPE", 18, ["native", "collateral"]);
|
|
12801
|
+
add(WHYPE, "WHYPE", 18, ["native_wrapped", "collateral"]);
|
|
12802
|
+
}
|
|
12803
|
+
add(USDC[chainId], "USDC", 6, ["collateral", "quote"]);
|
|
12804
|
+
add(WBTC[chainId], "WBTC", 8, ["underlying", "collateral"]);
|
|
12805
|
+
return tokens;
|
|
12806
|
+
}
|
|
12807
|
+
function deriveNativeWrappedForChain(chainId) {
|
|
12808
|
+
if (chainId === 999) return WHYPE;
|
|
12809
|
+
return WETH[chainId];
|
|
12810
|
+
}
|
|
12811
|
+
function deriveAdvisorNotes() {
|
|
12812
|
+
return "Fund from Ethereum USDC/WETH/WBTC (L1 ACTION_MANAGER or deposit address), Socket USDC/WETH/WBTC on Optimism/Base/Arbitrum, or HyperEVM HYPE (vault). Derive Chain 957 is not a Continuum Assets chain. After credit, EIP-712 options use Derive collateral.";
|
|
12813
|
+
}
|
|
12814
|
+
|
|
12815
|
+
// src/protocols/evm/derive/api.ts
|
|
12816
|
+
function methodName(method) {
|
|
12817
|
+
return method.replace(/^\//, "");
|
|
12818
|
+
}
|
|
12819
|
+
function isDerivePublicMethod(method) {
|
|
12820
|
+
return methodName(method).startsWith("public/");
|
|
12821
|
+
}
|
|
12822
|
+
function isEmptyDerivePublicResult(method, result) {
|
|
12823
|
+
const m = methodName(method);
|
|
12824
|
+
if (result == null) return true;
|
|
12825
|
+
if (m === "public/get_all_currencies" && Array.isArray(result) && result.length === 0) return true;
|
|
12826
|
+
if (m === "public/get_tickers" && result && typeof result === "object") {
|
|
12827
|
+
const tickers = result.tickers;
|
|
12828
|
+
if (Array.isArray(tickers) && tickers.length === 0) return true;
|
|
12829
|
+
if (tickers && typeof tickers === "object" && !Array.isArray(tickers) && Object.keys(tickers).length === 0) {
|
|
12830
|
+
return true;
|
|
12831
|
+
}
|
|
12832
|
+
}
|
|
12833
|
+
return false;
|
|
12834
|
+
}
|
|
12835
|
+
function isDeriveRecoverablePublicError(err) {
|
|
12836
|
+
const name = err instanceof Error ? err.name : "";
|
|
12837
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
12838
|
+
return name === "TimeoutError" || name === "AbortError" || /Internal error|HTTP 404|Not Found|returned empty|empty catalog|Ticker not found|aborted due to timeout|The operation was aborted/i.test(
|
|
12839
|
+
msg
|
|
12840
|
+
);
|
|
12841
|
+
}
|
|
12842
|
+
function unwrapResult(json, method) {
|
|
12843
|
+
if (json && typeof json === "object") {
|
|
12844
|
+
const rec = json;
|
|
12845
|
+
if (rec.error) {
|
|
12846
|
+
const err = rec.error;
|
|
12847
|
+
const detail = err.data != null && String(err.data).trim() ? ` (${String(err.data).slice(0, 160)})` : "";
|
|
12848
|
+
throw new Error(`Derive ${method} failed: ${err.message ?? JSON.stringify(rec.error)}${detail}`);
|
|
12849
|
+
}
|
|
12850
|
+
if ("result" in rec) return rec.result;
|
|
12851
|
+
}
|
|
12852
|
+
return json;
|
|
12853
|
+
}
|
|
12854
|
+
async function deriveRpcPost(args) {
|
|
12855
|
+
const method = methodName(args.method);
|
|
12856
|
+
const headers = { "Content-Type": "application/json" };
|
|
12857
|
+
if (args.auth) {
|
|
12858
|
+
headers["X-DeriveWallet"] = args.auth.wallet;
|
|
12859
|
+
headers["X-DeriveTimestamp"] = args.auth.timestamp;
|
|
12860
|
+
headers["X-DeriveSignature"] = args.auth.signature;
|
|
12861
|
+
}
|
|
12862
|
+
const res = await fetch(`${args.base}/${method}`, {
|
|
12863
|
+
method: "POST",
|
|
12864
|
+
headers,
|
|
12865
|
+
body: JSON.stringify(args.params ?? {}),
|
|
12866
|
+
cache: "no-store",
|
|
12867
|
+
signal: AbortSignal.timeout(15e3)
|
|
12868
|
+
});
|
|
12869
|
+
const text = await res.text().catch(() => "");
|
|
12870
|
+
if (!res.ok || !text.trim() || text.trim() === "Not Found") {
|
|
12871
|
+
throw new Error(`Derive ${method} HTTP ${res.status}: ${text.slice(0, 240) || "empty body"}`);
|
|
12872
|
+
}
|
|
12873
|
+
let json;
|
|
12874
|
+
try {
|
|
12875
|
+
json = JSON.parse(text);
|
|
12876
|
+
} catch {
|
|
12877
|
+
throw new Error(`Derive ${method} returned non-JSON: ${text.slice(0, 160)}`);
|
|
12878
|
+
}
|
|
12879
|
+
const result = unwrapResult(json, method);
|
|
12880
|
+
if (isEmptyDerivePublicResult(method, result)) {
|
|
12881
|
+
throw new Error(`Derive ${method} returned empty catalog`);
|
|
12882
|
+
}
|
|
12883
|
+
return result;
|
|
12884
|
+
}
|
|
12885
|
+
async function deriveRpc(args) {
|
|
12886
|
+
const network = args.network ?? "mainnet";
|
|
12887
|
+
const method = methodName(args.method);
|
|
12888
|
+
const primary = deriveApiBaseUrl(network);
|
|
12889
|
+
try {
|
|
12890
|
+
return await deriveRpcPost({
|
|
12891
|
+
base: primary,
|
|
12892
|
+
method,
|
|
12893
|
+
params: args.params,
|
|
12894
|
+
auth: args.auth
|
|
12895
|
+
});
|
|
12896
|
+
} catch (err) {
|
|
12897
|
+
const fallback = deriveApiFallbackBaseUrl(network);
|
|
12898
|
+
if (!isDerivePublicMethod(method) || fallback === primary || !isDeriveRecoverablePublicError(err)) {
|
|
12899
|
+
throw err;
|
|
12900
|
+
}
|
|
12901
|
+
return await deriveRpcPost({
|
|
12902
|
+
base: fallback,
|
|
12903
|
+
method,
|
|
12904
|
+
params: args.params,
|
|
12905
|
+
auth: args.auth
|
|
12906
|
+
});
|
|
12907
|
+
}
|
|
12908
|
+
}
|
|
12909
|
+
|
|
12910
|
+
// src/protocols/evm/derive/assets.ts
|
|
12911
|
+
async function deriveFetchCurrenciesRaw(args) {
|
|
12912
|
+
const result = await deriveRpc({
|
|
12913
|
+
method: "public/get_all_currencies",
|
|
12914
|
+
network: args?.network
|
|
12915
|
+
});
|
|
12916
|
+
if (Array.isArray(result)) return result;
|
|
12917
|
+
if (result && typeof result === "object" && Array.isArray(result.currencies)) {
|
|
12918
|
+
return result.currencies;
|
|
12919
|
+
}
|
|
12920
|
+
return [];
|
|
12921
|
+
}
|
|
12922
|
+
|
|
12923
|
+
// src/protocols/evm/derive/index.ts
|
|
12924
|
+
var deriveProtocolModule = {
|
|
12925
|
+
id: DERIVE_PROTOCOL_ID,
|
|
12926
|
+
chainCategory: "evm",
|
|
12927
|
+
isChainSupported(ctx) {
|
|
12928
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
12929
|
+
const chainId = typeof ctx.chainId === "number" ? ctx.chainId : Number(ctx.chainId);
|
|
12930
|
+
return Number.isFinite(chainId) && isDeriveChainSupported(chainId);
|
|
12931
|
+
},
|
|
12932
|
+
isTokenSupported(token) {
|
|
12933
|
+
if (token.category !== "evm") return false;
|
|
12934
|
+
return token.kind === "erc20" || token.kind === "native";
|
|
12935
|
+
},
|
|
12936
|
+
actions: [
|
|
12937
|
+
{
|
|
12938
|
+
id: "derive.depositNewSubaccount",
|
|
12939
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
12940
|
+
chainCategory: "evm",
|
|
12941
|
+
description: "Ethereum L1 approve + ACTION_MANAGER.depositToNewSubaccount. First credit creates the trading + fallback subaccounts. chainId 1 / 11155111. Arb/OP/Base use derive.socketDeposit; HyperEVM HYPE uses derive.hypeVaultDeposit.",
|
|
12942
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
12943
|
+
params: {
|
|
12944
|
+
protocolAsset: { type: "string", required: true, description: "Risk-universe collateral protocol asset" },
|
|
12945
|
+
underlyingErc20: { type: "string", required: true, description: "L1 ERC-20 to approve (usually USDC)" },
|
|
12946
|
+
amountHuman: { type: "string", required: true, description: "Deposit amount in underlying decimals" },
|
|
12947
|
+
managerId: { type: "number", required: true, description: "Risk-universe manager_id" }
|
|
12948
|
+
}
|
|
12949
|
+
},
|
|
12950
|
+
{
|
|
12951
|
+
id: "derive.depositAddressTransfer",
|
|
12952
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
12953
|
+
chainCategory: "evm",
|
|
12954
|
+
description: "Ethereum L1 ERC-20 transfer to a registered Derive deposit address (standard / keeper sweep). Call register_deposit_address first.",
|
|
12955
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
12956
|
+
params: {
|
|
12957
|
+
underlyingErc20: { type: "string", required: true, description: "L1 ERC-20 to send (usually USDC)" },
|
|
12958
|
+
amountHuman: { type: "string", required: true, description: "Transfer amount in token units" },
|
|
12959
|
+
depositAddress: { type: "string", required: true, description: "From register_deposit_address" }
|
|
12960
|
+
}
|
|
12961
|
+
},
|
|
12962
|
+
{
|
|
12963
|
+
id: "derive.socketDeposit",
|
|
12964
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
12965
|
+
chainCategory: "evm",
|
|
12966
|
+
description: "Socket FAST deposit of USDC/WETH/WBTC on Ethereum, Optimism, Base, or Arbitrum into Derive Chain. Native ETH wraps to WETH first. useCustomGas.",
|
|
12967
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
12968
|
+
params: {
|
|
12969
|
+
token: { type: "string", required: true, description: "Row ERC-20 or native 0x0 (wraps to WETH)" },
|
|
12970
|
+
amountHuman: { type: "string", required: true, description: "Deposit amount in token units" }
|
|
12971
|
+
}
|
|
12972
|
+
},
|
|
12973
|
+
{
|
|
12974
|
+
id: "derive.hypeVaultDeposit",
|
|
12975
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
12976
|
+
chainCategory: "evm",
|
|
12977
|
+
description: "HyperEVM (999): wrap native HYPE to WHYPE if needed, approve Derive vault, deposit.",
|
|
12978
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
12979
|
+
params: {
|
|
12980
|
+
amountHuman: { type: "string", required: true, description: "HYPE amount" },
|
|
12981
|
+
token: { type: "string", required: false, description: "Native 0x0 or WHYPE" }
|
|
12982
|
+
}
|
|
12983
|
+
},
|
|
12984
|
+
{
|
|
12985
|
+
id: "derive.placeOrder",
|
|
12986
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
12987
|
+
chainCategory: "evm",
|
|
12988
|
+
description: "Place a Derive options limit order via EIP-712 Action (delivery derive_exchange). Does not spend the current-chain token.",
|
|
12989
|
+
commonParams: ["keyGen", "purposeText"],
|
|
12990
|
+
params: {
|
|
12991
|
+
instrumentName: { type: "string", required: true, description: "e.g. ETH-20260626-3000-C" },
|
|
12992
|
+
direction: { type: "string", required: true, description: "buy or sell" },
|
|
12993
|
+
amount: { type: "string", required: true, description: "Contract size" },
|
|
12994
|
+
limitPrice: { type: "string", required: true, description: "Limit price" },
|
|
12995
|
+
maxFee: { type: "string", required: true, description: "Max fee (e18-scaled, \u226412 decimals)" },
|
|
12996
|
+
subaccountId: { type: "number", required: true, description: "From fetch_subaccounts \u2014 never 0" }
|
|
12997
|
+
}
|
|
12998
|
+
},
|
|
12999
|
+
{
|
|
13000
|
+
id: "derive.replaceOrder",
|
|
13001
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
13002
|
+
chainCategory: "evm",
|
|
13003
|
+
description: "Replace a Derive open order (EIP-712 Action + orderIdToCancel or nonceToCancel).",
|
|
13004
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13005
|
+
params: {
|
|
13006
|
+
instrumentName: { type: "string", required: true, description: "Instrument of the replacement order" },
|
|
13007
|
+
direction: { type: "string", required: true, description: "buy or sell" },
|
|
13008
|
+
amount: { type: "string", required: true, description: "Contract size" },
|
|
13009
|
+
limitPrice: { type: "string", required: true, description: "Limit price" },
|
|
13010
|
+
maxFee: { type: "string", required: true, description: "Max fee" },
|
|
13011
|
+
subaccountId: { type: "number", required: true, description: "From fetch_subaccounts" },
|
|
13012
|
+
orderIdToCancel: { type: "string", required: false, description: "Existing order id (xor nonceToCancel)" },
|
|
13013
|
+
nonceToCancel: { type: "string", required: false, description: "Existing order nonce (xor orderIdToCancel)" }
|
|
13014
|
+
}
|
|
13015
|
+
},
|
|
13016
|
+
{
|
|
13017
|
+
id: "derive.cancel",
|
|
13018
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
13019
|
+
chainCategory: "evm",
|
|
13020
|
+
description: "Cancel a Derive open order. v3 cancel is session-auth; this signs EIP-191 login for private/cancel delivery.",
|
|
13021
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13022
|
+
params: {
|
|
13023
|
+
instrumentName: { type: "string", required: true, description: "Instrument of the open order" },
|
|
13024
|
+
orderId: { type: "string", required: true, description: "order_id from fetch_open_orders" },
|
|
13025
|
+
subaccountId: { type: "number", required: true, description: "From fetch_subaccounts" }
|
|
13026
|
+
}
|
|
13027
|
+
},
|
|
13028
|
+
{
|
|
13029
|
+
id: "derive.transferSpot",
|
|
13030
|
+
protocolId: DERIVE_PROTOCOL_ID,
|
|
13031
|
+
chainCategory: "evm",
|
|
13032
|
+
description: "EIP-712 transfer_spot. Use toSubaccountId 0 + newSubaccountManager to create an extra subaccount after the first funded one.",
|
|
13033
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13034
|
+
params: {
|
|
13035
|
+
fromSubaccountId: { type: "number", required: true, description: "Funded source subaccount" },
|
|
13036
|
+
toSubaccountId: { type: "number", required: true, description: "0 to create an extra subaccount" },
|
|
13037
|
+
newSubaccountManager: { type: "number", required: true, description: "Required when toSubaccountId is 0" },
|
|
13038
|
+
asset: { type: "string", required: true, description: "Protocol asset address" },
|
|
13039
|
+
amount: { type: "string", required: true, description: "Transfer amount" }
|
|
13040
|
+
}
|
|
13041
|
+
}
|
|
13042
|
+
]
|
|
13043
|
+
};
|
|
13044
|
+
registerProtocolModule(deriveProtocolModule);
|
|
13045
|
+
var TRUEO_PROTOCOL_ID = "trueo";
|
|
13046
|
+
var TRUEO_BASE_CHAIN_ID = 8453;
|
|
13047
|
+
var TRUEO_CHAIN_IDS = [TRUEO_BASE_CHAIN_ID];
|
|
13048
|
+
var TRUEO_TYD = viem.getAddress("0xb13CF163d916917d9cD6E836905cA5f12a1dEF4B");
|
|
13049
|
+
var TRUEO_TRUE = viem.getAddress("0x21CFCFc3d8F98fC728f48341D10Ad8283F6EB7AB");
|
|
13050
|
+
var TRUEO_USDC = viem.getAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
|
|
13051
|
+
viem.getAddress("0x61A98Bef11867c69489B91f340fE545eEfc695d7");
|
|
13052
|
+
viem.getAddress("0x1cdB1C43eB64e99780EA9d3C7162C23432C59a1A");
|
|
13053
|
+
viem.getAddress("0x0A1AFc2121B4441127a02DEF72928F61f564034a");
|
|
13054
|
+
viem.getAddress("0x6E08d24AEf78F6d1a97503F64E84fDF65f8125E1");
|
|
13055
|
+
viem.getAddress("0x3E83479B2276EcFb7C7181F67b5d092d3511e0C4");
|
|
13056
|
+
viem.getAddress("0x000000000022D473030F116dDEE9F6B43aC78BA3");
|
|
13057
|
+
function isTrueoChainSupported(chainId) {
|
|
13058
|
+
return TRUEO_CHAIN_IDS.includes(chainId);
|
|
13059
|
+
}
|
|
13060
|
+
|
|
13061
|
+
// src/protocols/evm/trueo/index.ts
|
|
13062
|
+
var trueoProtocolModule = {
|
|
13063
|
+
id: TRUEO_PROTOCOL_ID,
|
|
13064
|
+
chainCategory: "evm",
|
|
13065
|
+
isChainSupported(ctx) {
|
|
13066
|
+
const id = typeof ctx.chainId === "string" ? Number(ctx.chainId) : ctx.chainId;
|
|
13067
|
+
return ctx.chainCategory === "evm" && isTrueoChainSupported(id);
|
|
13068
|
+
},
|
|
13069
|
+
isTokenSupported(token) {
|
|
13070
|
+
return token.category === "evm" && (token.kind === "erc20" || token.kind === "ctmerc20");
|
|
13071
|
+
},
|
|
13072
|
+
actions: [
|
|
13073
|
+
{
|
|
13074
|
+
id: "trueo.wrap-tyd",
|
|
13075
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13076
|
+
chainCategory: "evm",
|
|
13077
|
+
description: "Mint TYD by depositing Base USDC into the Yearn ERC-4626 vault",
|
|
13078
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13079
|
+
params: {}
|
|
13080
|
+
},
|
|
13081
|
+
{
|
|
13082
|
+
id: "trueo.unwrap-tyd",
|
|
13083
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13084
|
+
chainCategory: "evm",
|
|
13085
|
+
description: "Redeem TYD shares back to Base USDC",
|
|
13086
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13087
|
+
params: {}
|
|
13088
|
+
},
|
|
13089
|
+
{
|
|
13090
|
+
id: "trueo.mint",
|
|
13091
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13092
|
+
chainCategory: "evm",
|
|
13093
|
+
description: "Mint YES+NO from TYD (or USDC via adapter)",
|
|
13094
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13095
|
+
params: {}
|
|
13096
|
+
},
|
|
13097
|
+
{
|
|
13098
|
+
id: "trueo.burn",
|
|
13099
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13100
|
+
chainCategory: "evm",
|
|
13101
|
+
description: "Burn equal YES+NO back to TYD",
|
|
13102
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13103
|
+
params: {}
|
|
13104
|
+
},
|
|
13105
|
+
{
|
|
13106
|
+
id: "trueo.redeem",
|
|
13107
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13108
|
+
chainCategory: "evm",
|
|
13109
|
+
description: "Redeem winning outcome tokens after resolution",
|
|
13110
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13111
|
+
params: {}
|
|
13112
|
+
},
|
|
13113
|
+
{
|
|
13114
|
+
id: "trueo.swap",
|
|
13115
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13116
|
+
chainCategory: "evm",
|
|
13117
|
+
description: "Buy Yes or No with TYD via UniversalRouterAdapter V4 swap",
|
|
13118
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13119
|
+
params: {}
|
|
13120
|
+
},
|
|
13121
|
+
{
|
|
13122
|
+
id: "trueo.create-order",
|
|
13123
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13124
|
+
chainCategory: "evm",
|
|
13125
|
+
description: "Create an on-chain OrderManager limit order",
|
|
13126
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13127
|
+
params: {}
|
|
13128
|
+
},
|
|
13129
|
+
{
|
|
13130
|
+
id: "trueo.cancel-order",
|
|
13131
|
+
protocolId: TRUEO_PROTOCOL_ID,
|
|
13132
|
+
chainCategory: "evm",
|
|
13133
|
+
description: "Cancel an on-chain OrderManager order",
|
|
13134
|
+
commonParams: ["keyGen", "purposeText", "useCustomGas"],
|
|
13135
|
+
params: {}
|
|
13136
|
+
}
|
|
13137
|
+
]
|
|
13138
|
+
};
|
|
13139
|
+
registerProtocolModule(trueoProtocolModule);
|
|
11619
13140
|
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");
|
|
11620
13141
|
var SKILL_PROTOCOL_IDS = [
|
|
11621
13142
|
"aave-v4",
|
|
@@ -11635,6 +13156,8 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
11635
13156
|
"pendle",
|
|
11636
13157
|
"continuum-dao",
|
|
11637
13158
|
"compound-v3",
|
|
13159
|
+
"derive",
|
|
13160
|
+
"trueo",
|
|
11638
13161
|
"yield-compare"
|
|
11639
13162
|
];
|
|
11640
13163
|
function getToolsForProtocol(protocolId) {
|
|
@@ -12174,6 +13697,72 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
12174
13697
|
notes: "Arcus on Robinhood Chain (4663): perps via fetch_markets; spot Stock Tokens via spot_fetch_markets. Custody is secp256k1 on 4663; API signing uses paired ed25519 KeyGen (same GroupId)."
|
|
12175
13698
|
};
|
|
12176
13699
|
}
|
|
13700
|
+
}),
|
|
13701
|
+
[DERIVE_PROTOCOL_ID]: advisor(DERIVE_PROTOCOL_ID, "api_underlyings", {
|
|
13702
|
+
async supportedChainIds() {
|
|
13703
|
+
return [...DERIVE_ASSET_ROW_CHAIN_IDS];
|
|
13704
|
+
},
|
|
13705
|
+
async supportedTokens(chainId) {
|
|
13706
|
+
if (!isDeriveChainSupported(chainId)) {
|
|
13707
|
+
return { tokens: [], notes: "Derive logo rows are fundable chains only: Ethereum, OP, Base, Arbitrum, HyperEVM, Sepolia." };
|
|
13708
|
+
}
|
|
13709
|
+
const mapped = deriveMappedTokensForChain(chainId);
|
|
13710
|
+
let tokens = mapped;
|
|
13711
|
+
try {
|
|
13712
|
+
const currencies = await deriveFetchCurrenciesRaw({ network: deriveNetworkFromChainId(chainId) });
|
|
13713
|
+
const symbols = new Set(
|
|
13714
|
+
currencies.map((c) => String(c.currency ?? "").toUpperCase()).filter(Boolean)
|
|
13715
|
+
);
|
|
13716
|
+
if (symbols.size > 0) {
|
|
13717
|
+
tokens = mapped.filter((t) => {
|
|
13718
|
+
const s = t.symbol.toUpperCase();
|
|
13719
|
+
return symbols.has(s) || s === "WETH" && symbols.has("ETH") || s === "WBTC" && symbols.has("BTC") || s === "HYPE" || s === "WHYPE";
|
|
13720
|
+
});
|
|
13721
|
+
}
|
|
13722
|
+
} catch {
|
|
13723
|
+
}
|
|
13724
|
+
return {
|
|
13725
|
+
tokens,
|
|
13726
|
+
nativeWrapped: deriveNativeWrappedForChain(chainId),
|
|
13727
|
+
notes: deriveAdvisorNotes()
|
|
13728
|
+
};
|
|
13729
|
+
},
|
|
13730
|
+
async isTokenSupported(chainId, address) {
|
|
13731
|
+
if (!isDeriveChainSupported(chainId)) return false;
|
|
13732
|
+
try {
|
|
13733
|
+
const normalized = viem.getAddress(address).toLowerCase();
|
|
13734
|
+
return deriveMappedTokensForChain(chainId).some((t) => t.address.toLowerCase() === normalized);
|
|
13735
|
+
} catch {
|
|
13736
|
+
return false;
|
|
13737
|
+
}
|
|
13738
|
+
}
|
|
13739
|
+
}),
|
|
13740
|
+
[TRUEO_PROTOCOL_ID]: advisor(TRUEO_PROTOCOL_ID, "fixed_addresses", {
|
|
13741
|
+
async supportedChainIds() {
|
|
13742
|
+
return [TRUEO_BASE_CHAIN_ID];
|
|
13743
|
+
},
|
|
13744
|
+
async supportedTokens(chainId) {
|
|
13745
|
+
if (chainId !== TRUEO_BASE_CHAIN_ID) {
|
|
13746
|
+
return { tokens: [], notes: "Trueo is Base-only (chainId 8453)." };
|
|
13747
|
+
}
|
|
13748
|
+
return {
|
|
13749
|
+
tokens: [
|
|
13750
|
+
{ address: TRUEO_TYD, symbol: "TYD", decimals: 6, roles: ["payment"] },
|
|
13751
|
+
{ address: TRUEO_TRUE, symbol: "TRUE", decimals: 18, roles: ["governance"] },
|
|
13752
|
+
{ address: TRUEO_USDC, symbol: "USDC", decimals: 6, roles: ["adapter_asset"] }
|
|
13753
|
+
],
|
|
13754
|
+
notes: "Trueo prediction markets on Base. Payment is TYD. Outcome YES/NO tokens are per-market \u2014 use ctm_trueo_search_markets / fetch_market. Chat search: search_prediction_markets (no load required; default live/recent, includeAll for closed)."
|
|
13755
|
+
};
|
|
13756
|
+
},
|
|
13757
|
+
async isTokenSupported(chainId, address) {
|
|
13758
|
+
if (chainId !== TRUEO_BASE_CHAIN_ID) return false;
|
|
13759
|
+
try {
|
|
13760
|
+
const n = viem.getAddress(address).toLowerCase();
|
|
13761
|
+
return n === TRUEO_TYD.toLowerCase() || n === TRUEO_TRUE.toLowerCase() || n === TRUEO_USDC.toLowerCase();
|
|
13762
|
+
} catch {
|
|
13763
|
+
return false;
|
|
13764
|
+
}
|
|
13765
|
+
}
|
|
12177
13766
|
})
|
|
12178
13767
|
};
|
|
12179
13768
|
function getProtocolSupportAdvisor(protocolId) {
|
|
@@ -12202,6 +13791,8 @@ registerProtocolModule(aerodromeProtocolModule);
|
|
|
12202
13791
|
registerProtocolModule(continuumDaoProtocolModule);
|
|
12203
13792
|
registerProtocolModule(compoundV3ProtocolModule);
|
|
12204
13793
|
registerProtocolModule(pendleProtocolModule);
|
|
13794
|
+
registerProtocolModule(deriveProtocolModule);
|
|
13795
|
+
registerProtocolModule(trueoProtocolModule);
|
|
12205
13796
|
function getAgentCatalog() {
|
|
12206
13797
|
return {
|
|
12207
13798
|
protocols: getProtocolModules(),
|
|
@@ -12228,6 +13819,8 @@ function getAgentCatalog() {
|
|
|
12228
13819
|
continuumDao: continuumDaoProtocolModule,
|
|
12229
13820
|
compoundV3: compoundV3ProtocolModule,
|
|
12230
13821
|
pendle: pendleProtocolModule,
|
|
13822
|
+
derive: deriveProtocolModule,
|
|
13823
|
+
trueo: trueoProtocolModule,
|
|
12231
13824
|
/** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
|
|
12232
13825
|
mcp: getAgentCatalogForMcp()
|
|
12233
13826
|
};
|
|
@@ -12242,6 +13835,7 @@ exports.MCP_TOOL_OUTPUT_SCHEMAS = MCP_TOOL_OUTPUT_SCHEMAS;
|
|
|
12242
13835
|
exports.MULTISIGN_OUTPUT_DOC = MULTISIGN_OUTPUT_DOC;
|
|
12243
13836
|
exports.MULTISIGN_SUBMIT_OUTPUT_DOC = MULTISIGN_SUBMIT_OUTPUT_DOC;
|
|
12244
13837
|
exports.PROTOCOL_SUPPORT_ADVISORS = PROTOCOL_SUPPORT_ADVISORS;
|
|
13838
|
+
exports.agentEvmChainIdSchema = agentEvmChainIdSchema;
|
|
12245
13839
|
exports.chainDetailSchema = chainDetailSchema;
|
|
12246
13840
|
exports.evmAddressSchema = evmAddressSchema;
|
|
12247
13841
|
exports.evmMultisignCommonInputSchema = evmMultisignCommonInputSchema;
|
|
@@ -12445,6 +14039,42 @@ exports.mcpCurveDaoQuoteInputSchema = mcpCurveDaoQuoteInputSchema;
|
|
|
12445
14039
|
exports.mcpCurveDaoQuoteOutputSchema = mcpCurveDaoQuoteOutputSchema;
|
|
12446
14040
|
exports.mcpCurveDaoQuoteRemoveLiquidityInputSchema = mcpCurveDaoQuoteRemoveLiquidityInputSchema;
|
|
12447
14041
|
exports.mcpCurveDaoQuoteRemoveLiquidityOutputSchema = mcpCurveDaoQuoteRemoveLiquidityOutputSchema;
|
|
14042
|
+
exports.mcpDeriveCancelInputSchema = mcpDeriveCancelInputSchema;
|
|
14043
|
+
exports.mcpDeriveDepositAddressTransferInputSchema = mcpDeriveDepositAddressTransferInputSchema;
|
|
14044
|
+
exports.mcpDeriveDepositNewSubaccountInputSchema = mcpDeriveDepositNewSubaccountInputSchema;
|
|
14045
|
+
exports.mcpDeriveFetchCurrenciesInputSchema = mcpDeriveFetchCurrenciesInputSchema;
|
|
14046
|
+
exports.mcpDeriveFetchCurrenciesOutputSchema = mcpDeriveFetchCurrenciesOutputSchema;
|
|
14047
|
+
exports.mcpDeriveFetchMarketSnapshotInputSchema = mcpDeriveFetchMarketSnapshotInputSchema;
|
|
14048
|
+
exports.mcpDeriveFetchMarketSnapshotOutputSchema = mcpDeriveFetchMarketSnapshotOutputSchema;
|
|
14049
|
+
exports.mcpDeriveFetchOhlcvInputSchema = mcpDeriveFetchOhlcvInputSchema;
|
|
14050
|
+
exports.mcpDeriveFetchOhlcvOutputSchema = mcpDeriveFetchOhlcvOutputSchema;
|
|
14051
|
+
exports.mcpDeriveFetchOpenOrdersInputSchema = mcpDeriveFetchOpenOrdersInputSchema;
|
|
14052
|
+
exports.mcpDeriveFetchOpenOrdersOutputSchema = mcpDeriveFetchOpenOrdersOutputSchema;
|
|
14053
|
+
exports.mcpDeriveFetchOptionChainInputSchema = mcpDeriveFetchOptionChainInputSchema;
|
|
14054
|
+
exports.mcpDeriveFetchOptionChainOutputSchema = mcpDeriveFetchOptionChainOutputSchema;
|
|
14055
|
+
exports.mcpDeriveFetchPendingDepositsInputSchema = mcpDeriveFetchPendingDepositsInputSchema;
|
|
14056
|
+
exports.mcpDeriveFetchPendingDepositsOutputSchema = mcpDeriveFetchPendingDepositsOutputSchema;
|
|
14057
|
+
exports.mcpDeriveFetchPortfolioInputSchema = mcpDeriveFetchPortfolioInputSchema;
|
|
14058
|
+
exports.mcpDeriveFetchPortfolioOutputSchema = mcpDeriveFetchPortfolioOutputSchema;
|
|
14059
|
+
exports.mcpDeriveFetchPositionsInputSchema = mcpDeriveFetchPositionsInputSchema;
|
|
14060
|
+
exports.mcpDeriveFetchPositionsOutputSchema = mcpDeriveFetchPositionsOutputSchema;
|
|
14061
|
+
exports.mcpDeriveFetchRiskUniversesInputSchema = mcpDeriveFetchRiskUniversesInputSchema;
|
|
14062
|
+
exports.mcpDeriveFetchRiskUniversesOutputSchema = mcpDeriveFetchRiskUniversesOutputSchema;
|
|
14063
|
+
exports.mcpDeriveFetchSubaccountsInputSchema = mcpDeriveFetchSubaccountsInputSchema;
|
|
14064
|
+
exports.mcpDeriveFetchSubaccountsOutputSchema = mcpDeriveFetchSubaccountsOutputSchema;
|
|
14065
|
+
exports.mcpDeriveFetchTickersInputSchema = mcpDeriveFetchTickersInputSchema;
|
|
14066
|
+
exports.mcpDeriveFetchTickersOutputSchema = mcpDeriveFetchTickersOutputSchema;
|
|
14067
|
+
exports.mcpDeriveHypeVaultDepositInputSchema = mcpDeriveHypeVaultDepositInputSchema;
|
|
14068
|
+
exports.mcpDeriveOrderQuoteInputSchema = mcpDeriveOrderQuoteInputSchema;
|
|
14069
|
+
exports.mcpDeriveOrderQuoteOutputSchema = mcpDeriveOrderQuoteOutputSchema;
|
|
14070
|
+
exports.mcpDerivePlaceOrderInputSchema = mcpDerivePlaceOrderInputSchema;
|
|
14071
|
+
exports.mcpDeriveRegisterDepositAddressInputSchema = mcpDeriveRegisterDepositAddressInputSchema;
|
|
14072
|
+
exports.mcpDeriveRegisterDepositAddressOutputSchema = mcpDeriveRegisterDepositAddressOutputSchema;
|
|
14073
|
+
exports.mcpDeriveReplaceOrderInputSchema = mcpDeriveReplaceOrderInputSchema;
|
|
14074
|
+
exports.mcpDeriveSearchInstrumentsInputSchema = mcpDeriveSearchInstrumentsInputSchema;
|
|
14075
|
+
exports.mcpDeriveSearchInstrumentsOutputSchema = mcpDeriveSearchInstrumentsOutputSchema;
|
|
14076
|
+
exports.mcpDeriveSocketDepositInputSchema = mcpDeriveSocketDepositInputSchema;
|
|
14077
|
+
exports.mcpDeriveTransferSpotInputSchema = mcpDeriveTransferSpotInputSchema;
|
|
12448
14078
|
exports.mcpEthenaClaimInputSchema = mcpEthenaClaimInputSchema;
|
|
12449
14079
|
exports.mcpEthenaCooldownInputSchema = mcpEthenaCooldownInputSchema;
|
|
12450
14080
|
exports.mcpEthenaFetchSusdeApyInputSchema = mcpEthenaFetchSusdeApyInputSchema;
|
|
@@ -12462,6 +14092,8 @@ exports.mcpEulerV2IsolatedBorrowInputSchema = mcpEulerV2IsolatedBorrowInputSchem
|
|
|
12462
14092
|
exports.mcpEulerV2IsolatedLendInputSchema = mcpEulerV2IsolatedLendInputSchema;
|
|
12463
14093
|
exports.mcpEulerV2MerklClaimInputSchema = mcpEulerV2MerklClaimInputSchema;
|
|
12464
14094
|
exports.mcpEulerV2VaultWithdrawInputSchema = mcpEulerV2VaultWithdrawInputSchema;
|
|
14095
|
+
exports.mcpGetPredictionMarketInputSchema = mcpGetPredictionMarketInputSchema;
|
|
14096
|
+
exports.mcpGetPredictionMarketOutputSchema = mcpGetPredictionMarketOutputSchema;
|
|
12465
14097
|
exports.mcpGmxCancelInputSchema = mcpGmxCancelInputSchema;
|
|
12466
14098
|
exports.mcpGmxDecreaseInputSchema = mcpGmxDecreaseInputSchema;
|
|
12467
14099
|
exports.mcpGmxFetchGmApyInputSchema = mcpGmxFetchGmApyInputSchema;
|
|
@@ -12526,6 +14158,7 @@ exports.mcpHyperliquidLimitOrderInputSchema = mcpHyperliquidLimitOrderInputSchem
|
|
|
12526
14158
|
exports.mcpHyperliquidSearchMarketsInputSchema = mcpHyperliquidSearchMarketsInputSchema;
|
|
12527
14159
|
exports.mcpHyperliquidSearchMarketsOutputSchema = mcpHyperliquidSearchMarketsOutputSchema;
|
|
12528
14160
|
exports.mcpHyperliquidStakeInputSchema = mcpHyperliquidStakeInputSchema;
|
|
14161
|
+
exports.mcpHyperliquidTrailingStopInputSchema = mcpHyperliquidTrailingStopInputSchema;
|
|
12529
14162
|
exports.mcpHyperliquidUndelegateInputSchema = mcpHyperliquidUndelegateInputSchema;
|
|
12530
14163
|
exports.mcpHyperliquidUnstakeInputSchema = mcpHyperliquidUnstakeInputSchema;
|
|
12531
14164
|
exports.mcpHyperliquidUpdateLeverageInputSchema = mcpHyperliquidUpdateLeverageInputSchema;
|
|
@@ -12539,6 +14172,8 @@ exports.mcpLidoRequestWithdrawalsInputSchema = mcpLidoRequestWithdrawalsInputSch
|
|
|
12539
14172
|
exports.mcpLidoSubmitInputSchema = mcpLidoSubmitInputSchema;
|
|
12540
14173
|
exports.mcpLidoUnwrapWstEthInputSchema = mcpLidoUnwrapWstEthInputSchema;
|
|
12541
14174
|
exports.mcpLidoWrapStEthInputSchema = mcpLidoWrapStEthInputSchema;
|
|
14175
|
+
exports.mcpListMyPredictionMarketsInputSchema = mcpListMyPredictionMarketsInputSchema;
|
|
14176
|
+
exports.mcpListMyPredictionMarketsOutputSchema = mcpListMyPredictionMarketsOutputSchema;
|
|
12542
14177
|
exports.mcpMapleDepositInputSchema = mcpMapleDepositInputSchema;
|
|
12543
14178
|
exports.mcpMapleFetchMarketInputSchema = mcpMapleFetchMarketInputSchema;
|
|
12544
14179
|
exports.mcpMapleFetchMarketOutputSchema = mcpMapleFetchMarketOutputSchema;
|
|
@@ -12606,6 +14241,9 @@ exports.mcpPendleQuoteRemoveLiquidityInputSchema = mcpPendleQuoteRemoveLiquidity
|
|
|
12606
14241
|
exports.mcpPendleQuoteSwapInputSchema = mcpPendleQuoteSwapInputSchema;
|
|
12607
14242
|
exports.mcpPendleSearchAssetsInputSchema = mcpPendleSearchAssetsInputSchema;
|
|
12608
14243
|
exports.mcpPendleSearchAssetsOutputSchema = mcpPendleSearchAssetsOutputSchema;
|
|
14244
|
+
exports.mcpPredictionMarketRowSchema = mcpPredictionMarketRowSchema;
|
|
14245
|
+
exports.mcpSearchPredictionMarketsInputSchema = mcpSearchPredictionMarketsInputSchema;
|
|
14246
|
+
exports.mcpSearchPredictionMarketsOutputSchema = mcpSearchPredictionMarketsOutputSchema;
|
|
12609
14247
|
exports.mcpServerCommonInputSchema = mcpServerCommonInputSchema;
|
|
12610
14248
|
exports.mcpServerMultisignInput = mcpServerMultisignInput;
|
|
12611
14249
|
exports.mcpServerSubmitOutputSchema = mcpServerSubmitOutputSchema;
|
|
@@ -12618,6 +14256,27 @@ exports.mcpSkyLockstakeStakeInputSchema = mcpSkyLockstakeStakeInputSchema;
|
|
|
12618
14256
|
exports.mcpSkyLockstakeWipeInputSchema = mcpSkyLockstakeWipeInputSchema;
|
|
12619
14257
|
exports.mcpSkySusdsDepositInputSchema = mcpSkySusdsDepositInputSchema;
|
|
12620
14258
|
exports.mcpSkySusdsRedeemInputSchema = mcpSkySusdsRedeemInputSchema;
|
|
14259
|
+
exports.mcpTrueoBurnInputSchema = mcpTrueoBurnInputSchema;
|
|
14260
|
+
exports.mcpTrueoCancelOrderInputSchema = mcpTrueoCancelOrderInputSchema;
|
|
14261
|
+
exports.mcpTrueoCreateOrderInputSchema = mcpTrueoCreateOrderInputSchema;
|
|
14262
|
+
exports.mcpTrueoFetchCategoriesInputSchema = mcpTrueoFetchCategoriesInputSchema;
|
|
14263
|
+
exports.mcpTrueoFetchCategoriesOutputSchema = mcpTrueoFetchCategoriesOutputSchema;
|
|
14264
|
+
exports.mcpTrueoFetchChanceSeriesInputSchema = mcpTrueoFetchChanceSeriesInputSchema;
|
|
14265
|
+
exports.mcpTrueoFetchChanceSeriesOutputSchema = mcpTrueoFetchChanceSeriesOutputSchema;
|
|
14266
|
+
exports.mcpTrueoFetchMarketInputSchema = mcpTrueoFetchMarketInputSchema;
|
|
14267
|
+
exports.mcpTrueoFetchMarketOutputSchema = mcpTrueoFetchMarketOutputSchema;
|
|
14268
|
+
exports.mcpTrueoFetchOrderbookInputSchema = mcpTrueoFetchOrderbookInputSchema;
|
|
14269
|
+
exports.mcpTrueoFetchOrderbookOutputSchema = mcpTrueoFetchOrderbookOutputSchema;
|
|
14270
|
+
exports.mcpTrueoFetchTrendingInputSchema = mcpTrueoFetchTrendingInputSchema;
|
|
14271
|
+
exports.mcpTrueoFetchTrendingOutputSchema = mcpTrueoFetchTrendingOutputSchema;
|
|
14272
|
+
exports.mcpTrueoMarketRowSchema = mcpTrueoMarketRowSchema;
|
|
14273
|
+
exports.mcpTrueoMintInputSchema = mcpTrueoMintInputSchema;
|
|
14274
|
+
exports.mcpTrueoRedeemInputSchema = mcpTrueoRedeemInputSchema;
|
|
14275
|
+
exports.mcpTrueoSearchMarketsInputSchema = mcpTrueoSearchMarketsInputSchema;
|
|
14276
|
+
exports.mcpTrueoSearchMarketsOutputSchema = mcpTrueoSearchMarketsOutputSchema;
|
|
14277
|
+
exports.mcpTrueoSwapInputSchema = mcpTrueoSwapInputSchema;
|
|
14278
|
+
exports.mcpTrueoUnwrapTydInputSchema = mcpTrueoUnwrapTydInputSchema;
|
|
14279
|
+
exports.mcpTrueoWrapTydInputSchema = mcpTrueoWrapTydInputSchema;
|
|
12621
14280
|
exports.mcpUniswapV4BuildAllowlistFinalizeMultisignInputSchema = mcpUniswapV4BuildAllowlistFinalizeMultisignInputSchema;
|
|
12622
14281
|
exports.mcpUniswapV4BuildCollectFeesMultisignInputSchema = mcpUniswapV4BuildCollectFeesMultisignInputSchema;
|
|
12623
14282
|
exports.mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema = mcpUniswapV4BuildDecreaseLiquidityMultisignInputSchema;
|