@continuumdao/ctm-mpc-defi 0.2.50 → 0.2.51
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 +770 -28
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +6 -1
- package/dist/agent/catalog.js +770 -28
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/continuum-dao/SKILL.md +2 -0
- package/dist/agent/skills/continuum-dao-marketplace/SKILL.md +58 -0
- package/dist/agent/skills/hyperliquidOutcome/SKILL.md +47 -0
- package/dist/core/index.cjs +2 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.cjs +2274 -59
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +690 -2
- package/dist/protocols/evm/continuum-dao/index.js +2218 -61
- package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
- package/dist/protocols/evm/hyperliquidOutcome/index.cjs +1294 -0
- package/dist/protocols/evm/hyperliquidOutcome/index.cjs.map +1 -0
- package/dist/protocols/evm/hyperliquidOutcome/index.d.ts +465 -0
- package/dist/protocols/evm/hyperliquidOutcome/index.js +1247 -0
- package/dist/protocols/evm/hyperliquidOutcome/index.js.map +1 -0
- package/dist/protocols/evm/pendle/index.cjs +2 -1
- package/dist/protocols/evm/pendle/index.cjs.map +1 -1
- package/dist/protocols/evm/pendle/index.js +2 -1
- package/dist/protocols/evm/pendle/index.js.map +1 -1
- package/dist/protocols/evm/trueo/index.cjs +569 -9
- package/dist/protocols/evm/trueo/index.cjs.map +1 -1
- package/dist/protocols/evm/trueo/index.d.ts +42 -1
- package/dist/protocols/evm/trueo/index.js +569 -9
- package/dist/protocols/evm/trueo/index.js.map +1 -1
- package/package.json +6 -1
package/dist/agent/catalog.js
CHANGED
|
@@ -535,6 +535,10 @@ function votingEscrowAddressOnEvmChain(chainId) {
|
|
|
535
535
|
const ve = continuumDaoDeployment(chainId)?.votingEscrow;
|
|
536
536
|
return ve && isConfiguredAddress(ve) ? getAddress(ve) : null;
|
|
537
537
|
}
|
|
538
|
+
function votingEscrowMarketplaceAddressOnEvmChain(chainId) {
|
|
539
|
+
if (chainId !== CONTINUUM_DAO_LINEA_CHAIN_ID) return null;
|
|
540
|
+
return VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS;
|
|
541
|
+
}
|
|
538
542
|
function listContinuumDaoDefaultAssets() {
|
|
539
543
|
const out = [];
|
|
540
544
|
for (const chainId of [
|
|
@@ -566,7 +570,7 @@ function listContinuumDaoDefaultAssets() {
|
|
|
566
570
|
}
|
|
567
571
|
return out;
|
|
568
572
|
}
|
|
569
|
-
var CONTINUUM_DAO_PROTOCOL_ID, CONTINUUM_DAO_ETHEREUM_CHAIN_ID, CONTINUUM_DAO_LINEA_CHAIN_ID, CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID, CTM_TOKEN_NAME, CTM_TOKEN_SYMBOL, VECTM_TOKEN_NAME, VECTM_TOKEN_SYMBOL, CTM_TOKEN_DECIMALS, UNSET, CTM_TOKEN_ADDRESS, VOTING_ESCROW_LINEA_ADDRESS, CONTINUUM_DAO_DEPLOYMENTS;
|
|
573
|
+
var CONTINUUM_DAO_PROTOCOL_ID, CONTINUUM_DAO_ETHEREUM_CHAIN_ID, CONTINUUM_DAO_LINEA_CHAIN_ID, CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID, CTM_TOKEN_NAME, CTM_TOKEN_SYMBOL, VECTM_TOKEN_NAME, VECTM_TOKEN_SYMBOL, CTM_TOKEN_DECIMALS, UNSET, CTM_TOKEN_ADDRESS, VOTING_ESCROW_LINEA_ADDRESS, VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS, CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, CONTINUUM_DAO_DEPLOYMENTS;
|
|
570
574
|
var init_constants2 = __esm({
|
|
571
575
|
"src/protocols/evm/continuum-dao/constants.ts"() {
|
|
572
576
|
CONTINUUM_DAO_PROTOCOL_ID = "continuum-dao";
|
|
@@ -587,6 +591,11 @@ var init_constants2 = __esm({
|
|
|
587
591
|
};
|
|
588
592
|
CTM_TOKEN_ADDRESS = getAddress("0x2026027054F5beBCEB650aBD62dC623e327658e7");
|
|
589
593
|
VOTING_ESCROW_LINEA_ADDRESS = getAddress("0x221EC90B3B083A8501A37bdeb7035CeaedF3C31f");
|
|
594
|
+
getAddress("0x4ebd7cCBe32a51d1638cFE90E8eD1c4BdF42f729");
|
|
595
|
+
VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS = getAddress("0x92557d38beAe4658d3c03A02F349FFB60c3bfFA5");
|
|
596
|
+
getAddress("0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f");
|
|
597
|
+
getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff");
|
|
598
|
+
CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
|
|
590
599
|
getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
591
600
|
getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
|
|
592
601
|
[
|
|
@@ -2752,7 +2761,12 @@ var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
2752
2761
|
"ctm_trueo_search_markets",
|
|
2753
2762
|
"ctm_trueo_fetch_market",
|
|
2754
2763
|
"ctm_trueo_fetch_chance_series",
|
|
2755
|
-
"ctm_trueo_fetch_orderbook"
|
|
2764
|
+
"ctm_trueo_fetch_orderbook",
|
|
2765
|
+
"ctm_hyperliquid_outcome_fetch_markets",
|
|
2766
|
+
"ctm_hyperliquid_outcome_fetch_market",
|
|
2767
|
+
"ctm_hyperliquid_outcome_fetch_orderbook",
|
|
2768
|
+
"ctm_hyperliquid_outcome_fetch_positions",
|
|
2769
|
+
"ctm_hyperliquid_outcome_fetch_open_orders"
|
|
2756
2770
|
]);
|
|
2757
2771
|
|
|
2758
2772
|
// src/agent/schemas/protocols.ts
|
|
@@ -5402,7 +5416,7 @@ var mcpSearchPredictionMarketsInputSchema = z.object({
|
|
|
5402
5416
|
"Pass the operator topic verbatim (case-insensitive title substring). Do not substitute a category name. Empty lists trending."
|
|
5403
5417
|
),
|
|
5404
5418
|
category: z.string().optional().describe("Venue category, e.g. Politics"),
|
|
5405
|
-
venues: z.array(z.string()).optional().describe(
|
|
5419
|
+
venues: z.array(z.string()).optional().describe('Optional venue filter. Omit to search trueo and hyperliquid. Restrict with ["trueo"] or ["hyperliquid"].'),
|
|
5406
5420
|
trending: agentOptionalBooleanSchema().describe(
|
|
5407
5421
|
"Trending board only when query and category are empty. Ignored when query is set."
|
|
5408
5422
|
),
|
|
@@ -5464,8 +5478,8 @@ var mcpListMyPredictionMarketsInputSchema = z.object({
|
|
|
5464
5478
|
});
|
|
5465
5479
|
var mcpListMyPredictionMarketsOutputSchema = mcpSearchPredictionMarketsOutputSchema;
|
|
5466
5480
|
var mcpGetPredictionMarketInputSchema = z.object({
|
|
5467
|
-
venue: z.string().optional().describe("
|
|
5468
|
-
venueMarketId: z.string().min(1).describe("
|
|
5481
|
+
venue: z.string().optional().describe("trueo (default) or hyperliquid"),
|
|
5482
|
+
venueMarketId: z.string().min(1).describe("Trueo market address, or Hyperliquid outcome id")
|
|
5469
5483
|
});
|
|
5470
5484
|
var mcpGetPredictionMarketOutputSchema = mcpPredictionMarketRowSchema.passthrough();
|
|
5471
5485
|
var mcpTrueoWrapTydInputSchema = mcpMultisignInput({
|
|
@@ -5863,6 +5877,131 @@ var mcpCctpBuildBurnMultisignInputSchema = mcpMultisignInput({
|
|
|
5863
5877
|
minFinalityThreshold: agentCoercedOptionalIntSchema(z.number().int().positive()),
|
|
5864
5878
|
feeSnapshot: jsonObjectSchema.optional().describe("Optional output from ctm_cctp_fetch_burn_fees")
|
|
5865
5879
|
});
|
|
5880
|
+
var outcomeIdSchema = z.number().int().nonnegative();
|
|
5881
|
+
var sideSchema = z.enum(["yes", "no"]);
|
|
5882
|
+
var mcpHyperliquidOutcomeFetchMarketsInputSchema = z.object({
|
|
5883
|
+
chainId: z.number().int().positive().optional().describe("999 mainnet or 998 testnet. Default 999."),
|
|
5884
|
+
query: z.string().optional().describe("Case-insensitive substring of the question, description, or outcome id."),
|
|
5885
|
+
limit: z.number().int().positive().optional(),
|
|
5886
|
+
offset: z.number().int().nonnegative().optional()
|
|
5887
|
+
});
|
|
5888
|
+
var mcpHyperliquidOutcomeMarketSchema = z.object({
|
|
5889
|
+
outcome: z.number(),
|
|
5890
|
+
question: z.string(),
|
|
5891
|
+
description: z.string(),
|
|
5892
|
+
questionId: z.number().nullable(),
|
|
5893
|
+
sideNames: z.tuple([z.string(), z.string()]),
|
|
5894
|
+
quoteToken: z.string(),
|
|
5895
|
+
yesCoin: z.string(),
|
|
5896
|
+
noCoin: z.string(),
|
|
5897
|
+
yesAssetId: z.number(),
|
|
5898
|
+
noAssetId: z.number(),
|
|
5899
|
+
yesPrice: z.number().nullable(),
|
|
5900
|
+
noPrice: z.number().nullable(),
|
|
5901
|
+
yesPriceLabel: z.string().nullable(),
|
|
5902
|
+
noPriceLabel: z.string().nullable(),
|
|
5903
|
+
expiresAt: z.string().nullable(),
|
|
5904
|
+
endOfTrading: z.number(),
|
|
5905
|
+
status: z.enum(["live", "closed"]),
|
|
5906
|
+
tradable: z.boolean(),
|
|
5907
|
+
categories: z.array(z.string())
|
|
5908
|
+
});
|
|
5909
|
+
var mcpHyperliquidOutcomeFetchMarketsOutputSchema = z.object({
|
|
5910
|
+
markets: z.array(mcpHyperliquidOutcomeMarketSchema),
|
|
5911
|
+
notes: z.string(),
|
|
5912
|
+
hasMore: z.boolean(),
|
|
5913
|
+
nextOffset: z.number()
|
|
5914
|
+
});
|
|
5915
|
+
var mcpHyperliquidOutcomeFetchMarketInputSchema = z.object({
|
|
5916
|
+
chainId: z.number().int().positive().optional(),
|
|
5917
|
+
outcome: outcomeIdSchema.describe("outcome id from outcomeMeta / search venueMarketId")
|
|
5918
|
+
});
|
|
5919
|
+
var mcpHyperliquidOutcomeBookSchema = z.object({
|
|
5920
|
+
coin: z.string(),
|
|
5921
|
+
bids: z.array(z.object({ px: z.string(), sz: z.string(), n: z.number() })),
|
|
5922
|
+
asks: z.array(z.object({ px: z.string(), sz: z.string(), n: z.number() }))
|
|
5923
|
+
});
|
|
5924
|
+
var mcpHyperliquidOutcomeFetchMarketOutputSchema = mcpHyperliquidOutcomeMarketSchema.extend({
|
|
5925
|
+
yesBook: mcpHyperliquidOutcomeBookSchema,
|
|
5926
|
+
noBook: mcpHyperliquidOutcomeBookSchema,
|
|
5927
|
+
notes: z.string()
|
|
5928
|
+
});
|
|
5929
|
+
var mcpHyperliquidOutcomeFetchOrderbookInputSchema = z.object({
|
|
5930
|
+
chainId: z.number().int().positive().optional(),
|
|
5931
|
+
outcome: outcomeIdSchema,
|
|
5932
|
+
side: sideSchema.optional().describe("Default yes")
|
|
5933
|
+
});
|
|
5934
|
+
var mcpHyperliquidOutcomeFetchOrderbookOutputSchema = z.object({
|
|
5935
|
+
outcome: z.number(),
|
|
5936
|
+
side: sideSchema,
|
|
5937
|
+
book: mcpHyperliquidOutcomeBookSchema,
|
|
5938
|
+
notes: z.string()
|
|
5939
|
+
});
|
|
5940
|
+
var mcpHyperliquidOutcomeFetchAccountInputSchema = z.object({
|
|
5941
|
+
chainId: z.number().int().positive().optional(),
|
|
5942
|
+
user: z.string().min(1).describe("HyperCore account address (the MPA ethereum address).")
|
|
5943
|
+
});
|
|
5944
|
+
var mcpHyperliquidOutcomeFetchPositionsOutputSchema = z.object({
|
|
5945
|
+
quoteBalances: z.array(z.object({ coin: z.string(), total: z.string(), hold: z.string() })),
|
|
5946
|
+
outcomeBalances: z.array(
|
|
5947
|
+
z.object({
|
|
5948
|
+
coin: z.string(),
|
|
5949
|
+
total: z.string(),
|
|
5950
|
+
hold: z.string(),
|
|
5951
|
+
outcome: z.number().nullable(),
|
|
5952
|
+
side: z.enum(["yes", "no"]).nullable()
|
|
5953
|
+
})
|
|
5954
|
+
),
|
|
5955
|
+
notes: z.string()
|
|
5956
|
+
});
|
|
5957
|
+
var mcpHyperliquidOutcomeFetchOpenOrdersOutputSchema = z.object({
|
|
5958
|
+
openOrders: z.array(
|
|
5959
|
+
z.object({
|
|
5960
|
+
coin: z.string(),
|
|
5961
|
+
side: z.string(),
|
|
5962
|
+
limitPx: z.string(),
|
|
5963
|
+
sz: z.string(),
|
|
5964
|
+
oid: z.number(),
|
|
5965
|
+
timestamp: z.number(),
|
|
5966
|
+
outcome: z.number().nullable(),
|
|
5967
|
+
outcomeSide: z.enum(["yes", "no"]).nullable()
|
|
5968
|
+
})
|
|
5969
|
+
),
|
|
5970
|
+
notes: z.string()
|
|
5971
|
+
});
|
|
5972
|
+
var mcpHyperliquidOutcomeOrderInputSchema = mcpMultisignInput({
|
|
5973
|
+
outcome: outcomeIdSchema,
|
|
5974
|
+
side: sideSchema,
|
|
5975
|
+
isBuy: z.boolean().describe("true buys the side, false sells it"),
|
|
5976
|
+
limitPxHuman: z.string().min(1).describe("Limit price in quote per share, typically 0 to 1"),
|
|
5977
|
+
szHuman: z.string().min(1).describe("Share size"),
|
|
5978
|
+
tif: z.enum(["gtc", "ioc", "alo"]).optional().describe("Default gtc. ioc crosses the book."),
|
|
5979
|
+
reduceOnly: agentOptionalBooleanSchema()
|
|
5980
|
+
});
|
|
5981
|
+
var mcpHyperliquidOutcomeCancelInputSchema = mcpMultisignInput({
|
|
5982
|
+
outcome: outcomeIdSchema,
|
|
5983
|
+
side: sideSchema,
|
|
5984
|
+
oid: z.number().int().positive()
|
|
5985
|
+
});
|
|
5986
|
+
var mcpHyperliquidOutcomeSplitInputSchema = mcpMultisignInput({
|
|
5987
|
+
outcome: outcomeIdSchema,
|
|
5988
|
+
amountHuman: z.string().min(1).describe("Quote amount to split into equal Yes and No shares")
|
|
5989
|
+
});
|
|
5990
|
+
var mcpHyperliquidOutcomeMergeInputSchema = mcpMultisignInput({
|
|
5991
|
+
outcome: outcomeIdSchema,
|
|
5992
|
+
amountHuman: z.string().optional().describe("Yes+No amount to merge. Omit or amountMax for the maximum."),
|
|
5993
|
+
amountMax: agentOptionalBooleanSchema()
|
|
5994
|
+
});
|
|
5995
|
+
var mcpHyperliquidOutcomeMergeQuestionInputSchema = mcpMultisignInput({
|
|
5996
|
+
question: outcomeIdSchema.describe("question id from outcomeMeta.questions"),
|
|
5997
|
+
amountHuman: z.string().optional(),
|
|
5998
|
+
amountMax: agentOptionalBooleanSchema()
|
|
5999
|
+
});
|
|
6000
|
+
var mcpHyperliquidOutcomeNegateInputSchema = mcpMultisignInput({
|
|
6001
|
+
question: outcomeIdSchema,
|
|
6002
|
+
outcome: outcomeIdSchema,
|
|
6003
|
+
amountHuman: z.string().min(1)
|
|
6004
|
+
});
|
|
5866
6005
|
|
|
5867
6006
|
// src/agent/mcpProtocolTools.ts
|
|
5868
6007
|
function defineProtocolMcpTool(def) {
|
|
@@ -7247,6 +7386,430 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7247
7386
|
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "side", "orderId"],
|
|
7248
7387
|
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoCancelOrder" },
|
|
7249
7388
|
inputZod: mcpTrueoCancelOrderInputSchema
|
|
7389
|
+
}),
|
|
7390
|
+
defineProtocolMcpTool({
|
|
7391
|
+
name: "ctm_hyperliquid_outcome_build_order_multisign",
|
|
7392
|
+
actionId: "hyperliquidOutcome.order",
|
|
7393
|
+
protocolId: "hyperliquidOutcome",
|
|
7394
|
+
chainCategory: "evm",
|
|
7395
|
+
description: "Limit buy or sell a Hyperliquid HIP-4 outcome side. Asset id is 100000000 + 10*outcome + side (yes=0, no=1). EIP-712 Agent signature, no gas. IOC crosses the book. 30-minute expiry.",
|
|
7396
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome id", "side yes|no", "isBuy", "limitPxHuman", "szHuman", "purposeText"],
|
|
7397
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeOrder" },
|
|
7398
|
+
inputZod: mcpHyperliquidOutcomeOrderInputSchema
|
|
7399
|
+
}),
|
|
7400
|
+
defineProtocolMcpTool({
|
|
7401
|
+
name: "ctm_hyperliquid_outcome_build_cancel_multisign",
|
|
7402
|
+
actionId: "hyperliquidOutcome.cancel",
|
|
7403
|
+
protocolId: "hyperliquidOutcome",
|
|
7404
|
+
chainCategory: "evm",
|
|
7405
|
+
description: "Cancel a resting Hyperliquid outcome order by oid. EIP-712, no gas.",
|
|
7406
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "side", "oid", "purposeText"],
|
|
7407
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeCancel" },
|
|
7408
|
+
inputZod: mcpHyperliquidOutcomeCancelInputSchema
|
|
7409
|
+
}),
|
|
7410
|
+
defineProtocolMcpTool({
|
|
7411
|
+
name: "ctm_hyperliquid_outcome_build_split_multisign",
|
|
7412
|
+
actionId: "hyperliquidOutcome.split",
|
|
7413
|
+
protocolId: "hyperliquidOutcome",
|
|
7414
|
+
chainCategory: "evm",
|
|
7415
|
+
description: "Split quote tokens into equal Yes and No shares (userOutcome splitOutcome). EIP-712, no gas.",
|
|
7416
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "amountHuman", "purposeText"],
|
|
7417
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeSplit" },
|
|
7418
|
+
inputZod: mcpHyperliquidOutcomeSplitInputSchema
|
|
7419
|
+
}),
|
|
7420
|
+
defineProtocolMcpTool({
|
|
7421
|
+
name: "ctm_hyperliquid_outcome_build_merge_multisign",
|
|
7422
|
+
actionId: "hyperliquidOutcome.merge",
|
|
7423
|
+
protocolId: "hyperliquidOutcome",
|
|
7424
|
+
chainCategory: "evm",
|
|
7425
|
+
description: "Merge Yes and No shares back into quote (userOutcome mergeOutcome). Omit amount or set amountMax to merge the maximum. EIP-712, no gas.",
|
|
7426
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "purposeText"],
|
|
7427
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeMerge" },
|
|
7428
|
+
inputZod: mcpHyperliquidOutcomeMergeInputSchema
|
|
7429
|
+
}),
|
|
7430
|
+
defineProtocolMcpTool({
|
|
7431
|
+
name: "ctm_hyperliquid_outcome_build_merge_question_multisign",
|
|
7432
|
+
actionId: "hyperliquidOutcome.merge-question",
|
|
7433
|
+
protocolId: "hyperliquidOutcome",
|
|
7434
|
+
chainCategory: "evm",
|
|
7435
|
+
description: "Merge Yes shares across one question into quote tokens. EIP-712, no gas.",
|
|
7436
|
+
prerequisites: ["keyGenId", "chainId 999", "question id", "purposeText"],
|
|
7437
|
+
handler: {
|
|
7438
|
+
importPath: "protocols/evm/hyperliquidOutcome",
|
|
7439
|
+
exportName: "buildEvmMultisignBodyHyperliquidOutcomeMergeQuestion"
|
|
7440
|
+
},
|
|
7441
|
+
inputZod: mcpHyperliquidOutcomeMergeQuestionInputSchema
|
|
7442
|
+
}),
|
|
7443
|
+
defineProtocolMcpTool({
|
|
7444
|
+
name: "ctm_hyperliquid_outcome_build_negate_multisign",
|
|
7445
|
+
actionId: "hyperliquidOutcome.negate",
|
|
7446
|
+
protocolId: "hyperliquidOutcome",
|
|
7447
|
+
chainCategory: "evm",
|
|
7448
|
+
description: "Convert No shares of one outcome into Yes shares of the other outcomes in the question. EIP-712, no gas.",
|
|
7449
|
+
prerequisites: ["keyGenId", "chainId 999", "question", "outcome", "amountHuman", "purposeText"],
|
|
7450
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeNegate" },
|
|
7451
|
+
inputZod: mcpHyperliquidOutcomeNegateInputSchema
|
|
7452
|
+
})
|
|
7453
|
+
];
|
|
7454
|
+
var catalogQuery = {
|
|
7455
|
+
apiBase: z.string().optional().describe("Override https://app-api.continuumdao.org"),
|
|
7456
|
+
rpcUrl: z.string().optional().describe("Linea RPC used when the marketplace API is offline"),
|
|
7457
|
+
chainId: z.number().int().optional().describe("59144"),
|
|
7458
|
+
includeInactive: z.boolean().optional().describe("Include closed sales, offers, and settled auctions"),
|
|
7459
|
+
paymentToken: evmAddressSchema.optional(),
|
|
7460
|
+
tokenId: z.string().optional(),
|
|
7461
|
+
creator: evmAddressSchema.optional(),
|
|
7462
|
+
seller: evmAddressSchema.optional(),
|
|
7463
|
+
viewer: evmAddressSchema.optional(),
|
|
7464
|
+
limit: z.number().int().optional(),
|
|
7465
|
+
cursor: z.string().optional().describe("nextCursor from the previous page")
|
|
7466
|
+
};
|
|
7467
|
+
var mcpContinuumDaoMarketplaceSearchInputSchema = z.object({
|
|
7468
|
+
apiBase: catalogQuery.apiBase,
|
|
7469
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7470
|
+
chainId: catalogQuery.chainId,
|
|
7471
|
+
kind: z.enum(["listing", "auction", "both"]).optional().describe("Default listing. Use auction or both only when the user wants to bid."),
|
|
7472
|
+
paymentToken: evmAddressSchema.optional().describe("Required when ranking by price and more than one payment token is listed"),
|
|
7473
|
+
minLockedCtm: z.string().optional().describe('Minimum locked CTM, human amount such as "1000"'),
|
|
7474
|
+
maxLockedCtm: z.string().optional().describe("Maximum locked CTM, human amount"),
|
|
7475
|
+
unlockBefore: z.string().optional().describe("ISO date or unix seconds"),
|
|
7476
|
+
unlockAfter: z.string().optional().describe("ISO date or unix seconds"),
|
|
7477
|
+
maxUnlockMonths: z.number().optional().describe("Still locked, and unlocks within this many 30-day months"),
|
|
7478
|
+
sort: z.enum(["pricePerLockedCtm", "price", "locked", "unlock", "deadline"]).optional().describe("Default pricePerLockedCtm, cheapest first. locked defaults to most CTM. unlock and deadline default to soonest."),
|
|
7479
|
+
sortDirection: z.enum(["asc", "desc"]).optional(),
|
|
7480
|
+
limit: z.number().int().min(1).max(25).optional().describe("Ranked rows to return, default 10"),
|
|
7481
|
+
executor: evmAddressSchema.optional().describe("KeyGen address. veCTMs this address sells are omitted."),
|
|
7482
|
+
excludeOwned: z.boolean().optional()
|
|
7483
|
+
});
|
|
7484
|
+
var mcpContinuumDaoMarketplaceFeeAlternativeInputSchema = z.object({
|
|
7485
|
+
apiBase: catalogQuery.apiBase,
|
|
7486
|
+
rpcUrl: z.string().min(1).describe("Linea RPC. Required to read the monthly fee, threshold, and voting power."),
|
|
7487
|
+
chainId: catalogQuery.chainId,
|
|
7488
|
+
payment: z.enum(["fee", "ctm"]).optional().describe("fee matches a USDC month. ctm matches a CTM month. Default fee."),
|
|
7489
|
+
executor: evmAddressSchema.optional().describe("KeyGen address. veCTMs this address sells are omitted.")
|
|
7490
|
+
});
|
|
7491
|
+
var mcpContinuumDaoMarketplaceFetchListingsInputSchema = z.object(catalogQuery);
|
|
7492
|
+
var mcpContinuumDaoMarketplaceFetchOfferingsInputSchema = z.object(catalogQuery);
|
|
7493
|
+
var mcpContinuumDaoMarketplaceFetchAuctionsInputSchema = z.object(catalogQuery);
|
|
7494
|
+
var mcpContinuumDaoMarketplaceFetchConfigInputSchema = z.object({
|
|
7495
|
+
apiBase: catalogQuery.apiBase,
|
|
7496
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7497
|
+
chainId: catalogQuery.chainId
|
|
7498
|
+
});
|
|
7499
|
+
var mcpContinuumDaoMarketplaceFetchTokenInputSchema = z.object({
|
|
7500
|
+
apiBase: catalogQuery.apiBase,
|
|
7501
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7502
|
+
chainId: catalogQuery.chainId,
|
|
7503
|
+
tokenId: z.string().min(1),
|
|
7504
|
+
viewer: catalogQuery.viewer
|
|
7505
|
+
});
|
|
7506
|
+
var mcpContinuumDaoMarketplaceFetchActivityInputSchema = z.object({
|
|
7507
|
+
apiBase: catalogQuery.apiBase,
|
|
7508
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7509
|
+
chainId: catalogQuery.chainId,
|
|
7510
|
+
address: evmAddressSchema,
|
|
7511
|
+
limit: catalogQuery.limit
|
|
7512
|
+
});
|
|
7513
|
+
var mcpContinuumDaoMarketplaceFetchFeePreviewInputSchema = z.object({
|
|
7514
|
+
apiBase: catalogQuery.apiBase,
|
|
7515
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7516
|
+
chainId: catalogQuery.chainId,
|
|
7517
|
+
tokenId: z.string().min(1),
|
|
7518
|
+
price: z.string().min(1).describe("Price in payment-token wei")
|
|
7519
|
+
});
|
|
7520
|
+
var source = z.enum(["api", "logs"]);
|
|
7521
|
+
var loose = z.record(z.unknown());
|
|
7522
|
+
var mcpContinuumDaoMarketplaceFeeAlternativeOutputSchema = z.object({
|
|
7523
|
+
payment: z.enum(["fee", "ctm"]),
|
|
7524
|
+
thresholdHuman: z.string(),
|
|
7525
|
+
monthlyFeeHuman: z.string(),
|
|
7526
|
+
monthlyFeeSymbol: z.string(),
|
|
7527
|
+
annualFeeHuman: z.string(),
|
|
7528
|
+
annualFeeCtmHuman: z.string(),
|
|
7529
|
+
example: loose.nullable(),
|
|
7530
|
+
summary: z.string(),
|
|
7531
|
+
source
|
|
7532
|
+
}).passthrough();
|
|
7533
|
+
var mcpContinuumDaoMarketplaceSearchOutputSchema = z.object({
|
|
7534
|
+
sort: z.string(),
|
|
7535
|
+
sortDirection: z.enum(["asc", "desc"]),
|
|
7536
|
+
paymentToken: z.string().nullable(),
|
|
7537
|
+
scanned: z.number(),
|
|
7538
|
+
truncated: z.boolean(),
|
|
7539
|
+
items: z.array(loose),
|
|
7540
|
+
source
|
|
7541
|
+
}).passthrough();
|
|
7542
|
+
var mcpContinuumDaoMarketplaceListOutputSchema = z.object({
|
|
7543
|
+
items: z.array(loose),
|
|
7544
|
+
nextCursor: z.string().nullable().optional(),
|
|
7545
|
+
source
|
|
7546
|
+
}).passthrough();
|
|
7547
|
+
var mcpContinuumDaoMarketplaceConfigOutputSchema = z.object({ source }).passthrough();
|
|
7548
|
+
var mcpContinuumDaoMarketplaceTokenOutputSchema = z.object({ source }).passthrough();
|
|
7549
|
+
var mcpContinuumDaoMarketplaceActivityOutputSchema = z.object({
|
|
7550
|
+
address: z.string(),
|
|
7551
|
+
orders: z.array(loose),
|
|
7552
|
+
auctions: z.array(loose),
|
|
7553
|
+
source
|
|
7554
|
+
}).passthrough();
|
|
7555
|
+
var mcpContinuumDaoMarketplaceFeeOutputSchema = z.object({ source }).passthrough();
|
|
7556
|
+
var wei = z.union([z.string(), z.number()]);
|
|
7557
|
+
var deadline = z.union([z.string(), z.number()]).describe("Unix seconds");
|
|
7558
|
+
var mcpContinuumDaoMarketplaceCreateListingInputSchema = mcpMultisignInput({
|
|
7559
|
+
tokenId: wei,
|
|
7560
|
+
paymentToken: evmAddressSchema,
|
|
7561
|
+
askWei: wei,
|
|
7562
|
+
deadline
|
|
7563
|
+
});
|
|
7564
|
+
var mcpContinuumDaoMarketplaceDelistInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7565
|
+
var mcpContinuumDaoMarketplaceFulfillListingInputSchema = mcpMultisignInput({
|
|
7566
|
+
tokenId: wei,
|
|
7567
|
+
seller: evmAddressSchema,
|
|
7568
|
+
paymentToken: evmAddressSchema,
|
|
7569
|
+
priceWei: wei
|
|
7570
|
+
});
|
|
7571
|
+
var mcpContinuumDaoMarketplaceCreateOfferingInputSchema = mcpMultisignInput({
|
|
7572
|
+
tokenId: wei,
|
|
7573
|
+
paymentToken: evmAddressSchema,
|
|
7574
|
+
bidWei: wei,
|
|
7575
|
+
deadline
|
|
7576
|
+
});
|
|
7577
|
+
var mcpContinuumDaoMarketplaceRescindInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7578
|
+
var mcpContinuumDaoMarketplaceFulfillOfferingInputSchema = mcpMultisignInput({
|
|
7579
|
+
tokenId: wei,
|
|
7580
|
+
buyer: evmAddressSchema,
|
|
7581
|
+
paymentToken: evmAddressSchema,
|
|
7582
|
+
priceWei: wei
|
|
7583
|
+
});
|
|
7584
|
+
var mcpContinuumDaoMarketplaceCreateAuctionInputSchema = mcpMultisignInput({
|
|
7585
|
+
tokenId: wei,
|
|
7586
|
+
paymentToken: evmAddressSchema,
|
|
7587
|
+
deadline,
|
|
7588
|
+
reserveWei: wei,
|
|
7589
|
+
minIncrementWei: wei
|
|
7590
|
+
});
|
|
7591
|
+
var mcpContinuumDaoMarketplaceCancelAuctionInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7592
|
+
var mcpContinuumDaoMarketplaceAuctionBidInputSchema = mcpMultisignInput({
|
|
7593
|
+
tokenId: wei,
|
|
7594
|
+
seller: evmAddressSchema,
|
|
7595
|
+
priceWei: wei
|
|
7596
|
+
});
|
|
7597
|
+
var mcpContinuumDaoMarketplaceSettleAuctionInputSchema = mcpMultisignInput({
|
|
7598
|
+
tokenId: wei,
|
|
7599
|
+
seller: evmAddressSchema
|
|
7600
|
+
});
|
|
7601
|
+
|
|
7602
|
+
// src/agent/mcpMarketplaceTools.ts
|
|
7603
|
+
var PROTOCOL = "continuum-dao-marketplace";
|
|
7604
|
+
var IMPORT_PATH = "protocols/evm/continuum-dao";
|
|
7605
|
+
function defineRead(def) {
|
|
7606
|
+
return {
|
|
7607
|
+
name: def.name,
|
|
7608
|
+
actionId: def.actionId,
|
|
7609
|
+
protocolId: PROTOCOL,
|
|
7610
|
+
chainCategory: "evm",
|
|
7611
|
+
description: def.description,
|
|
7612
|
+
prerequisites: def.prerequisites,
|
|
7613
|
+
followUp: def.followUp,
|
|
7614
|
+
handler: { importPath: IMPORT_PATH, exportName: def.exportName },
|
|
7615
|
+
inputZod: def.inputZod,
|
|
7616
|
+
outputZod: def.outputZod,
|
|
7617
|
+
inputSchema: zodSchemaToMcpJsonSchema(def.inputZod),
|
|
7618
|
+
outputSchema: zodSchemaToMcpJsonSchema(def.outputZod),
|
|
7619
|
+
parseInput: (data) => def.inputZod.parse(data),
|
|
7620
|
+
parseOutput: (data) => def.outputZod.parse(data)
|
|
7621
|
+
};
|
|
7622
|
+
}
|
|
7623
|
+
function defineWrite(def) {
|
|
7624
|
+
const meta = withMultisignSubmitMcpMeta(def.description, MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
7625
|
+
const handler = { importPath: IMPORT_PATH, exportName: def.exportName };
|
|
7626
|
+
return {
|
|
7627
|
+
name: def.name,
|
|
7628
|
+
actionId: def.actionId,
|
|
7629
|
+
protocolId: PROTOCOL,
|
|
7630
|
+
chainCategory: "evm",
|
|
7631
|
+
description: meta.description,
|
|
7632
|
+
prerequisites: def.prerequisites,
|
|
7633
|
+
followUp: meta.followUp,
|
|
7634
|
+
handler,
|
|
7635
|
+
inputZod: def.inputZod,
|
|
7636
|
+
outputZod: mcpServerSubmitOutputSchema,
|
|
7637
|
+
inputSchema: agentFacingMultisignJsonSchema(def.inputZod),
|
|
7638
|
+
outputSchema: zodSchemaToMcpJsonSchema(mcpServerSubmitOutputSchema),
|
|
7639
|
+
parseInput: (data) => def.inputZod.parse(data),
|
|
7640
|
+
parseOutput: (data) => mcpServerSubmitOutputSchema.parse(data)
|
|
7641
|
+
};
|
|
7642
|
+
}
|
|
7643
|
+
var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
7644
|
+
defineRead({
|
|
7645
|
+
name: "ctm_continuum_dao_marketplace_fetch_config",
|
|
7646
|
+
actionId: "continuum-dao-marketplace.fetch-config",
|
|
7647
|
+
description: "Marketplace config: payment tokens, WETH, duration bounds, fee tiers. Falls back to the Linea contract when the API is down.",
|
|
7648
|
+
prerequisites: ["chainId 59144", "rpcUrl when the API may be offline"],
|
|
7649
|
+
followUp: ["ctm_continuum_dao_marketplace_search", "ctm_continuum_dao_marketplace_fetch_listings", "ctm_continuum_dao_marketplace_fetch_auctions"],
|
|
7650
|
+
inputZod: mcpContinuumDaoMarketplaceFetchConfigInputSchema,
|
|
7651
|
+
outputZod: mcpContinuumDaoMarketplaceConfigOutputSchema,
|
|
7652
|
+
exportName: "fetchContinuumDaoMarketplaceConfig"
|
|
7653
|
+
}),
|
|
7654
|
+
defineRead({
|
|
7655
|
+
name: "ctm_continuum_dao_marketplace_fee_alternative",
|
|
7656
|
+
actionId: "continuum-dao-marketplace.fee-alternative",
|
|
7657
|
+
description: "Alternative to paying a KeyGen month in the fee token or CTM. Returns the live monthly fee, 12 times that fee, the veCTM threshold, and one direct listing whose locked CTM and voting power are both above the threshold. Auctions are excluded. Relay the summary, then continue the paid month. Buy the listing only if the user chooses it. Skip this when the month is already waived.",
|
|
7658
|
+
prerequisites: ["rpcUrl", "payment fee or ctm"],
|
|
7659
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign"],
|
|
7660
|
+
inputZod: mcpContinuumDaoMarketplaceFeeAlternativeInputSchema,
|
|
7661
|
+
outputZod: mcpContinuumDaoMarketplaceFeeAlternativeOutputSchema,
|
|
7662
|
+
exportName: "quoteContinuumDaoMarketplaceFeeAlternative"
|
|
7663
|
+
}),
|
|
7664
|
+
defineRead({
|
|
7665
|
+
name: "ctm_continuum_dao_marketplace_search",
|
|
7666
|
+
actionId: "continuum-dao-marketplace.search",
|
|
7667
|
+
description: "Rank veCTMs for sale. Returns a short list already sorted by price per locked CTM, price, locked CTM, unlock, or deadline. Filters: min/max locked CTM, unlock window, maxUnlockMonths. Pass paymentToken to compare prices. Pass executor to drop veCTMs this KeyGen sells. Use this to choose a buy. Do not fetch the raw listing page and then offer to sort it.",
|
|
7668
|
+
prerequisites: ["chainId 59144", "rpcUrl when lock snapshots are missing"],
|
|
7669
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign", "ctm_continuum_dao_marketplace_build_auction_bid_multisign"],
|
|
7670
|
+
inputZod: mcpContinuumDaoMarketplaceSearchInputSchema,
|
|
7671
|
+
outputZod: mcpContinuumDaoMarketplaceSearchOutputSchema,
|
|
7672
|
+
exportName: "searchContinuumDaoMarketplace"
|
|
7673
|
+
}),
|
|
7674
|
+
defineRead({
|
|
7675
|
+
name: "ctm_continuum_dao_marketplace_fetch_listings",
|
|
7676
|
+
actionId: "continuum-dao-marketplace.fetch-listings",
|
|
7677
|
+
description: "Unfiltered page of open veCTM listings, created order, up to 100, with nextCursor. includeInactive adds past sales. To choose a buy by price, locked CTM, or unlock time, use search instead.",
|
|
7678
|
+
prerequisites: ["chainId 59144"],
|
|
7679
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign"],
|
|
7680
|
+
inputZod: mcpContinuumDaoMarketplaceFetchListingsInputSchema,
|
|
7681
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7682
|
+
exportName: "fetchContinuumDaoMarketplaceListings"
|
|
7683
|
+
}),
|
|
7684
|
+
defineRead({
|
|
7685
|
+
name: "ctm_continuum_dao_marketplace_fetch_offerings",
|
|
7686
|
+
actionId: "continuum-dao-marketplace.fetch-offerings",
|
|
7687
|
+
description: "Open veCTM offerings. includeInactive adds fulfilled and rescinded rows. API first, then marketplace logs.",
|
|
7688
|
+
prerequisites: ["chainId 59144"],
|
|
7689
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_offering_multisign"],
|
|
7690
|
+
inputZod: mcpContinuumDaoMarketplaceFetchOfferingsInputSchema,
|
|
7691
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7692
|
+
exportName: "fetchContinuumDaoMarketplaceOfferings"
|
|
7693
|
+
}),
|
|
7694
|
+
defineRead({
|
|
7695
|
+
name: "ctm_continuum_dao_marketplace_fetch_auctions",
|
|
7696
|
+
actionId: "continuum-dao-marketplace.fetch-auctions",
|
|
7697
|
+
description: "Live veCTM auctions (Pending, Active, Complete). includeInactive adds sold, canceled, and expired. Each auction includes bids.",
|
|
7698
|
+
prerequisites: ["chainId 59144"],
|
|
7699
|
+
followUp: ["ctm_continuum_dao_marketplace_build_auction_bid_multisign", "ctm_continuum_dao_marketplace_build_settle_auction_multisign"],
|
|
7700
|
+
inputZod: mcpContinuumDaoMarketplaceFetchAuctionsInputSchema,
|
|
7701
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7702
|
+
exportName: "fetchContinuumDaoMarketplaceAuctions"
|
|
7703
|
+
}),
|
|
7704
|
+
defineRead({
|
|
7705
|
+
name: "ctm_continuum_dao_marketplace_fetch_token",
|
|
7706
|
+
actionId: "continuum-dao-marketplace.fetch-token",
|
|
7707
|
+
description: "One veCTM: live listing, offerings, and auction, plus history of closed sales and auctions with bids.",
|
|
7708
|
+
prerequisites: ["tokenId"],
|
|
7709
|
+
followUp: ["ctm_continuum_dao_marketplace_fetch_auctions"],
|
|
7710
|
+
inputZod: mcpContinuumDaoMarketplaceFetchTokenInputSchema,
|
|
7711
|
+
outputZod: mcpContinuumDaoMarketplaceTokenOutputSchema,
|
|
7712
|
+
exportName: "fetchContinuumDaoMarketplaceToken"
|
|
7713
|
+
}),
|
|
7714
|
+
defineRead({
|
|
7715
|
+
name: "ctm_continuum_dao_marketplace_fetch_activity",
|
|
7716
|
+
actionId: "continuum-dao-marketplace.fetch-activity",
|
|
7717
|
+
description: "One address\u2019s marketplace orders and auctions, including past sales and bids.",
|
|
7718
|
+
prerequisites: ["address"],
|
|
7719
|
+
followUp: ["ctm_continuum_dao_marketplace_fetch_token"],
|
|
7720
|
+
inputZod: mcpContinuumDaoMarketplaceFetchActivityInputSchema,
|
|
7721
|
+
outputZod: mcpContinuumDaoMarketplaceActivityOutputSchema,
|
|
7722
|
+
exportName: "fetchContinuumDaoMarketplaceActivity"
|
|
7723
|
+
}),
|
|
7724
|
+
defineRead({
|
|
7725
|
+
name: "ctm_continuum_dao_marketplace_fetch_fee_preview",
|
|
7726
|
+
actionId: "continuum-dao-marketplace.fetch-fee-preview",
|
|
7727
|
+
description: "Protocol fee for a veCTM price. Uses the API, then on-chain fee tiers.",
|
|
7728
|
+
prerequisites: ["tokenId", "price wei"],
|
|
7729
|
+
followUp: ["ctm_continuum_dao_marketplace_build_create_listing_multisign"],
|
|
7730
|
+
inputZod: mcpContinuumDaoMarketplaceFetchFeePreviewInputSchema,
|
|
7731
|
+
outputZod: mcpContinuumDaoMarketplaceFeeOutputSchema,
|
|
7732
|
+
exportName: "fetchContinuumDaoMarketplaceFeePreview"
|
|
7733
|
+
}),
|
|
7734
|
+
defineWrite({
|
|
7735
|
+
name: "ctm_continuum_dao_marketplace_build_create_listing_multisign",
|
|
7736
|
+
actionId: "continuum-dao-marketplace.create-listing",
|
|
7737
|
+
description: "List a veCTM. Approves the marketplace for the token id when needed. Linea only.",
|
|
7738
|
+
prerequisites: ["keyGen", "tokenId owned by the KeyGen", "askWei", "deadline"],
|
|
7739
|
+
inputZod: mcpContinuumDaoMarketplaceCreateListingInputSchema,
|
|
7740
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateListing"
|
|
7741
|
+
}),
|
|
7742
|
+
defineWrite({
|
|
7743
|
+
name: "ctm_continuum_dao_marketplace_build_delist_multisign",
|
|
7744
|
+
actionId: "continuum-dao-marketplace.delist",
|
|
7745
|
+
description: "Delist this KeyGen\u2019s open veCTM listing.",
|
|
7746
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7747
|
+
inputZod: mcpContinuumDaoMarketplaceDelistInputSchema,
|
|
7748
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceDelist"
|
|
7749
|
+
}),
|
|
7750
|
+
defineWrite({
|
|
7751
|
+
name: "ctm_continuum_dao_marketplace_build_fulfill_listing_multisign",
|
|
7752
|
+
actionId: "continuum-dao-marketplace.fulfill-listing",
|
|
7753
|
+
description: "Buy a listed veCTM. Refuses when this KeyGen already owns it or is the seller. WETH sends msg.value.",
|
|
7754
|
+
prerequisites: ["keyGen", "tokenId", "seller", "priceWei"],
|
|
7755
|
+
inputZod: mcpContinuumDaoMarketplaceFulfillListingInputSchema,
|
|
7756
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceFulfillListing"
|
|
7757
|
+
}),
|
|
7758
|
+
defineWrite({
|
|
7759
|
+
name: "ctm_continuum_dao_marketplace_build_create_offering_multisign",
|
|
7760
|
+
actionId: "continuum-dao-marketplace.create-offering",
|
|
7761
|
+
description: "Offer on a veCTM this KeyGen does not own. WETH sends msg.value and still approves WETH for later fulfillment.",
|
|
7762
|
+
prerequisites: ["keyGen", "tokenId", "bidWei", "deadline"],
|
|
7763
|
+
inputZod: mcpContinuumDaoMarketplaceCreateOfferingInputSchema,
|
|
7764
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateOffering"
|
|
7765
|
+
}),
|
|
7766
|
+
defineWrite({
|
|
7767
|
+
name: "ctm_continuum_dao_marketplace_build_rescind_multisign",
|
|
7768
|
+
actionId: "continuum-dao-marketplace.rescind",
|
|
7769
|
+
description: "Rescind this KeyGen\u2019s open offering.",
|
|
7770
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7771
|
+
inputZod: mcpContinuumDaoMarketplaceRescindInputSchema,
|
|
7772
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceRescind"
|
|
7773
|
+
}),
|
|
7774
|
+
defineWrite({
|
|
7775
|
+
name: "ctm_continuum_dao_marketplace_build_fulfill_offering_multisign",
|
|
7776
|
+
actionId: "continuum-dao-marketplace.fulfill-offering",
|
|
7777
|
+
description: "Accept an offering on a veCTM this KeyGen owns. Refuses an attached KeyGen.",
|
|
7778
|
+
prerequisites: ["keyGen", "tokenId", "buyer", "priceWei"],
|
|
7779
|
+
inputZod: mcpContinuumDaoMarketplaceFulfillOfferingInputSchema,
|
|
7780
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceFulfillOffering"
|
|
7781
|
+
}),
|
|
7782
|
+
defineWrite({
|
|
7783
|
+
name: "ctm_continuum_dao_marketplace_build_create_auction_multisign",
|
|
7784
|
+
actionId: "continuum-dao-marketplace.create-auction",
|
|
7785
|
+
description: "Start an auction and escrow the veCTM. Refuses an attached KeyGen.",
|
|
7786
|
+
prerequisites: ["keyGen", "tokenId", "reserveWei", "minIncrementWei", "deadline"],
|
|
7787
|
+
inputZod: mcpContinuumDaoMarketplaceCreateAuctionInputSchema,
|
|
7788
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateAuction"
|
|
7789
|
+
}),
|
|
7790
|
+
defineWrite({
|
|
7791
|
+
name: "ctm_continuum_dao_marketplace_build_cancel_auction_multisign",
|
|
7792
|
+
actionId: "continuum-dao-marketplace.cancel-auction",
|
|
7793
|
+
description: "Cancel a pending auction that has no bids. The veCTM returns to the seller.",
|
|
7794
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7795
|
+
inputZod: mcpContinuumDaoMarketplaceCancelAuctionInputSchema,
|
|
7796
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCancelAuction"
|
|
7797
|
+
}),
|
|
7798
|
+
defineWrite({
|
|
7799
|
+
name: "ctm_continuum_dao_marketplace_build_auction_bid_multisign",
|
|
7800
|
+
actionId: "continuum-dao-marketplace.auction-bid",
|
|
7801
|
+
description: "Bid on a live auction. Refuses when this KeyGen is the seller or already owns the veCTM.",
|
|
7802
|
+
prerequisites: ["keyGen", "tokenId", "seller", "priceWei"],
|
|
7803
|
+
inputZod: mcpContinuumDaoMarketplaceAuctionBidInputSchema,
|
|
7804
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceAuctionBid"
|
|
7805
|
+
}),
|
|
7806
|
+
defineWrite({
|
|
7807
|
+
name: "ctm_continuum_dao_marketplace_build_settle_auction_multisign",
|
|
7808
|
+
actionId: "continuum-dao-marketplace.settle-auction",
|
|
7809
|
+
description: "Settle a completed or expired auction. A completed auction transfers the veCTM to the highest bidder.",
|
|
7810
|
+
prerequisites: ["keyGen", "tokenId", "seller"],
|
|
7811
|
+
inputZod: mcpContinuumDaoMarketplaceSettleAuctionInputSchema,
|
|
7812
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceSettleAuction"
|
|
7250
7813
|
})
|
|
7251
7814
|
];
|
|
7252
7815
|
|
|
@@ -9701,12 +10264,72 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9701
10264
|
inputZod: mcpDeriveFetchOpenOrdersInputSchema,
|
|
9702
10265
|
outputZod: mcpDeriveFetchOpenOrdersOutputSchema
|
|
9703
10266
|
}),
|
|
10267
|
+
defineMcpTool({
|
|
10268
|
+
name: "ctm_hyperliquid_outcome_fetch_markets",
|
|
10269
|
+
actionId: "hyperliquidOutcome.fetch-markets",
|
|
10270
|
+
protocolId: "hyperliquidOutcome",
|
|
10271
|
+
chainCategory: "evm",
|
|
10272
|
+
description: "Live Hyperliquid HIP-4 outcome markets from outcomeMeta, with Yes/No mids. Optional query substring. Chain 999.",
|
|
10273
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome"],
|
|
10274
|
+
followUp: ["ctm_hyperliquid_outcome_fetch_market", "ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10275
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchMarketsSummary" },
|
|
10276
|
+
inputZod: mcpHyperliquidOutcomeFetchMarketsInputSchema,
|
|
10277
|
+
outputZod: mcpHyperliquidOutcomeFetchMarketsOutputSchema
|
|
10278
|
+
}),
|
|
10279
|
+
defineMcpTool({
|
|
10280
|
+
name: "ctm_hyperliquid_outcome_fetch_market",
|
|
10281
|
+
actionId: "hyperliquidOutcome.fetch-market",
|
|
10282
|
+
protocolId: "hyperliquidOutcome",
|
|
10283
|
+
chainCategory: "evm",
|
|
10284
|
+
description: "One Hyperliquid outcome market plus both Yes and No order books.",
|
|
10285
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "outcome id"],
|
|
10286
|
+
followUp: ["ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10287
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchMarketSummary" },
|
|
10288
|
+
inputZod: mcpHyperliquidOutcomeFetchMarketInputSchema,
|
|
10289
|
+
outputZod: mcpHyperliquidOutcomeFetchMarketOutputSchema
|
|
10290
|
+
}),
|
|
10291
|
+
defineMcpTool({
|
|
10292
|
+
name: "ctm_hyperliquid_outcome_fetch_orderbook",
|
|
10293
|
+
actionId: "hyperliquidOutcome.fetch-orderbook",
|
|
10294
|
+
protocolId: "hyperliquidOutcome",
|
|
10295
|
+
chainCategory: "evm",
|
|
10296
|
+
description: "l2Book for one Hyperliquid outcome side (default yes).",
|
|
10297
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "outcome id"],
|
|
10298
|
+
followUp: ["ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10299
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchOrderbookSummary" },
|
|
10300
|
+
inputZod: mcpHyperliquidOutcomeFetchOrderbookInputSchema,
|
|
10301
|
+
outputZod: mcpHyperliquidOutcomeFetchOrderbookOutputSchema
|
|
10302
|
+
}),
|
|
10303
|
+
defineMcpTool({
|
|
10304
|
+
name: "ctm_hyperliquid_outcome_fetch_positions",
|
|
10305
|
+
actionId: "hyperliquidOutcome.fetch-positions",
|
|
10306
|
+
protocolId: "hyperliquidOutcome",
|
|
10307
|
+
chainCategory: "evm",
|
|
10308
|
+
description: "Quote balances and HIP-4 share balances (+encoding) for a HyperCore address. Not ERC20s \u2014 do not add_to_token_registry.",
|
|
10309
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "user address"],
|
|
10310
|
+
followUp: ["ctm_hyperliquid_outcome_build_merge_multisign"],
|
|
10311
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchPositionsSummary" },
|
|
10312
|
+
inputZod: mcpHyperliquidOutcomeFetchAccountInputSchema,
|
|
10313
|
+
outputZod: mcpHyperliquidOutcomeFetchPositionsOutputSchema
|
|
10314
|
+
}),
|
|
10315
|
+
defineMcpTool({
|
|
10316
|
+
name: "ctm_hyperliquid_outcome_fetch_open_orders",
|
|
10317
|
+
actionId: "hyperliquidOutcome.fetch-open-orders",
|
|
10318
|
+
protocolId: "hyperliquidOutcome",
|
|
10319
|
+
chainCategory: "evm",
|
|
10320
|
+
description: "Open Hyperliquid outcome orders (#encoding coins) for a user.",
|
|
10321
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "user address"],
|
|
10322
|
+
followUp: ["ctm_hyperliquid_outcome_build_cancel_multisign"],
|
|
10323
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchOpenOrdersSummary" },
|
|
10324
|
+
inputZod: mcpHyperliquidOutcomeFetchAccountInputSchema,
|
|
10325
|
+
outputZod: mcpHyperliquidOutcomeFetchOpenOrdersOutputSchema
|
|
10326
|
+
}),
|
|
9704
10327
|
defineMcpTool({
|
|
9705
10328
|
name: "search_prediction_markets",
|
|
9706
10329
|
actionId: "prediction-markets.search",
|
|
9707
10330
|
protocolId: "prediction-markets",
|
|
9708
10331
|
chainCategory: "evm",
|
|
9709
|
-
description: 'Venue-agnostic prediction market search
|
|
10332
|
+
description: 'Venue-agnostic prediction market search (Trueo on Base and Hyperliquid outcome markets). Pass the operator topic verbatim as query. Omit venues to search both. Restrict with venues ["trueo"] or ["hyperliquid"]. Do not set trending when query is set. If hasMore, page Trueo with offset/nextOffset. Hyperliquid matches are included on the first page. After a pick, get_prediction_market (venue from the row). Trueo writes: load_defi_protocol trueo. Hyperliquid bets: load_defi_protocol hyperliquidOutcome.',
|
|
9710
10333
|
prerequisites: [],
|
|
9711
10334
|
followUp: ["get_prediction_market", "load_defi_protocol", "get_defi_protocol_skill"],
|
|
9712
10335
|
handler: { importPath: "protocols/evm/trueo", exportName: "searchPredictionMarketsSummary" },
|
|
@@ -9718,7 +10341,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9718
10341
|
actionId: "prediction-markets.get",
|
|
9719
10342
|
protocolId: "prediction-markets",
|
|
9720
10343
|
chainCategory: "evm",
|
|
9721
|
-
description:
|
|
10344
|
+
description: "Full selected prediction market. venue defaults to trueo (market address). For Hyperliquid pass venue hyperliquid and venueMarketId = outcome id. Does not require load_defi_protocol. Trueo writes stay behind load_defi_protocol trueo. Hyperliquid bets stay behind load_defi_protocol hyperliquidOutcome (ctm_hyperliquid_outcome_build_order_multisign). Yes/No Hyperliquid shares are not ERC20s \u2014 do not add_to_token_registry.",
|
|
9722
10345
|
prerequisites: ["venueMarketId from search_prediction_markets"],
|
|
9723
10346
|
followUp: [
|
|
9724
10347
|
"load_defi_protocol",
|
|
@@ -9835,7 +10458,8 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9835
10458
|
];
|
|
9836
10459
|
var MCP_TOOL_DEFINITIONS = [
|
|
9837
10460
|
...CORE_MCP_TOOL_DEFINITIONS,
|
|
9838
|
-
...MCP_PROTOCOL_TOOL_DEFINITIONS
|
|
10461
|
+
...MCP_PROTOCOL_TOOL_DEFINITIONS,
|
|
10462
|
+
...MCP_MARKETPLACE_TOOL_DEFINITIONS
|
|
9839
10463
|
];
|
|
9840
10464
|
function buildToolSchemaMap(kind) {
|
|
9841
10465
|
const out = {};
|
|
@@ -11656,12 +12280,52 @@ registerProtocolModule(aerodromeProtocolModule);
|
|
|
11656
12280
|
|
|
11657
12281
|
// src/protocols/evm/continuum-dao/index.ts
|
|
11658
12282
|
init_constants2();
|
|
12283
|
+
|
|
12284
|
+
// src/protocols/evm/continuum-dao/marketplaceModule.ts
|
|
12285
|
+
init_constants2();
|
|
12286
|
+
var common = ["keyGen", "purposeText", "useCustomGas"];
|
|
12287
|
+
var continuumDaoMarketplaceProtocolModule = {
|
|
12288
|
+
id: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID,
|
|
12289
|
+
chainCategory: "evm",
|
|
12290
|
+
isChainSupported(ctx) {
|
|
12291
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
12292
|
+
const n = typeof ctx.chainId === "number" ? ctx.chainId : Number.parseInt(String(ctx.chainId), 10);
|
|
12293
|
+
return n === CONTINUUM_DAO_LINEA_CHAIN_ID;
|
|
12294
|
+
},
|
|
12295
|
+
isTokenSupported(token) {
|
|
12296
|
+
return token.category === "evm" && (token.kind === "erc20" || token.kind === "erc721");
|
|
12297
|
+
},
|
|
12298
|
+
actions: [
|
|
12299
|
+
{ id: "continuum-dao-marketplace.fetch-config", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Marketplace payment tokens, durations, and fees", commonParams: [], params: {} },
|
|
12300
|
+
{ id: "continuum-dao-marketplace.search", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Rank veCTMs for sale by price, locked CTM, or unlock time", commonParams: [], params: {} },
|
|
12301
|
+
{ id: "continuum-dao-marketplace.fee-alternative", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "One qualifying direct listing beside 12 times the KeyGen monthly fee", commonParams: [], params: {} },
|
|
12302
|
+
{ id: "continuum-dao-marketplace.fetch-listings", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Open listings, or past sales when includeInactive is set", commonParams: [], params: {} },
|
|
12303
|
+
{ id: "continuum-dao-marketplace.fetch-offerings", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Open offerings, or closed offers when includeInactive is set", commonParams: [], params: {} },
|
|
12304
|
+
{ id: "continuum-dao-marketplace.fetch-auctions", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Live auctions, or settled auctions when includeInactive is set. Each row includes bids.", commonParams: [], params: {} },
|
|
12305
|
+
{ id: "continuum-dao-marketplace.fetch-token", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "One veCTM: live orders plus history of sales and auctions", commonParams: [], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12306
|
+
{ id: "continuum-dao-marketplace.fetch-activity", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "An address\u2019s sales, buys, and auctions including bids", commonParams: [], params: { address: { type: "string", required: true, description: "KeyGen or wallet" } } },
|
|
12307
|
+
{ id: "continuum-dao-marketplace.fetch-fee-preview", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Protocol fee for a price and veCTM", commonParams: [], params: {} },
|
|
12308
|
+
{ id: "continuum-dao-marketplace.create-listing", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Approve veCTM if needed and create a listing", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" }, askWei: { type: "string", required: true, description: "Ask in payment-token wei" } } },
|
|
12309
|
+
{ id: "continuum-dao-marketplace.delist", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Delist an open listing", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12310
|
+
{ id: "continuum-dao-marketplace.fulfill-listing", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Buy a listed veCTM", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12311
|
+
{ id: "continuum-dao-marketplace.create-offering", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Make an offering on a veCTM", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12312
|
+
{ id: "continuum-dao-marketplace.rescind", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Rescind an open offering", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12313
|
+
{ id: "continuum-dao-marketplace.fulfill-offering", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Accept an offering on a veCTM you own", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12314
|
+
{ id: "continuum-dao-marketplace.create-auction", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Escrow a veCTM into an auction", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12315
|
+
{ id: "continuum-dao-marketplace.cancel-auction", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Cancel a pending auction with no bids", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12316
|
+
{ id: "continuum-dao-marketplace.auction-bid", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Bid on a live auction", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } },
|
|
12317
|
+
{ id: "continuum-dao-marketplace.settle-auction", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Settle a completed or expired auction", commonParams: [...common], params: { tokenId: { type: "string", required: true, description: "veCTM token id" } } }
|
|
12318
|
+
]
|
|
12319
|
+
};
|
|
12320
|
+
|
|
12321
|
+
// src/protocols/evm/continuum-dao/index.ts
|
|
11659
12322
|
init_constants2();
|
|
11660
12323
|
init_governance();
|
|
11661
12324
|
init_simulateProposal();
|
|
11662
12325
|
init_foundryProposalScript();
|
|
11663
12326
|
init_explainProposal();
|
|
11664
12327
|
init_forum();
|
|
12328
|
+
registerProtocolModule(continuumDaoMarketplaceProtocolModule);
|
|
11665
12329
|
var continuumDaoProtocolModule = {
|
|
11666
12330
|
id: CONTINUUM_DAO_PROTOCOL_ID,
|
|
11667
12331
|
chainCategory: "evm",
|
|
@@ -13055,6 +13719,9 @@ function isTrueoChainSupported(chainId) {
|
|
|
13055
13719
|
return TRUEO_CHAIN_IDS.includes(chainId);
|
|
13056
13720
|
}
|
|
13057
13721
|
|
|
13722
|
+
// src/protocols/evm/hyperliquidOutcome/api.ts
|
|
13723
|
+
var HYPERLIQUID_OUTCOME_PROTOCOL_ID = "hyperliquidOutcome";
|
|
13724
|
+
|
|
13058
13725
|
// src/protocols/evm/trueo/index.ts
|
|
13059
13726
|
var trueoProtocolModule = {
|
|
13060
13727
|
id: TRUEO_PROTOCOL_ID,
|
|
@@ -13134,6 +13801,71 @@ var trueoProtocolModule = {
|
|
|
13134
13801
|
]
|
|
13135
13802
|
};
|
|
13136
13803
|
registerProtocolModule(trueoProtocolModule);
|
|
13804
|
+
|
|
13805
|
+
// src/protocols/evm/hyperliquidOutcome/index.ts
|
|
13806
|
+
var hyperliquidOutcomeProtocolModule = {
|
|
13807
|
+
id: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13808
|
+
chainCategory: "evm",
|
|
13809
|
+
isChainSupported(ctx) {
|
|
13810
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
13811
|
+
const chainId = typeof ctx.chainId === "number" ? ctx.chainId : Number(ctx.chainId);
|
|
13812
|
+
return Number.isFinite(chainId) && isHyperliquidChainSupported(chainId);
|
|
13813
|
+
},
|
|
13814
|
+
isTokenSupported(token) {
|
|
13815
|
+
return token.category === "evm" && token.kind === "native";
|
|
13816
|
+
},
|
|
13817
|
+
actions: [
|
|
13818
|
+
{
|
|
13819
|
+
id: "hyperliquidOutcome.order",
|
|
13820
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13821
|
+
chainCategory: "evm",
|
|
13822
|
+
description: "Limit buy or sell a HIP-4 outcome side via Hyperliquid /exchange",
|
|
13823
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13824
|
+
params: {}
|
|
13825
|
+
},
|
|
13826
|
+
{
|
|
13827
|
+
id: "hyperliquidOutcome.cancel",
|
|
13828
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13829
|
+
chainCategory: "evm",
|
|
13830
|
+
description: "Cancel a resting HIP-4 outcome order",
|
|
13831
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13832
|
+
params: {}
|
|
13833
|
+
},
|
|
13834
|
+
{
|
|
13835
|
+
id: "hyperliquidOutcome.split",
|
|
13836
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13837
|
+
chainCategory: "evm",
|
|
13838
|
+
description: "Split quote tokens into Yes and No shares",
|
|
13839
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13840
|
+
params: {}
|
|
13841
|
+
},
|
|
13842
|
+
{
|
|
13843
|
+
id: "hyperliquidOutcome.merge",
|
|
13844
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13845
|
+
chainCategory: "evm",
|
|
13846
|
+
description: "Merge Yes and No shares back into quote tokens",
|
|
13847
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13848
|
+
params: {}
|
|
13849
|
+
},
|
|
13850
|
+
{
|
|
13851
|
+
id: "hyperliquidOutcome.merge-question",
|
|
13852
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13853
|
+
chainCategory: "evm",
|
|
13854
|
+
description: "Merge Yes shares across a question into quote tokens",
|
|
13855
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13856
|
+
params: {}
|
|
13857
|
+
},
|
|
13858
|
+
{
|
|
13859
|
+
id: "hyperliquidOutcome.negate",
|
|
13860
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13861
|
+
chainCategory: "evm",
|
|
13862
|
+
description: "Convert No shares of one outcome into Yes shares of the other outcomes",
|
|
13863
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13864
|
+
params: {}
|
|
13865
|
+
}
|
|
13866
|
+
]
|
|
13867
|
+
};
|
|
13868
|
+
registerProtocolModule(hyperliquidOutcomeProtocolModule);
|
|
13137
13869
|
var skillsDir = join(dirname(fileURLToPath(import.meta.url)), "skills");
|
|
13138
13870
|
var SKILL_PROTOCOL_IDS = [
|
|
13139
13871
|
"aave-v4",
|
|
@@ -13152,9 +13884,11 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
13152
13884
|
"aerodrome",
|
|
13153
13885
|
"pendle",
|
|
13154
13886
|
"continuum-dao",
|
|
13887
|
+
"continuum-dao-marketplace",
|
|
13155
13888
|
"compound-v3",
|
|
13156
13889
|
"derive",
|
|
13157
13890
|
"trueo",
|
|
13891
|
+
"hyperliquidOutcome",
|
|
13158
13892
|
"yield-compare"
|
|
13159
13893
|
];
|
|
13160
13894
|
function getToolsForProtocol(protocolId) {
|
|
@@ -13523,6 +14257,17 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
13523
14257
|
}
|
|
13524
14258
|
}
|
|
13525
14259
|
}),
|
|
14260
|
+
hyperliquidOutcome: advisor("hyperliquidOutcome", "api_underlyings", {
|
|
14261
|
+
async supportedChainIds() {
|
|
14262
|
+
return [...HYPERLIQUID_SUPPORTED_CHAIN_IDS];
|
|
14263
|
+
},
|
|
14264
|
+
async supportedTokens() {
|
|
14265
|
+
return {
|
|
14266
|
+
tokens: [],
|
|
14267
|
+
notes: 'HIP-4 outcome markets on HyperCore (chainId 999). Yes/No shares are exchange balances, not ERC20s. Search with search_prediction_markets venues ["hyperliquid"].'
|
|
14268
|
+
};
|
|
14269
|
+
}
|
|
14270
|
+
}),
|
|
13526
14271
|
hyperliquid: advisor("hyperliquid", "api_underlyings", {
|
|
13527
14272
|
async supportedChainIds() {
|
|
13528
14273
|
return [...HYPERLIQUID_SUPPORTED_CHAIN_IDS];
|
|
@@ -13587,6 +14332,22 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
13587
14332
|
};
|
|
13588
14333
|
}
|
|
13589
14334
|
}),
|
|
14335
|
+
[CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID]: advisor(CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, "fixed_addresses", {
|
|
14336
|
+
async supportedChainIds() {
|
|
14337
|
+
return [59144];
|
|
14338
|
+
},
|
|
14339
|
+
async supportedTokens(chainId) {
|
|
14340
|
+
const ve = votingEscrowAddressOnEvmChain(chainId);
|
|
14341
|
+
const market = votingEscrowMarketplaceAddressOnEvmChain(chainId);
|
|
14342
|
+
const tokens = [];
|
|
14343
|
+
if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
|
|
14344
|
+
if (market) tokens.push({ address: market, symbol: "veCTM-market", roles: ["protocol"] });
|
|
14345
|
+
return {
|
|
14346
|
+
tokens,
|
|
14347
|
+
notes: "Linea veCTM marketplace. Load continuum-dao-marketplace, not continuum-dao. Search ranks buys by locked CTM, unlock time, or price per CTM and returns a short list. fetch_listings is the unfiltered page. fetch_auctions is the live book; includeInactive adds settled auctions and each row includes bids. Do not buy or bid a veCTM this KeyGen already owns."
|
|
14348
|
+
};
|
|
14349
|
+
}
|
|
14350
|
+
}),
|
|
13590
14351
|
[COMPOUND_V3_PROTOCOL_ID]: advisor(COMPOUND_V3_PROTOCOL_ID, "api_underlyings", {
|
|
13591
14352
|
async supportedChainIds() {
|
|
13592
14353
|
return listCompoundV3SupportedChainIds();
|
|
@@ -13770,26 +14531,6 @@ function listProtocolSupportAdvisorIds() {
|
|
|
13770
14531
|
}
|
|
13771
14532
|
|
|
13772
14533
|
// src/agent/catalog.ts
|
|
13773
|
-
registerProtocolModule(uniswapV4ProtocolModule);
|
|
13774
|
-
registerProtocolModule(curveDaoProtocolModule);
|
|
13775
|
-
registerProtocolModule(lidoProtocolModule);
|
|
13776
|
-
registerProtocolModule(ethenaProtocolModule);
|
|
13777
|
-
registerProtocolModule(mapleProtocolModule);
|
|
13778
|
-
registerProtocolModule(skyProtocolModule);
|
|
13779
|
-
registerProtocolModule(aaveV4ProtocolModule);
|
|
13780
|
-
registerProtocolModule(eulerV2ProtocolModule);
|
|
13781
|
-
registerProtocolModule(gmxProtocolModule);
|
|
13782
|
-
registerProtocolModule(hyperliquidProtocolModule);
|
|
13783
|
-
registerProtocolModule(arcusProtocolModule);
|
|
13784
|
-
registerProtocolModule(morphoProtocolModule);
|
|
13785
|
-
registerProtocolModule(circleCctpProtocolModule);
|
|
13786
|
-
registerProtocolModule(veniceProtocolModule);
|
|
13787
|
-
registerProtocolModule(aerodromeProtocolModule);
|
|
13788
|
-
registerProtocolModule(continuumDaoProtocolModule);
|
|
13789
|
-
registerProtocolModule(compoundV3ProtocolModule);
|
|
13790
|
-
registerProtocolModule(pendleProtocolModule);
|
|
13791
|
-
registerProtocolModule(deriveProtocolModule);
|
|
13792
|
-
registerProtocolModule(trueoProtocolModule);
|
|
13793
14534
|
function getAgentCatalog() {
|
|
13794
14535
|
return {
|
|
13795
14536
|
protocols: getProtocolModules(),
|
|
@@ -13818,6 +14559,7 @@ function getAgentCatalog() {
|
|
|
13818
14559
|
pendle: pendleProtocolModule,
|
|
13819
14560
|
derive: deriveProtocolModule,
|
|
13820
14561
|
trueo: trueoProtocolModule,
|
|
14562
|
+
hyperliquidOutcome: hyperliquidOutcomeProtocolModule,
|
|
13821
14563
|
/** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
|
|
13822
14564
|
mcp: getAgentCatalogForMcp()
|
|
13823
14565
|
};
|