@continuumdao/ctm-mpc-defi 0.2.50 → 0.2.52
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 +829 -55
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +93 -22
- package/dist/agent/catalog.js +829 -55
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/continuum-dao/SKILL.md +9 -6
- 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 +2311 -62
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +697 -2
- package/dist/protocols/evm/continuum-dao/index.js +2255 -64
- 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.cjs
CHANGED
|
@@ -538,6 +538,10 @@ function votingEscrowAddressOnEvmChain(chainId) {
|
|
|
538
538
|
const ve = continuumDaoDeployment(chainId)?.votingEscrow;
|
|
539
539
|
return ve && isConfiguredAddress(ve) ? viem.getAddress(ve) : null;
|
|
540
540
|
}
|
|
541
|
+
function votingEscrowMarketplaceAddressOnEvmChain(chainId) {
|
|
542
|
+
if (chainId !== CONTINUUM_DAO_LINEA_CHAIN_ID) return null;
|
|
543
|
+
return VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS;
|
|
544
|
+
}
|
|
541
545
|
function listContinuumDaoDefaultAssets() {
|
|
542
546
|
const out = [];
|
|
543
547
|
for (const chainId of [
|
|
@@ -569,7 +573,7 @@ function listContinuumDaoDefaultAssets() {
|
|
|
569
573
|
}
|
|
570
574
|
return out;
|
|
571
575
|
}
|
|
572
|
-
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;
|
|
576
|
+
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;
|
|
573
577
|
var init_constants2 = __esm({
|
|
574
578
|
"src/protocols/evm/continuum-dao/constants.ts"() {
|
|
575
579
|
CONTINUUM_DAO_PROTOCOL_ID = "continuum-dao";
|
|
@@ -590,6 +594,11 @@ var init_constants2 = __esm({
|
|
|
590
594
|
};
|
|
591
595
|
CTM_TOKEN_ADDRESS = viem.getAddress("0x2026027054F5beBCEB650aBD62dC623e327658e7");
|
|
592
596
|
VOTING_ESCROW_LINEA_ADDRESS = viem.getAddress("0x221EC90B3B083A8501A37bdeb7035CeaedF3C31f");
|
|
597
|
+
viem.getAddress("0x4ebd7cCBe32a51d1638cFE90E8eD1c4BdF42f729");
|
|
598
|
+
VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS = viem.getAddress("0x92557d38beAe4658d3c03A02F349FFB60c3bfFA5");
|
|
599
|
+
viem.getAddress("0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f");
|
|
600
|
+
viem.getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff");
|
|
601
|
+
CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
|
|
593
602
|
viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
594
603
|
viem.getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
|
|
595
604
|
[
|
|
@@ -2755,7 +2764,12 @@ var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
2755
2764
|
"ctm_trueo_search_markets",
|
|
2756
2765
|
"ctm_trueo_fetch_market",
|
|
2757
2766
|
"ctm_trueo_fetch_chance_series",
|
|
2758
|
-
"ctm_trueo_fetch_orderbook"
|
|
2767
|
+
"ctm_trueo_fetch_orderbook",
|
|
2768
|
+
"ctm_hyperliquid_outcome_fetch_markets",
|
|
2769
|
+
"ctm_hyperliquid_outcome_fetch_market",
|
|
2770
|
+
"ctm_hyperliquid_outcome_fetch_orderbook",
|
|
2771
|
+
"ctm_hyperliquid_outcome_fetch_positions",
|
|
2772
|
+
"ctm_hyperliquid_outcome_fetch_open_orders"
|
|
2759
2773
|
]);
|
|
2760
2774
|
|
|
2761
2775
|
// src/agent/schemas/protocols.ts
|
|
@@ -3685,7 +3699,16 @@ var mcpContinuumDaoRegisterProposalOutputSchema = zod.z.object({
|
|
|
3685
3699
|
ok: zod.z.literal(true),
|
|
3686
3700
|
result: zod.z.unknown()
|
|
3687
3701
|
});
|
|
3688
|
-
var
|
|
3702
|
+
var forumNodeAddressField = zod.z.string().optional().describe(
|
|
3703
|
+
"KeyGen ethereum address. The server reads the forum ticket stored on this node and continues only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is already logged in."
|
|
3704
|
+
);
|
|
3705
|
+
var forumUrlField = {
|
|
3706
|
+
forumUrl: zod.z.string().optional(),
|
|
3707
|
+
ticket: zod.z.string().optional().describe(
|
|
3708
|
+
"Forum ticket from get_forum_session. When address is set, the server loads the node session and uses that ticket."
|
|
3709
|
+
),
|
|
3710
|
+
address: forumNodeAddressField
|
|
3711
|
+
};
|
|
3689
3712
|
var mcpContinuumDaoForumResolveInputSchema = zod.z.object({
|
|
3690
3713
|
url: zod.z.string().optional(),
|
|
3691
3714
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
|
|
@@ -3771,7 +3794,10 @@ var mcpContinuumDaoForumDeleteInputSchema = zod.z.object({
|
|
|
3771
3794
|
"Only delete posts/threads in the last X hours. Omit with since for all."
|
|
3772
3795
|
),
|
|
3773
3796
|
since: zod.z.string().min(1).optional().describe("Only delete posts/threads at or after this ISO date or unix timestamp. Omit with hours for all."),
|
|
3774
|
-
ticket: zod.z.string().min(1).describe(
|
|
3797
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3798
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session. Caller must be an admin or moderator."
|
|
3799
|
+
),
|
|
3800
|
+
address: forumNodeAddressField,
|
|
3775
3801
|
forumUrl: zod.z.string().optional()
|
|
3776
3802
|
}).refine(
|
|
3777
3803
|
(v) => {
|
|
@@ -3849,7 +3875,10 @@ var mcpContinuumDaoForumMeInputSchema = zod.z.object({
|
|
|
3849
3875
|
});
|
|
3850
3876
|
var mcpContinuumDaoForumMeOutputSchema = zod.z.unknown();
|
|
3851
3877
|
var mcpContinuumDaoForumUnreadInputSchema = zod.z.object({
|
|
3852
|
-
ticket: zod.z.string().min(1).describe(
|
|
3878
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3879
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session and posts only if forum_me loggedIn is true."
|
|
3880
|
+
),
|
|
3881
|
+
address: forumNodeAddressField,
|
|
3853
3882
|
filter: zod.z.enum(["all", "new", "watched", "unreplied"]).optional().describe("NodeBB Unread filter. Default all (watched/tracked categories + followed topics)."),
|
|
3854
3883
|
start: agentCoercedOptionalIntSchema(zod.z.number().int().nonnegative()),
|
|
3855
3884
|
limit: agentCoercedOptionalIntSchema(zod.z.number().int().positive().max(100)),
|
|
@@ -3883,7 +3912,10 @@ var mcpContinuumDaoForumUnreadOutputSchema = zod.z.object({
|
|
|
3883
3912
|
nextStart: zod.z.number().nullable().optional()
|
|
3884
3913
|
});
|
|
3885
3914
|
var mcpContinuumDaoForumMarkReadInputSchema = zod.z.object({
|
|
3886
|
-
ticket: zod.z.string().min(1).describe(
|
|
3915
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3916
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session and posts only if forum_me loggedIn is true."
|
|
3917
|
+
),
|
|
3918
|
+
address: forumNodeAddressField,
|
|
3887
3919
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Mark this thread read."),
|
|
3888
3920
|
url: zod.z.string().optional().describe("Mark this thread read by topic URL."),
|
|
3889
3921
|
tids: zod.z.array(zod.z.union([zod.z.string(), zod.z.number()])).optional().describe("Mark these threads read."),
|
|
@@ -3899,7 +3931,10 @@ var mcpContinuumDaoForumMarkReadInputSchema = zod.z.object({
|
|
|
3899
3931
|
);
|
|
3900
3932
|
var mcpContinuumDaoForumMarkReadOutputSchema = zod.z.unknown();
|
|
3901
3933
|
var mcpContinuumDaoForumMarkUnreadInputSchema = zod.z.object({
|
|
3902
|
-
ticket: zod.z.string().min(1).describe(
|
|
3934
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3935
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session and posts only if forum_me loggedIn is true."
|
|
3936
|
+
),
|
|
3937
|
+
address: forumNodeAddressField,
|
|
3903
3938
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
|
|
3904
3939
|
url: zod.z.string().optional(),
|
|
3905
3940
|
forumUrl: zod.z.string().optional()
|
|
@@ -3908,7 +3943,10 @@ var mcpContinuumDaoForumMarkUnreadInputSchema = zod.z.object({
|
|
|
3908
3943
|
});
|
|
3909
3944
|
var mcpContinuumDaoForumMarkUnreadOutputSchema = zod.z.unknown();
|
|
3910
3945
|
var mcpContinuumDaoForumSignOutInputSchema = zod.z.object({
|
|
3911
|
-
ticket: zod.z.string().min(1).describe(
|
|
3946
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3947
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session and posts only if forum_me loggedIn is true."
|
|
3948
|
+
),
|
|
3949
|
+
address: forumNodeAddressField,
|
|
3912
3950
|
forumUrl: zod.z.string().optional()
|
|
3913
3951
|
});
|
|
3914
3952
|
var mcpContinuumDaoForumSignOutOutputSchema = zod.z.object({
|
|
@@ -3977,11 +4015,19 @@ var mcpContinuumDaoForumSignInEligibleOutputSchema = zod.z.object({
|
|
|
3977
4015
|
ok: zod.z.boolean(),
|
|
3978
4016
|
eligible: zod.z.boolean(),
|
|
3979
4017
|
address: zod.z.string().optional(),
|
|
3980
|
-
reason: zod.z.string().optional()
|
|
4018
|
+
reason: zod.z.string().optional(),
|
|
4019
|
+
votingPower: zod.z.string().optional().describe("Current balanceOfNFT wei for the owned or attached veCTM that was checked"),
|
|
4020
|
+
threshold: zod.z.string().optional().describe("MultiSignAgentWallet.veCtmThresholdPower wei"),
|
|
4021
|
+
tokenId: zod.z.string().optional()
|
|
3981
4022
|
});
|
|
3982
4023
|
var mcpContinuumDaoForumSignInInputSchema = mcpMultisignInput({
|
|
3983
|
-
nodeKey: zod.z.string().optional().describe("
|
|
3984
|
-
username: zod.z.string().min(2).max(16).
|
|
4024
|
+
nodeKey: zod.z.string().optional().describe("Node key bound to this KeyGen. Required when useNodeKeyUsername is true. A node key does not choose the username by itself."),
|
|
4025
|
+
username: zod.z.string().min(2).max(16).regex(/^[A-Za-z0-9._-]+$/).optional().describe(
|
|
4026
|
+
"Custom forum username for a wallet or a KeyGen. Ask the operator before calling. 2\u201316 letters, numbers, . _ -."
|
|
4027
|
+
),
|
|
4028
|
+
useNodeKeyUsername: zod.z.boolean().optional().describe(
|
|
4029
|
+
"Set true only after the operator declines a custom username. The forum assigns the first 16 characters of nodeKey."
|
|
4030
|
+
),
|
|
3985
4031
|
forumUrl: zod.z.string().optional()
|
|
3986
4032
|
});
|
|
3987
4033
|
var mcpMapleSyrupMarketSummarySchema = zod.z.object({
|
|
@@ -5405,7 +5451,7 @@ var mcpSearchPredictionMarketsInputSchema = zod.z.object({
|
|
|
5405
5451
|
"Pass the operator topic verbatim (case-insensitive title substring). Do not substitute a category name. Empty lists trending."
|
|
5406
5452
|
),
|
|
5407
5453
|
category: zod.z.string().optional().describe("Venue category, e.g. Politics"),
|
|
5408
|
-
venues: zod.z.array(zod.z.string()).optional().describe(
|
|
5454
|
+
venues: zod.z.array(zod.z.string()).optional().describe('Optional venue filter. Omit to search trueo and hyperliquid. Restrict with ["trueo"] or ["hyperliquid"].'),
|
|
5409
5455
|
trending: agentOptionalBooleanSchema().describe(
|
|
5410
5456
|
"Trending board only when query and category are empty. Ignored when query is set."
|
|
5411
5457
|
),
|
|
@@ -5467,8 +5513,8 @@ var mcpListMyPredictionMarketsInputSchema = zod.z.object({
|
|
|
5467
5513
|
});
|
|
5468
5514
|
var mcpListMyPredictionMarketsOutputSchema = mcpSearchPredictionMarketsOutputSchema;
|
|
5469
5515
|
var mcpGetPredictionMarketInputSchema = zod.z.object({
|
|
5470
|
-
venue: zod.z.string().optional().describe("
|
|
5471
|
-
venueMarketId: zod.z.string().min(1).describe("
|
|
5516
|
+
venue: zod.z.string().optional().describe("trueo (default) or hyperliquid"),
|
|
5517
|
+
venueMarketId: zod.z.string().min(1).describe("Trueo market address, or Hyperliquid outcome id")
|
|
5472
5518
|
});
|
|
5473
5519
|
var mcpGetPredictionMarketOutputSchema = mcpPredictionMarketRowSchema.passthrough();
|
|
5474
5520
|
var mcpTrueoWrapTydInputSchema = mcpMultisignInput({
|
|
@@ -5866,6 +5912,131 @@ var mcpCctpBuildBurnMultisignInputSchema = mcpMultisignInput({
|
|
|
5866
5912
|
minFinalityThreshold: agentCoercedOptionalIntSchema(zod.z.number().int().positive()),
|
|
5867
5913
|
feeSnapshot: jsonObjectSchema.optional().describe("Optional output from ctm_cctp_fetch_burn_fees")
|
|
5868
5914
|
});
|
|
5915
|
+
var outcomeIdSchema = zod.z.number().int().nonnegative();
|
|
5916
|
+
var sideSchema = zod.z.enum(["yes", "no"]);
|
|
5917
|
+
var mcpHyperliquidOutcomeFetchMarketsInputSchema = zod.z.object({
|
|
5918
|
+
chainId: zod.z.number().int().positive().optional().describe("999 mainnet or 998 testnet. Default 999."),
|
|
5919
|
+
query: zod.z.string().optional().describe("Case-insensitive substring of the question, description, or outcome id."),
|
|
5920
|
+
limit: zod.z.number().int().positive().optional(),
|
|
5921
|
+
offset: zod.z.number().int().nonnegative().optional()
|
|
5922
|
+
});
|
|
5923
|
+
var mcpHyperliquidOutcomeMarketSchema = zod.z.object({
|
|
5924
|
+
outcome: zod.z.number(),
|
|
5925
|
+
question: zod.z.string(),
|
|
5926
|
+
description: zod.z.string(),
|
|
5927
|
+
questionId: zod.z.number().nullable(),
|
|
5928
|
+
sideNames: zod.z.tuple([zod.z.string(), zod.z.string()]),
|
|
5929
|
+
quoteToken: zod.z.string(),
|
|
5930
|
+
yesCoin: zod.z.string(),
|
|
5931
|
+
noCoin: zod.z.string(),
|
|
5932
|
+
yesAssetId: zod.z.number(),
|
|
5933
|
+
noAssetId: zod.z.number(),
|
|
5934
|
+
yesPrice: zod.z.number().nullable(),
|
|
5935
|
+
noPrice: zod.z.number().nullable(),
|
|
5936
|
+
yesPriceLabel: zod.z.string().nullable(),
|
|
5937
|
+
noPriceLabel: zod.z.string().nullable(),
|
|
5938
|
+
expiresAt: zod.z.string().nullable(),
|
|
5939
|
+
endOfTrading: zod.z.number(),
|
|
5940
|
+
status: zod.z.enum(["live", "closed"]),
|
|
5941
|
+
tradable: zod.z.boolean(),
|
|
5942
|
+
categories: zod.z.array(zod.z.string())
|
|
5943
|
+
});
|
|
5944
|
+
var mcpHyperliquidOutcomeFetchMarketsOutputSchema = zod.z.object({
|
|
5945
|
+
markets: zod.z.array(mcpHyperliquidOutcomeMarketSchema),
|
|
5946
|
+
notes: zod.z.string(),
|
|
5947
|
+
hasMore: zod.z.boolean(),
|
|
5948
|
+
nextOffset: zod.z.number()
|
|
5949
|
+
});
|
|
5950
|
+
var mcpHyperliquidOutcomeFetchMarketInputSchema = zod.z.object({
|
|
5951
|
+
chainId: zod.z.number().int().positive().optional(),
|
|
5952
|
+
outcome: outcomeIdSchema.describe("outcome id from outcomeMeta / search venueMarketId")
|
|
5953
|
+
});
|
|
5954
|
+
var mcpHyperliquidOutcomeBookSchema = zod.z.object({
|
|
5955
|
+
coin: zod.z.string(),
|
|
5956
|
+
bids: zod.z.array(zod.z.object({ px: zod.z.string(), sz: zod.z.string(), n: zod.z.number() })),
|
|
5957
|
+
asks: zod.z.array(zod.z.object({ px: zod.z.string(), sz: zod.z.string(), n: zod.z.number() }))
|
|
5958
|
+
});
|
|
5959
|
+
var mcpHyperliquidOutcomeFetchMarketOutputSchema = mcpHyperliquidOutcomeMarketSchema.extend({
|
|
5960
|
+
yesBook: mcpHyperliquidOutcomeBookSchema,
|
|
5961
|
+
noBook: mcpHyperliquidOutcomeBookSchema,
|
|
5962
|
+
notes: zod.z.string()
|
|
5963
|
+
});
|
|
5964
|
+
var mcpHyperliquidOutcomeFetchOrderbookInputSchema = zod.z.object({
|
|
5965
|
+
chainId: zod.z.number().int().positive().optional(),
|
|
5966
|
+
outcome: outcomeIdSchema,
|
|
5967
|
+
side: sideSchema.optional().describe("Default yes")
|
|
5968
|
+
});
|
|
5969
|
+
var mcpHyperliquidOutcomeFetchOrderbookOutputSchema = zod.z.object({
|
|
5970
|
+
outcome: zod.z.number(),
|
|
5971
|
+
side: sideSchema,
|
|
5972
|
+
book: mcpHyperliquidOutcomeBookSchema,
|
|
5973
|
+
notes: zod.z.string()
|
|
5974
|
+
});
|
|
5975
|
+
var mcpHyperliquidOutcomeFetchAccountInputSchema = zod.z.object({
|
|
5976
|
+
chainId: zod.z.number().int().positive().optional(),
|
|
5977
|
+
user: zod.z.string().min(1).describe("HyperCore account address (the MPA ethereum address).")
|
|
5978
|
+
});
|
|
5979
|
+
var mcpHyperliquidOutcomeFetchPositionsOutputSchema = zod.z.object({
|
|
5980
|
+
quoteBalances: zod.z.array(zod.z.object({ coin: zod.z.string(), total: zod.z.string(), hold: zod.z.string() })),
|
|
5981
|
+
outcomeBalances: zod.z.array(
|
|
5982
|
+
zod.z.object({
|
|
5983
|
+
coin: zod.z.string(),
|
|
5984
|
+
total: zod.z.string(),
|
|
5985
|
+
hold: zod.z.string(),
|
|
5986
|
+
outcome: zod.z.number().nullable(),
|
|
5987
|
+
side: zod.z.enum(["yes", "no"]).nullable()
|
|
5988
|
+
})
|
|
5989
|
+
),
|
|
5990
|
+
notes: zod.z.string()
|
|
5991
|
+
});
|
|
5992
|
+
var mcpHyperliquidOutcomeFetchOpenOrdersOutputSchema = zod.z.object({
|
|
5993
|
+
openOrders: zod.z.array(
|
|
5994
|
+
zod.z.object({
|
|
5995
|
+
coin: zod.z.string(),
|
|
5996
|
+
side: zod.z.string(),
|
|
5997
|
+
limitPx: zod.z.string(),
|
|
5998
|
+
sz: zod.z.string(),
|
|
5999
|
+
oid: zod.z.number(),
|
|
6000
|
+
timestamp: zod.z.number(),
|
|
6001
|
+
outcome: zod.z.number().nullable(),
|
|
6002
|
+
outcomeSide: zod.z.enum(["yes", "no"]).nullable()
|
|
6003
|
+
})
|
|
6004
|
+
),
|
|
6005
|
+
notes: zod.z.string()
|
|
6006
|
+
});
|
|
6007
|
+
var mcpHyperliquidOutcomeOrderInputSchema = mcpMultisignInput({
|
|
6008
|
+
outcome: outcomeIdSchema,
|
|
6009
|
+
side: sideSchema,
|
|
6010
|
+
isBuy: zod.z.boolean().describe("true buys the side, false sells it"),
|
|
6011
|
+
limitPxHuman: zod.z.string().min(1).describe("Limit price in quote per share, typically 0 to 1"),
|
|
6012
|
+
szHuman: zod.z.string().min(1).describe("Share size"),
|
|
6013
|
+
tif: zod.z.enum(["gtc", "ioc", "alo"]).optional().describe("Default gtc. ioc crosses the book."),
|
|
6014
|
+
reduceOnly: agentOptionalBooleanSchema()
|
|
6015
|
+
});
|
|
6016
|
+
var mcpHyperliquidOutcomeCancelInputSchema = mcpMultisignInput({
|
|
6017
|
+
outcome: outcomeIdSchema,
|
|
6018
|
+
side: sideSchema,
|
|
6019
|
+
oid: zod.z.number().int().positive()
|
|
6020
|
+
});
|
|
6021
|
+
var mcpHyperliquidOutcomeSplitInputSchema = mcpMultisignInput({
|
|
6022
|
+
outcome: outcomeIdSchema,
|
|
6023
|
+
amountHuman: zod.z.string().min(1).describe("Quote amount to split into equal Yes and No shares")
|
|
6024
|
+
});
|
|
6025
|
+
var mcpHyperliquidOutcomeMergeInputSchema = mcpMultisignInput({
|
|
6026
|
+
outcome: outcomeIdSchema,
|
|
6027
|
+
amountHuman: zod.z.string().optional().describe("Yes+No amount to merge. Omit or amountMax for the maximum."),
|
|
6028
|
+
amountMax: agentOptionalBooleanSchema()
|
|
6029
|
+
});
|
|
6030
|
+
var mcpHyperliquidOutcomeMergeQuestionInputSchema = mcpMultisignInput({
|
|
6031
|
+
question: outcomeIdSchema.describe("question id from outcomeMeta.questions"),
|
|
6032
|
+
amountHuman: zod.z.string().optional(),
|
|
6033
|
+
amountMax: agentOptionalBooleanSchema()
|
|
6034
|
+
});
|
|
6035
|
+
var mcpHyperliquidOutcomeNegateInputSchema = mcpMultisignInput({
|
|
6036
|
+
question: outcomeIdSchema,
|
|
6037
|
+
outcome: outcomeIdSchema,
|
|
6038
|
+
amountHuman: zod.z.string().min(1)
|
|
6039
|
+
});
|
|
5869
6040
|
|
|
5870
6041
|
// src/agent/mcpProtocolTools.ts
|
|
5871
6042
|
function defineProtocolMcpTool(def) {
|
|
@@ -7009,11 +7180,11 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7009
7180
|
actionId: "continuum-dao.forum-sign-in",
|
|
7010
7181
|
protocolId: "continuum-dao",
|
|
7011
7182
|
chainCategory: "evm",
|
|
7012
|
-
description: "Build an EIP-712 forum login multi-sign (no EVM tx).
|
|
7183
|
+
description: "Build an EIP-712 forum login multi-sign (no EVM tx). Refuses when this node already has a live forum session for the KeyGen (getForumSession plus forum_me loggedIn) and returns that ticket instead of creating a sign request. Checks current balanceOfNFT on an owned or attached veCTM against MultiSignAgentWallet.veCtmThresholdPower and refuses if that power is short, so other nodes never enter the sign loop. Ask the operator for a custom username (2\u201316 letters, numbers, . _ -) and pass it as username. If they decline, set useNodeKeyUsername true with nodeKey; the forum assigns the first 16 characters of the node key. After Get Sig, node-app stores the ticket on the node.",
|
|
7013
7184
|
prerequisites: [
|
|
7014
7185
|
"keyGen",
|
|
7015
|
-
"veCTM at or above MultiSignAgentWallet.veCtmThresholdPower
|
|
7016
|
-
"
|
|
7186
|
+
"current balanceOfNFT on an owned or attached veCTM at or above MultiSignAgentWallet.veCtmThresholdPower",
|
|
7187
|
+
"username from the operator, or useNodeKeyUsername with nodeKey"
|
|
7017
7188
|
],
|
|
7018
7189
|
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_forum_me"],
|
|
7019
7190
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoForumSignIn" },
|
|
@@ -7250,6 +7421,430 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7250
7421
|
prerequisites: ["keyGenId", "chainId 8453", "marketAddress", "side", "orderId"],
|
|
7251
7422
|
handler: { importPath: "protocols/evm/trueo", exportName: "buildEvmMultisignBodyTrueoCancelOrder" },
|
|
7252
7423
|
inputZod: mcpTrueoCancelOrderInputSchema
|
|
7424
|
+
}),
|
|
7425
|
+
defineProtocolMcpTool({
|
|
7426
|
+
name: "ctm_hyperliquid_outcome_build_order_multisign",
|
|
7427
|
+
actionId: "hyperliquidOutcome.order",
|
|
7428
|
+
protocolId: "hyperliquidOutcome",
|
|
7429
|
+
chainCategory: "evm",
|
|
7430
|
+
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.",
|
|
7431
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome id", "side yes|no", "isBuy", "limitPxHuman", "szHuman", "purposeText"],
|
|
7432
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeOrder" },
|
|
7433
|
+
inputZod: mcpHyperliquidOutcomeOrderInputSchema
|
|
7434
|
+
}),
|
|
7435
|
+
defineProtocolMcpTool({
|
|
7436
|
+
name: "ctm_hyperliquid_outcome_build_cancel_multisign",
|
|
7437
|
+
actionId: "hyperliquidOutcome.cancel",
|
|
7438
|
+
protocolId: "hyperliquidOutcome",
|
|
7439
|
+
chainCategory: "evm",
|
|
7440
|
+
description: "Cancel a resting Hyperliquid outcome order by oid. EIP-712, no gas.",
|
|
7441
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "side", "oid", "purposeText"],
|
|
7442
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeCancel" },
|
|
7443
|
+
inputZod: mcpHyperliquidOutcomeCancelInputSchema
|
|
7444
|
+
}),
|
|
7445
|
+
defineProtocolMcpTool({
|
|
7446
|
+
name: "ctm_hyperliquid_outcome_build_split_multisign",
|
|
7447
|
+
actionId: "hyperliquidOutcome.split",
|
|
7448
|
+
protocolId: "hyperliquidOutcome",
|
|
7449
|
+
chainCategory: "evm",
|
|
7450
|
+
description: "Split quote tokens into equal Yes and No shares (userOutcome splitOutcome). EIP-712, no gas.",
|
|
7451
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "amountHuman", "purposeText"],
|
|
7452
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeSplit" },
|
|
7453
|
+
inputZod: mcpHyperliquidOutcomeSplitInputSchema
|
|
7454
|
+
}),
|
|
7455
|
+
defineProtocolMcpTool({
|
|
7456
|
+
name: "ctm_hyperliquid_outcome_build_merge_multisign",
|
|
7457
|
+
actionId: "hyperliquidOutcome.merge",
|
|
7458
|
+
protocolId: "hyperliquidOutcome",
|
|
7459
|
+
chainCategory: "evm",
|
|
7460
|
+
description: "Merge Yes and No shares back into quote (userOutcome mergeOutcome). Omit amount or set amountMax to merge the maximum. EIP-712, no gas.",
|
|
7461
|
+
prerequisites: ["keyGenId", "chainId 999", "outcome", "purposeText"],
|
|
7462
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeMerge" },
|
|
7463
|
+
inputZod: mcpHyperliquidOutcomeMergeInputSchema
|
|
7464
|
+
}),
|
|
7465
|
+
defineProtocolMcpTool({
|
|
7466
|
+
name: "ctm_hyperliquid_outcome_build_merge_question_multisign",
|
|
7467
|
+
actionId: "hyperliquidOutcome.merge-question",
|
|
7468
|
+
protocolId: "hyperliquidOutcome",
|
|
7469
|
+
chainCategory: "evm",
|
|
7470
|
+
description: "Merge Yes shares across one question into quote tokens. EIP-712, no gas.",
|
|
7471
|
+
prerequisites: ["keyGenId", "chainId 999", "question id", "purposeText"],
|
|
7472
|
+
handler: {
|
|
7473
|
+
importPath: "protocols/evm/hyperliquidOutcome",
|
|
7474
|
+
exportName: "buildEvmMultisignBodyHyperliquidOutcomeMergeQuestion"
|
|
7475
|
+
},
|
|
7476
|
+
inputZod: mcpHyperliquidOutcomeMergeQuestionInputSchema
|
|
7477
|
+
}),
|
|
7478
|
+
defineProtocolMcpTool({
|
|
7479
|
+
name: "ctm_hyperliquid_outcome_build_negate_multisign",
|
|
7480
|
+
actionId: "hyperliquidOutcome.negate",
|
|
7481
|
+
protocolId: "hyperliquidOutcome",
|
|
7482
|
+
chainCategory: "evm",
|
|
7483
|
+
description: "Convert No shares of one outcome into Yes shares of the other outcomes in the question. EIP-712, no gas.",
|
|
7484
|
+
prerequisites: ["keyGenId", "chainId 999", "question", "outcome", "amountHuman", "purposeText"],
|
|
7485
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "buildEvmMultisignBodyHyperliquidOutcomeNegate" },
|
|
7486
|
+
inputZod: mcpHyperliquidOutcomeNegateInputSchema
|
|
7487
|
+
})
|
|
7488
|
+
];
|
|
7489
|
+
var catalogQuery = {
|
|
7490
|
+
apiBase: zod.z.string().optional().describe("Override https://app-api.continuumdao.org"),
|
|
7491
|
+
rpcUrl: zod.z.string().optional().describe("Linea RPC used when the marketplace API is offline"),
|
|
7492
|
+
chainId: zod.z.number().int().optional().describe("59144"),
|
|
7493
|
+
includeInactive: zod.z.boolean().optional().describe("Include closed sales, offers, and settled auctions"),
|
|
7494
|
+
paymentToken: evmAddressSchema.optional(),
|
|
7495
|
+
tokenId: zod.z.string().optional(),
|
|
7496
|
+
creator: evmAddressSchema.optional(),
|
|
7497
|
+
seller: evmAddressSchema.optional(),
|
|
7498
|
+
viewer: evmAddressSchema.optional(),
|
|
7499
|
+
limit: zod.z.number().int().optional(),
|
|
7500
|
+
cursor: zod.z.string().optional().describe("nextCursor from the previous page")
|
|
7501
|
+
};
|
|
7502
|
+
var mcpContinuumDaoMarketplaceSearchInputSchema = zod.z.object({
|
|
7503
|
+
apiBase: catalogQuery.apiBase,
|
|
7504
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7505
|
+
chainId: catalogQuery.chainId,
|
|
7506
|
+
kind: zod.z.enum(["listing", "auction", "both"]).optional().describe("Default listing. Use auction or both only when the user wants to bid."),
|
|
7507
|
+
paymentToken: evmAddressSchema.optional().describe("Required when ranking by price and more than one payment token is listed"),
|
|
7508
|
+
minLockedCtm: zod.z.string().optional().describe('Minimum locked CTM, human amount such as "1000"'),
|
|
7509
|
+
maxLockedCtm: zod.z.string().optional().describe("Maximum locked CTM, human amount"),
|
|
7510
|
+
unlockBefore: zod.z.string().optional().describe("ISO date or unix seconds"),
|
|
7511
|
+
unlockAfter: zod.z.string().optional().describe("ISO date or unix seconds"),
|
|
7512
|
+
maxUnlockMonths: zod.z.number().optional().describe("Still locked, and unlocks within this many 30-day months"),
|
|
7513
|
+
sort: zod.z.enum(["pricePerLockedCtm", "price", "locked", "unlock", "deadline"]).optional().describe("Default pricePerLockedCtm, cheapest first. locked defaults to most CTM. unlock and deadline default to soonest."),
|
|
7514
|
+
sortDirection: zod.z.enum(["asc", "desc"]).optional(),
|
|
7515
|
+
limit: zod.z.number().int().min(1).max(25).optional().describe("Ranked rows to return, default 10"),
|
|
7516
|
+
executor: evmAddressSchema.optional().describe("KeyGen address. veCTMs this address sells are omitted."),
|
|
7517
|
+
excludeOwned: zod.z.boolean().optional()
|
|
7518
|
+
});
|
|
7519
|
+
var mcpContinuumDaoMarketplaceFeeAlternativeInputSchema = zod.z.object({
|
|
7520
|
+
apiBase: catalogQuery.apiBase,
|
|
7521
|
+
rpcUrl: zod.z.string().min(1).describe("Linea RPC. Required to read the monthly fee, threshold, and voting power."),
|
|
7522
|
+
chainId: catalogQuery.chainId,
|
|
7523
|
+
payment: zod.z.enum(["fee", "ctm"]).optional().describe("fee matches a USDC month. ctm matches a CTM month. Default fee."),
|
|
7524
|
+
executor: evmAddressSchema.optional().describe("KeyGen address. veCTMs this address sells are omitted.")
|
|
7525
|
+
});
|
|
7526
|
+
var mcpContinuumDaoMarketplaceFetchListingsInputSchema = zod.z.object(catalogQuery);
|
|
7527
|
+
var mcpContinuumDaoMarketplaceFetchOfferingsInputSchema = zod.z.object(catalogQuery);
|
|
7528
|
+
var mcpContinuumDaoMarketplaceFetchAuctionsInputSchema = zod.z.object(catalogQuery);
|
|
7529
|
+
var mcpContinuumDaoMarketplaceFetchConfigInputSchema = zod.z.object({
|
|
7530
|
+
apiBase: catalogQuery.apiBase,
|
|
7531
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7532
|
+
chainId: catalogQuery.chainId
|
|
7533
|
+
});
|
|
7534
|
+
var mcpContinuumDaoMarketplaceFetchTokenInputSchema = zod.z.object({
|
|
7535
|
+
apiBase: catalogQuery.apiBase,
|
|
7536
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7537
|
+
chainId: catalogQuery.chainId,
|
|
7538
|
+
tokenId: zod.z.string().min(1),
|
|
7539
|
+
viewer: catalogQuery.viewer
|
|
7540
|
+
});
|
|
7541
|
+
var mcpContinuumDaoMarketplaceFetchActivityInputSchema = zod.z.object({
|
|
7542
|
+
apiBase: catalogQuery.apiBase,
|
|
7543
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7544
|
+
chainId: catalogQuery.chainId,
|
|
7545
|
+
address: evmAddressSchema,
|
|
7546
|
+
limit: catalogQuery.limit
|
|
7547
|
+
});
|
|
7548
|
+
var mcpContinuumDaoMarketplaceFetchFeePreviewInputSchema = zod.z.object({
|
|
7549
|
+
apiBase: catalogQuery.apiBase,
|
|
7550
|
+
rpcUrl: catalogQuery.rpcUrl,
|
|
7551
|
+
chainId: catalogQuery.chainId,
|
|
7552
|
+
tokenId: zod.z.string().min(1),
|
|
7553
|
+
price: zod.z.string().min(1).describe("Price in payment-token wei")
|
|
7554
|
+
});
|
|
7555
|
+
var source = zod.z.enum(["api", "logs"]);
|
|
7556
|
+
var loose = zod.z.record(zod.z.unknown());
|
|
7557
|
+
var mcpContinuumDaoMarketplaceFeeAlternativeOutputSchema = zod.z.object({
|
|
7558
|
+
payment: zod.z.enum(["fee", "ctm"]),
|
|
7559
|
+
thresholdHuman: zod.z.string(),
|
|
7560
|
+
monthlyFeeHuman: zod.z.string(),
|
|
7561
|
+
monthlyFeeSymbol: zod.z.string(),
|
|
7562
|
+
annualFeeHuman: zod.z.string(),
|
|
7563
|
+
annualFeeCtmHuman: zod.z.string(),
|
|
7564
|
+
example: loose.nullable(),
|
|
7565
|
+
summary: zod.z.string(),
|
|
7566
|
+
source
|
|
7567
|
+
}).passthrough();
|
|
7568
|
+
var mcpContinuumDaoMarketplaceSearchOutputSchema = zod.z.object({
|
|
7569
|
+
sort: zod.z.string(),
|
|
7570
|
+
sortDirection: zod.z.enum(["asc", "desc"]),
|
|
7571
|
+
paymentToken: zod.z.string().nullable(),
|
|
7572
|
+
scanned: zod.z.number(),
|
|
7573
|
+
truncated: zod.z.boolean(),
|
|
7574
|
+
items: zod.z.array(loose),
|
|
7575
|
+
source
|
|
7576
|
+
}).passthrough();
|
|
7577
|
+
var mcpContinuumDaoMarketplaceListOutputSchema = zod.z.object({
|
|
7578
|
+
items: zod.z.array(loose),
|
|
7579
|
+
nextCursor: zod.z.string().nullable().optional(),
|
|
7580
|
+
source
|
|
7581
|
+
}).passthrough();
|
|
7582
|
+
var mcpContinuumDaoMarketplaceConfigOutputSchema = zod.z.object({ source }).passthrough();
|
|
7583
|
+
var mcpContinuumDaoMarketplaceTokenOutputSchema = zod.z.object({ source }).passthrough();
|
|
7584
|
+
var mcpContinuumDaoMarketplaceActivityOutputSchema = zod.z.object({
|
|
7585
|
+
address: zod.z.string(),
|
|
7586
|
+
orders: zod.z.array(loose),
|
|
7587
|
+
auctions: zod.z.array(loose),
|
|
7588
|
+
source
|
|
7589
|
+
}).passthrough();
|
|
7590
|
+
var mcpContinuumDaoMarketplaceFeeOutputSchema = zod.z.object({ source }).passthrough();
|
|
7591
|
+
var wei = zod.z.union([zod.z.string(), zod.z.number()]);
|
|
7592
|
+
var deadline = zod.z.union([zod.z.string(), zod.z.number()]).describe("Unix seconds");
|
|
7593
|
+
var mcpContinuumDaoMarketplaceCreateListingInputSchema = mcpMultisignInput({
|
|
7594
|
+
tokenId: wei,
|
|
7595
|
+
paymentToken: evmAddressSchema,
|
|
7596
|
+
askWei: wei,
|
|
7597
|
+
deadline
|
|
7598
|
+
});
|
|
7599
|
+
var mcpContinuumDaoMarketplaceDelistInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7600
|
+
var mcpContinuumDaoMarketplaceFulfillListingInputSchema = mcpMultisignInput({
|
|
7601
|
+
tokenId: wei,
|
|
7602
|
+
seller: evmAddressSchema,
|
|
7603
|
+
paymentToken: evmAddressSchema,
|
|
7604
|
+
priceWei: wei
|
|
7605
|
+
});
|
|
7606
|
+
var mcpContinuumDaoMarketplaceCreateOfferingInputSchema = mcpMultisignInput({
|
|
7607
|
+
tokenId: wei,
|
|
7608
|
+
paymentToken: evmAddressSchema,
|
|
7609
|
+
bidWei: wei,
|
|
7610
|
+
deadline
|
|
7611
|
+
});
|
|
7612
|
+
var mcpContinuumDaoMarketplaceRescindInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7613
|
+
var mcpContinuumDaoMarketplaceFulfillOfferingInputSchema = mcpMultisignInput({
|
|
7614
|
+
tokenId: wei,
|
|
7615
|
+
buyer: evmAddressSchema,
|
|
7616
|
+
paymentToken: evmAddressSchema,
|
|
7617
|
+
priceWei: wei
|
|
7618
|
+
});
|
|
7619
|
+
var mcpContinuumDaoMarketplaceCreateAuctionInputSchema = mcpMultisignInput({
|
|
7620
|
+
tokenId: wei,
|
|
7621
|
+
paymentToken: evmAddressSchema,
|
|
7622
|
+
deadline,
|
|
7623
|
+
reserveWei: wei,
|
|
7624
|
+
minIncrementWei: wei
|
|
7625
|
+
});
|
|
7626
|
+
var mcpContinuumDaoMarketplaceCancelAuctionInputSchema = mcpMultisignInput({ tokenId: wei });
|
|
7627
|
+
var mcpContinuumDaoMarketplaceAuctionBidInputSchema = mcpMultisignInput({
|
|
7628
|
+
tokenId: wei,
|
|
7629
|
+
seller: evmAddressSchema,
|
|
7630
|
+
priceWei: wei
|
|
7631
|
+
});
|
|
7632
|
+
var mcpContinuumDaoMarketplaceSettleAuctionInputSchema = mcpMultisignInput({
|
|
7633
|
+
tokenId: wei,
|
|
7634
|
+
seller: evmAddressSchema
|
|
7635
|
+
});
|
|
7636
|
+
|
|
7637
|
+
// src/agent/mcpMarketplaceTools.ts
|
|
7638
|
+
var PROTOCOL = "continuum-dao-marketplace";
|
|
7639
|
+
var IMPORT_PATH = "protocols/evm/continuum-dao";
|
|
7640
|
+
function defineRead(def) {
|
|
7641
|
+
return {
|
|
7642
|
+
name: def.name,
|
|
7643
|
+
actionId: def.actionId,
|
|
7644
|
+
protocolId: PROTOCOL,
|
|
7645
|
+
chainCategory: "evm",
|
|
7646
|
+
description: def.description,
|
|
7647
|
+
prerequisites: def.prerequisites,
|
|
7648
|
+
followUp: def.followUp,
|
|
7649
|
+
handler: { importPath: IMPORT_PATH, exportName: def.exportName },
|
|
7650
|
+
inputZod: def.inputZod,
|
|
7651
|
+
outputZod: def.outputZod,
|
|
7652
|
+
inputSchema: zodSchemaToMcpJsonSchema(def.inputZod),
|
|
7653
|
+
outputSchema: zodSchemaToMcpJsonSchema(def.outputZod),
|
|
7654
|
+
parseInput: (data) => def.inputZod.parse(data),
|
|
7655
|
+
parseOutput: (data) => def.outputZod.parse(data)
|
|
7656
|
+
};
|
|
7657
|
+
}
|
|
7658
|
+
function defineWrite(def) {
|
|
7659
|
+
const meta = withMultisignSubmitMcpMeta(def.description, MCP_MULTISIGN_SUBMIT_FOLLOW_UP);
|
|
7660
|
+
const handler = { importPath: IMPORT_PATH, exportName: def.exportName };
|
|
7661
|
+
return {
|
|
7662
|
+
name: def.name,
|
|
7663
|
+
actionId: def.actionId,
|
|
7664
|
+
protocolId: PROTOCOL,
|
|
7665
|
+
chainCategory: "evm",
|
|
7666
|
+
description: meta.description,
|
|
7667
|
+
prerequisites: def.prerequisites,
|
|
7668
|
+
followUp: meta.followUp,
|
|
7669
|
+
handler,
|
|
7670
|
+
inputZod: def.inputZod,
|
|
7671
|
+
outputZod: mcpServerSubmitOutputSchema,
|
|
7672
|
+
inputSchema: agentFacingMultisignJsonSchema(def.inputZod),
|
|
7673
|
+
outputSchema: zodSchemaToMcpJsonSchema(mcpServerSubmitOutputSchema),
|
|
7674
|
+
parseInput: (data) => def.inputZod.parse(data),
|
|
7675
|
+
parseOutput: (data) => mcpServerSubmitOutputSchema.parse(data)
|
|
7676
|
+
};
|
|
7677
|
+
}
|
|
7678
|
+
var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
7679
|
+
defineRead({
|
|
7680
|
+
name: "ctm_continuum_dao_marketplace_fetch_config",
|
|
7681
|
+
actionId: "continuum-dao-marketplace.fetch-config",
|
|
7682
|
+
description: "Marketplace config: payment tokens, WETH, duration bounds, fee tiers. Falls back to the Linea contract when the API is down.",
|
|
7683
|
+
prerequisites: ["chainId 59144", "rpcUrl when the API may be offline"],
|
|
7684
|
+
followUp: ["ctm_continuum_dao_marketplace_search", "ctm_continuum_dao_marketplace_fetch_listings", "ctm_continuum_dao_marketplace_fetch_auctions"],
|
|
7685
|
+
inputZod: mcpContinuumDaoMarketplaceFetchConfigInputSchema,
|
|
7686
|
+
outputZod: mcpContinuumDaoMarketplaceConfigOutputSchema,
|
|
7687
|
+
exportName: "fetchContinuumDaoMarketplaceConfig"
|
|
7688
|
+
}),
|
|
7689
|
+
defineRead({
|
|
7690
|
+
name: "ctm_continuum_dao_marketplace_fee_alternative",
|
|
7691
|
+
actionId: "continuum-dao-marketplace.fee-alternative",
|
|
7692
|
+
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.",
|
|
7693
|
+
prerequisites: ["rpcUrl", "payment fee or ctm"],
|
|
7694
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign"],
|
|
7695
|
+
inputZod: mcpContinuumDaoMarketplaceFeeAlternativeInputSchema,
|
|
7696
|
+
outputZod: mcpContinuumDaoMarketplaceFeeAlternativeOutputSchema,
|
|
7697
|
+
exportName: "quoteContinuumDaoMarketplaceFeeAlternative"
|
|
7698
|
+
}),
|
|
7699
|
+
defineRead({
|
|
7700
|
+
name: "ctm_continuum_dao_marketplace_search",
|
|
7701
|
+
actionId: "continuum-dao-marketplace.search",
|
|
7702
|
+
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.",
|
|
7703
|
+
prerequisites: ["chainId 59144", "rpcUrl when lock snapshots are missing"],
|
|
7704
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign", "ctm_continuum_dao_marketplace_build_auction_bid_multisign"],
|
|
7705
|
+
inputZod: mcpContinuumDaoMarketplaceSearchInputSchema,
|
|
7706
|
+
outputZod: mcpContinuumDaoMarketplaceSearchOutputSchema,
|
|
7707
|
+
exportName: "searchContinuumDaoMarketplace"
|
|
7708
|
+
}),
|
|
7709
|
+
defineRead({
|
|
7710
|
+
name: "ctm_continuum_dao_marketplace_fetch_listings",
|
|
7711
|
+
actionId: "continuum-dao-marketplace.fetch-listings",
|
|
7712
|
+
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.",
|
|
7713
|
+
prerequisites: ["chainId 59144"],
|
|
7714
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_listing_multisign"],
|
|
7715
|
+
inputZod: mcpContinuumDaoMarketplaceFetchListingsInputSchema,
|
|
7716
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7717
|
+
exportName: "fetchContinuumDaoMarketplaceListings"
|
|
7718
|
+
}),
|
|
7719
|
+
defineRead({
|
|
7720
|
+
name: "ctm_continuum_dao_marketplace_fetch_offerings",
|
|
7721
|
+
actionId: "continuum-dao-marketplace.fetch-offerings",
|
|
7722
|
+
description: "Open veCTM offerings. includeInactive adds fulfilled and rescinded rows. API first, then marketplace logs.",
|
|
7723
|
+
prerequisites: ["chainId 59144"],
|
|
7724
|
+
followUp: ["ctm_continuum_dao_marketplace_build_fulfill_offering_multisign"],
|
|
7725
|
+
inputZod: mcpContinuumDaoMarketplaceFetchOfferingsInputSchema,
|
|
7726
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7727
|
+
exportName: "fetchContinuumDaoMarketplaceOfferings"
|
|
7728
|
+
}),
|
|
7729
|
+
defineRead({
|
|
7730
|
+
name: "ctm_continuum_dao_marketplace_fetch_auctions",
|
|
7731
|
+
actionId: "continuum-dao-marketplace.fetch-auctions",
|
|
7732
|
+
description: "Live veCTM auctions (Pending, Active, Complete). includeInactive adds sold, canceled, and expired. Each auction includes bids.",
|
|
7733
|
+
prerequisites: ["chainId 59144"],
|
|
7734
|
+
followUp: ["ctm_continuum_dao_marketplace_build_auction_bid_multisign", "ctm_continuum_dao_marketplace_build_settle_auction_multisign"],
|
|
7735
|
+
inputZod: mcpContinuumDaoMarketplaceFetchAuctionsInputSchema,
|
|
7736
|
+
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7737
|
+
exportName: "fetchContinuumDaoMarketplaceAuctions"
|
|
7738
|
+
}),
|
|
7739
|
+
defineRead({
|
|
7740
|
+
name: "ctm_continuum_dao_marketplace_fetch_token",
|
|
7741
|
+
actionId: "continuum-dao-marketplace.fetch-token",
|
|
7742
|
+
description: "One veCTM: live listing, offerings, and auction, plus history of closed sales and auctions with bids.",
|
|
7743
|
+
prerequisites: ["tokenId"],
|
|
7744
|
+
followUp: ["ctm_continuum_dao_marketplace_fetch_auctions"],
|
|
7745
|
+
inputZod: mcpContinuumDaoMarketplaceFetchTokenInputSchema,
|
|
7746
|
+
outputZod: mcpContinuumDaoMarketplaceTokenOutputSchema,
|
|
7747
|
+
exportName: "fetchContinuumDaoMarketplaceToken"
|
|
7748
|
+
}),
|
|
7749
|
+
defineRead({
|
|
7750
|
+
name: "ctm_continuum_dao_marketplace_fetch_activity",
|
|
7751
|
+
actionId: "continuum-dao-marketplace.fetch-activity",
|
|
7752
|
+
description: "One address\u2019s marketplace orders and auctions, including past sales and bids.",
|
|
7753
|
+
prerequisites: ["address"],
|
|
7754
|
+
followUp: ["ctm_continuum_dao_marketplace_fetch_token"],
|
|
7755
|
+
inputZod: mcpContinuumDaoMarketplaceFetchActivityInputSchema,
|
|
7756
|
+
outputZod: mcpContinuumDaoMarketplaceActivityOutputSchema,
|
|
7757
|
+
exportName: "fetchContinuumDaoMarketplaceActivity"
|
|
7758
|
+
}),
|
|
7759
|
+
defineRead({
|
|
7760
|
+
name: "ctm_continuum_dao_marketplace_fetch_fee_preview",
|
|
7761
|
+
actionId: "continuum-dao-marketplace.fetch-fee-preview",
|
|
7762
|
+
description: "Protocol fee for a veCTM price. Uses the API, then on-chain fee tiers.",
|
|
7763
|
+
prerequisites: ["tokenId", "price wei"],
|
|
7764
|
+
followUp: ["ctm_continuum_dao_marketplace_build_create_listing_multisign"],
|
|
7765
|
+
inputZod: mcpContinuumDaoMarketplaceFetchFeePreviewInputSchema,
|
|
7766
|
+
outputZod: mcpContinuumDaoMarketplaceFeeOutputSchema,
|
|
7767
|
+
exportName: "fetchContinuumDaoMarketplaceFeePreview"
|
|
7768
|
+
}),
|
|
7769
|
+
defineWrite({
|
|
7770
|
+
name: "ctm_continuum_dao_marketplace_build_create_listing_multisign",
|
|
7771
|
+
actionId: "continuum-dao-marketplace.create-listing",
|
|
7772
|
+
description: "List a veCTM. Approves the marketplace for the token id when needed. Linea only.",
|
|
7773
|
+
prerequisites: ["keyGen", "tokenId owned by the KeyGen", "askWei", "deadline"],
|
|
7774
|
+
inputZod: mcpContinuumDaoMarketplaceCreateListingInputSchema,
|
|
7775
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateListing"
|
|
7776
|
+
}),
|
|
7777
|
+
defineWrite({
|
|
7778
|
+
name: "ctm_continuum_dao_marketplace_build_delist_multisign",
|
|
7779
|
+
actionId: "continuum-dao-marketplace.delist",
|
|
7780
|
+
description: "Delist this KeyGen\u2019s open veCTM listing.",
|
|
7781
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7782
|
+
inputZod: mcpContinuumDaoMarketplaceDelistInputSchema,
|
|
7783
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceDelist"
|
|
7784
|
+
}),
|
|
7785
|
+
defineWrite({
|
|
7786
|
+
name: "ctm_continuum_dao_marketplace_build_fulfill_listing_multisign",
|
|
7787
|
+
actionId: "continuum-dao-marketplace.fulfill-listing",
|
|
7788
|
+
description: "Buy a listed veCTM. Refuses when this KeyGen already owns it or is the seller. WETH sends msg.value.",
|
|
7789
|
+
prerequisites: ["keyGen", "tokenId", "seller", "priceWei"],
|
|
7790
|
+
inputZod: mcpContinuumDaoMarketplaceFulfillListingInputSchema,
|
|
7791
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceFulfillListing"
|
|
7792
|
+
}),
|
|
7793
|
+
defineWrite({
|
|
7794
|
+
name: "ctm_continuum_dao_marketplace_build_create_offering_multisign",
|
|
7795
|
+
actionId: "continuum-dao-marketplace.create-offering",
|
|
7796
|
+
description: "Offer on a veCTM this KeyGen does not own. WETH sends msg.value and still approves WETH for later fulfillment.",
|
|
7797
|
+
prerequisites: ["keyGen", "tokenId", "bidWei", "deadline"],
|
|
7798
|
+
inputZod: mcpContinuumDaoMarketplaceCreateOfferingInputSchema,
|
|
7799
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateOffering"
|
|
7800
|
+
}),
|
|
7801
|
+
defineWrite({
|
|
7802
|
+
name: "ctm_continuum_dao_marketplace_build_rescind_multisign",
|
|
7803
|
+
actionId: "continuum-dao-marketplace.rescind",
|
|
7804
|
+
description: "Rescind this KeyGen\u2019s open offering.",
|
|
7805
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7806
|
+
inputZod: mcpContinuumDaoMarketplaceRescindInputSchema,
|
|
7807
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceRescind"
|
|
7808
|
+
}),
|
|
7809
|
+
defineWrite({
|
|
7810
|
+
name: "ctm_continuum_dao_marketplace_build_fulfill_offering_multisign",
|
|
7811
|
+
actionId: "continuum-dao-marketplace.fulfill-offering",
|
|
7812
|
+
description: "Accept an offering on a veCTM this KeyGen owns. Refuses an attached KeyGen.",
|
|
7813
|
+
prerequisites: ["keyGen", "tokenId", "buyer", "priceWei"],
|
|
7814
|
+
inputZod: mcpContinuumDaoMarketplaceFulfillOfferingInputSchema,
|
|
7815
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceFulfillOffering"
|
|
7816
|
+
}),
|
|
7817
|
+
defineWrite({
|
|
7818
|
+
name: "ctm_continuum_dao_marketplace_build_create_auction_multisign",
|
|
7819
|
+
actionId: "continuum-dao-marketplace.create-auction",
|
|
7820
|
+
description: "Start an auction and escrow the veCTM. Refuses an attached KeyGen.",
|
|
7821
|
+
prerequisites: ["keyGen", "tokenId", "reserveWei", "minIncrementWei", "deadline"],
|
|
7822
|
+
inputZod: mcpContinuumDaoMarketplaceCreateAuctionInputSchema,
|
|
7823
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateAuction"
|
|
7824
|
+
}),
|
|
7825
|
+
defineWrite({
|
|
7826
|
+
name: "ctm_continuum_dao_marketplace_build_cancel_auction_multisign",
|
|
7827
|
+
actionId: "continuum-dao-marketplace.cancel-auction",
|
|
7828
|
+
description: "Cancel a pending auction that has no bids. The veCTM returns to the seller.",
|
|
7829
|
+
prerequisites: ["keyGen", "tokenId"],
|
|
7830
|
+
inputZod: mcpContinuumDaoMarketplaceCancelAuctionInputSchema,
|
|
7831
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCancelAuction"
|
|
7832
|
+
}),
|
|
7833
|
+
defineWrite({
|
|
7834
|
+
name: "ctm_continuum_dao_marketplace_build_auction_bid_multisign",
|
|
7835
|
+
actionId: "continuum-dao-marketplace.auction-bid",
|
|
7836
|
+
description: "Bid on a live auction. Refuses when this KeyGen is the seller or already owns the veCTM.",
|
|
7837
|
+
prerequisites: ["keyGen", "tokenId", "seller", "priceWei"],
|
|
7838
|
+
inputZod: mcpContinuumDaoMarketplaceAuctionBidInputSchema,
|
|
7839
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceAuctionBid"
|
|
7840
|
+
}),
|
|
7841
|
+
defineWrite({
|
|
7842
|
+
name: "ctm_continuum_dao_marketplace_build_settle_auction_multisign",
|
|
7843
|
+
actionId: "continuum-dao-marketplace.settle-auction",
|
|
7844
|
+
description: "Settle a completed or expired auction. A completed auction transfers the veCTM to the highest bidder.",
|
|
7845
|
+
prerequisites: ["keyGen", "tokenId", "seller"],
|
|
7846
|
+
inputZod: mcpContinuumDaoMarketplaceSettleAuctionInputSchema,
|
|
7847
|
+
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceSettleAuction"
|
|
7253
7848
|
})
|
|
7254
7849
|
];
|
|
7255
7850
|
|
|
@@ -8820,7 +9415,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8820
9415
|
actionId: "continuum-dao.forum-sign-in-eligible",
|
|
8821
9416
|
protocolId: "continuum-dao",
|
|
8822
9417
|
chainCategory: "evm",
|
|
8823
|
-
description: "Check whether an address may EIP-712 sign in to the forum (
|
|
9418
|
+
description: "Check whether an address may EIP-712 sign in to the forum. Call get_forum_session and forum_me first. Call this only when there is no live node session (loggedIn is false). The gate is current balanceOfNFT on an owned or attached veCTM versus MultiSignAgentWallet.veCtmThresholdPower. Governor getVotes and month-start balanceOfNFTAt do not count. If eligible is false, do not start a multi-sign request.",
|
|
8824
9419
|
prerequisites: ["address (KeyGen ethereumaddress)"],
|
|
8825
9420
|
followUp: ["ctm_continuum_dao_build_forum_sign_in_multisign"],
|
|
8826
9421
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumSignInEligible" },
|
|
@@ -8892,7 +9487,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8892
9487
|
actionId: "continuum-dao.forum-delete",
|
|
8893
9488
|
protocolId: "continuum-dao",
|
|
8894
9489
|
chainCategory: "evm",
|
|
8895
|
-
description: "Admin or moderator soft-delete on forum.continuumdao.org.
|
|
9490
|
+
description: "Admin or moderator soft-delete on forum.continuumdao.org. Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Caller must be an administrator or category moderator \u2014 post owners are refused. Exactly one of: pid (one post), tid/url (one thread), or username (that user\u2019s posts). Optional hours or since; omit both to delete all matches. Confirm with the operator before calling, especially username. Then forum_fetch_post / forum_search to verify.",
|
|
8896
9491
|
prerequisites: ["ticket", "exactly one of pid, tid/url, or username"],
|
|
8897
9492
|
followUp: ["ctm_continuum_dao_forum_fetch_post", "ctm_continuum_dao_forum_recent", "ctm_continuum_dao_forum_sign_out"],
|
|
8898
9493
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumDelete" },
|
|
@@ -8928,7 +9523,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8928
9523
|
actionId: "continuum-dao.forum-reply",
|
|
8929
9524
|
protocolId: "continuum-dao",
|
|
8930
9525
|
chainCategory: "evm",
|
|
8931
|
-
description: "Post an English reply (max 8000 characters) to a forum thread (Ideas, Governance, or MPA listing).
|
|
9526
|
+
description: "Post an English reply (max 8000 characters) to a forum thread (Ideas, Governance, or MPA listing). Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Do not use for Agent Mail \u2014 use mpa_mailbox_send. Locked MPA listings refuse replies.",
|
|
8932
9527
|
prerequisites: ["ticket", "content", "url or tid"],
|
|
8933
9528
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
8934
9529
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReply" },
|
|
@@ -8940,7 +9535,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8940
9535
|
actionId: "continuum-dao.forum-react",
|
|
8941
9536
|
protocolId: "continuum-dao",
|
|
8942
9537
|
chainCategory: "evm",
|
|
8943
|
-
description: "Toggle an allowlisted reaction on a post: +1, -1, heart, tada, eyes.
|
|
9538
|
+
description: "Toggle an allowlisted reaction on a post: +1, -1, heart, tada, eyes. Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in.",
|
|
8944
9539
|
prerequisites: ["ticket", "pid", "emoji"],
|
|
8945
9540
|
followUp: ["ctm_continuum_dao_forum_fetch_post"],
|
|
8946
9541
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReact" },
|
|
@@ -8952,7 +9547,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8952
9547
|
actionId: "continuum-dao.forum-create-topic",
|
|
8953
9548
|
protocolId: "continuum-dao",
|
|
8954
9549
|
chainCategory: "evm",
|
|
8955
|
-
description: "Create a formal proposal thread in a Governance section: decision, election, treasury, constitution, or admin. Requires getVotes >= live proposalThreshold() and
|
|
9550
|
+
description: "Create a formal proposal thread in a Governance section: decision, election, treasury, constitution, or admin. Requires getVotes >= live proposalThreshold(). Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Never use Ideas & Suggestions here. Pass the returned url as forumKey on build_propose_* and register_proposal. Map type Decision\u2192decision, Election\u2192election, Treasury\u2192treasury, Constitution\u2192constitution, Admin\u2192admin.",
|
|
8956
9551
|
prerequisites: ["ticket", "title", "content", "section or cid", "governor configured on the forum"],
|
|
8957
9552
|
followUp: ["ctm_continuum_dao_build_propose_bravo_multisign", "ctm_continuum_dao_build_propose_delta_multisign"],
|
|
8958
9553
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumCreateTopic" },
|
|
@@ -8964,7 +9559,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8964
9559
|
actionId: "continuum-dao.forum-create-idea",
|
|
8965
9560
|
protocolId: "continuum-dao",
|
|
8966
9561
|
chainCategory: "evm",
|
|
8967
|
-
description: "Post an Idea or Suggestion (discussion only) to Ideas & Suggestions for ContinuumDAO protocol / DAO management. Not a proposal and not a valid forumKey. Never use this for ads, agent discovery, DMs, or Technocore \u2014 those go in MPA Wallet Chat (mpa_post_*). Constitution CoC applies; spam or off-section posts are a ban.",
|
|
9562
|
+
description: "Post an Idea or Suggestion (discussion only) to Ideas & Suggestions for ContinuumDAO protocol / DAO management. Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Not a proposal and not a valid forumKey. Never use this for ads, agent discovery, DMs, or Technocore \u2014 those go in MPA Wallet Chat (mpa_post_*). Constitution CoC applies; spam or off-section posts are a ban.",
|
|
8968
9563
|
prerequisites: ["ticket", "title", "content"],
|
|
8969
9564
|
followUp: ["ctm_continuum_dao_forum_reply", "ctm_continuum_dao_forum_sign_out"],
|
|
8970
9565
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumCreateIdea" },
|
|
@@ -8976,7 +9571,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8976
9571
|
actionId: "continuum-dao.mpa-post-listing",
|
|
8977
9572
|
protocolId: "continuum-dao",
|
|
8978
9573
|
chainCategory: "evm",
|
|
8979
|
-
description: "Post one MPA Wallet Chat listing (offer, request, directory, or opportunity). Wallet login required; proposal threshold is not. One active listing per kind. Forum injects the HITL sentence. Never post ads to Ideas or Governance. Agents use this, not NodeBB chat.",
|
|
9574
|
+
description: "Post one MPA Wallet Chat listing (offer, request, directory, or opportunity). Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Wallet login required; proposal threshold is not. One active listing per kind. Forum injects the HITL sentence. Never post ads to Ideas or Governance. Agents use this, not NodeBB chat.",
|
|
8980
9575
|
prerequisites: ["ticket", "kind", "summary", "details", "capabilities"],
|
|
8981
9576
|
followUp: ["ctm_continuum_dao_forum_reply", "ctm_continuum_dao_mpa_retract"],
|
|
8982
9577
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaListing" },
|
|
@@ -8988,7 +9583,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
8988
9583
|
actionId: "continuum-dao.mpa-reply",
|
|
8989
9584
|
protocolId: "continuum-dao",
|
|
8990
9585
|
chainCategory: "evm",
|
|
8991
|
-
description: "Reply on an MPA listing thread (30s cooldown). Locked listings refuse replies. Not for Agent Mail \u2014 use mpa_mailbox_send.",
|
|
9586
|
+
description: "Reply on an MPA listing thread (30s cooldown). Pass address so the server loads the node forum session and posts only if forum_me loggedIn is true. Locked listings refuse replies. Not for Agent Mail \u2014 use mpa_mailbox_send.",
|
|
8992
9587
|
prerequisites: ["ticket", "content", "url or tid"],
|
|
8993
9588
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
8994
9589
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReply" },
|
|
@@ -9000,7 +9595,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9000
9595
|
actionId: "continuum-dao.mpa-retract",
|
|
9001
9596
|
protocolId: "continuum-dao",
|
|
9002
9597
|
chainCategory: "evm",
|
|
9003
|
-
description: "Retract your MPA listing (locks immediately; soft-delete 90 days later).
|
|
9598
|
+
description: "Retract your MPA listing (locks immediately; soft-delete 90 days later). Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Requires url or tid.",
|
|
9004
9599
|
prerequisites: ["ticket", "url or tid"],
|
|
9005
9600
|
followUp: ["ctm_continuum_dao_mpa_post_listing"],
|
|
9006
9601
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaRetract" },
|
|
@@ -9012,7 +9607,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9012
9607
|
actionId: "continuum-dao.mpa-flag",
|
|
9013
9608
|
protocolId: "continuum-dao",
|
|
9014
9609
|
chainCategory: "evm",
|
|
9015
|
-
description: "Flag an MPA listing for moderators. Requires
|
|
9610
|
+
description: "Flag an MPA listing for moderators. Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Requires reason and url or tid.",
|
|
9016
9611
|
prerequisites: ["ticket", "reason", "url or tid"],
|
|
9017
9612
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
9018
9613
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaFlag" },
|
|
@@ -9048,7 +9643,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9048
9643
|
actionId: "continuum-dao.mpa-mailbox-send",
|
|
9049
9644
|
protocolId: "continuum-dao",
|
|
9050
9645
|
chainCategory: "evm",
|
|
9051
|
-
description: "Send an Agent Mail message to another KeyGen (username or existing tid/url). Agents must use this, never NodeBB chat or forum_reply on mail threads.",
|
|
9646
|
+
description: "Send an Agent Mail message to another KeyGen (username or existing tid/url). Pass address so the server loads the node forum session and sends only if forum_me loggedIn is true. Do not call build_forum_sign_in_multisign when that session is logged in. Agents must use this, never NodeBB chat or forum_reply on mail threads.",
|
|
9052
9647
|
prerequisites: ["ticket", "content", "username or url or tid"],
|
|
9053
9648
|
followUp: ["ctm_continuum_dao_mpa_mailbox_list"],
|
|
9054
9649
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaMailboxSend" },
|
|
@@ -9088,7 +9683,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9088
9683
|
actionId: "continuum-dao.forum-unread",
|
|
9089
9684
|
protocolId: "continuum-dao",
|
|
9090
9685
|
chainCategory: "evm",
|
|
9091
|
-
description: "List unread Forum topics for the logged-in user (NodeBB Unread).
|
|
9686
|
+
description: "List unread Forum topics for the logged-in user (NodeBB Unread). Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Optional filter all/new/watched/unreplied. Returns tid, title, url, replyCount, lastPostAt \u2014 then forum_fetch_thread and forum_mark_read. Interactive only; never from cron.",
|
|
9092
9687
|
prerequisites: ["ticket"],
|
|
9093
9688
|
followUp: ["ctm_continuum_dao_forum_fetch_thread", "ctm_continuum_dao_forum_mark_read"],
|
|
9094
9689
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumUnread" },
|
|
@@ -9100,7 +9695,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9100
9695
|
actionId: "continuum-dao.forum-mark-read",
|
|
9101
9696
|
protocolId: "continuum-dao",
|
|
9102
9697
|
chainCategory: "evm",
|
|
9103
|
-
description: "Mark Forum topic(s) read for the logged-in user (clears NodeBB Unread and topic notifications).
|
|
9698
|
+
description: "Mark Forum topic(s) read for the logged-in user (clears NodeBB Unread and topic notifications). Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Exactly one of tid/url, tids, or all. Confirm before all. Interactive only; never from cron.",
|
|
9104
9699
|
prerequisites: ["ticket", "exactly one of tid/url, tids, or all"],
|
|
9105
9700
|
followUp: ["ctm_continuum_dao_forum_unread", "ctm_continuum_dao_forum_fetch_thread"],
|
|
9106
9701
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumMarkRead" },
|
|
@@ -9112,7 +9707,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9112
9707
|
actionId: "continuum-dao.forum-mark-unread",
|
|
9113
9708
|
protocolId: "continuum-dao",
|
|
9114
9709
|
chainCategory: "evm",
|
|
9115
|
-
description: "Mark one Forum topic unread for the logged-in user.
|
|
9710
|
+
description: "Mark one Forum topic unread for the logged-in user. Pass address so the server loads the node forum session and continues only if forum_me loggedIn is true. Requires tid or url. Interactive only; never from cron.",
|
|
9116
9711
|
prerequisites: ["ticket", "tid or url"],
|
|
9117
9712
|
followUp: ["ctm_continuum_dao_forum_unread"],
|
|
9118
9713
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumMarkUnread" },
|
|
@@ -9124,7 +9719,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9124
9719
|
actionId: "continuum-dao.forum-sign-out",
|
|
9125
9720
|
protocolId: "continuum-dao",
|
|
9126
9721
|
chainCategory: "evm",
|
|
9127
|
-
description: "Revoke the forum ticket and destroy NodeBB sessions for that user.
|
|
9722
|
+
description: "Revoke the forum ticket and destroy NodeBB sessions for that user. Pass address or ticket. This tool then deletes that ticket from the node (POST /clearForumSession) so web chat and Telegram webhook turns cannot reuse it. Does not create a multi-sign request.",
|
|
9128
9723
|
prerequisites: ["ticket from forum sign-in"],
|
|
9129
9724
|
followUp: ["ctm_continuum_dao_forum_me"],
|
|
9130
9725
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumSignOut" },
|
|
@@ -9704,12 +10299,72 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9704
10299
|
inputZod: mcpDeriveFetchOpenOrdersInputSchema,
|
|
9705
10300
|
outputZod: mcpDeriveFetchOpenOrdersOutputSchema
|
|
9706
10301
|
}),
|
|
10302
|
+
defineMcpTool({
|
|
10303
|
+
name: "ctm_hyperliquid_outcome_fetch_markets",
|
|
10304
|
+
actionId: "hyperliquidOutcome.fetch-markets",
|
|
10305
|
+
protocolId: "hyperliquidOutcome",
|
|
10306
|
+
chainCategory: "evm",
|
|
10307
|
+
description: "Live Hyperliquid HIP-4 outcome markets from outcomeMeta, with Yes/No mids. Optional query substring. Chain 999.",
|
|
10308
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome"],
|
|
10309
|
+
followUp: ["ctm_hyperliquid_outcome_fetch_market", "ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10310
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchMarketsSummary" },
|
|
10311
|
+
inputZod: mcpHyperliquidOutcomeFetchMarketsInputSchema,
|
|
10312
|
+
outputZod: mcpHyperliquidOutcomeFetchMarketsOutputSchema
|
|
10313
|
+
}),
|
|
10314
|
+
defineMcpTool({
|
|
10315
|
+
name: "ctm_hyperliquid_outcome_fetch_market",
|
|
10316
|
+
actionId: "hyperliquidOutcome.fetch-market",
|
|
10317
|
+
protocolId: "hyperliquidOutcome",
|
|
10318
|
+
chainCategory: "evm",
|
|
10319
|
+
description: "One Hyperliquid outcome market plus both Yes and No order books.",
|
|
10320
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "outcome id"],
|
|
10321
|
+
followUp: ["ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10322
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchMarketSummary" },
|
|
10323
|
+
inputZod: mcpHyperliquidOutcomeFetchMarketInputSchema,
|
|
10324
|
+
outputZod: mcpHyperliquidOutcomeFetchMarketOutputSchema
|
|
10325
|
+
}),
|
|
10326
|
+
defineMcpTool({
|
|
10327
|
+
name: "ctm_hyperliquid_outcome_fetch_orderbook",
|
|
10328
|
+
actionId: "hyperliquidOutcome.fetch-orderbook",
|
|
10329
|
+
protocolId: "hyperliquidOutcome",
|
|
10330
|
+
chainCategory: "evm",
|
|
10331
|
+
description: "l2Book for one Hyperliquid outcome side (default yes).",
|
|
10332
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "outcome id"],
|
|
10333
|
+
followUp: ["ctm_hyperliquid_outcome_build_order_multisign"],
|
|
10334
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchOrderbookSummary" },
|
|
10335
|
+
inputZod: mcpHyperliquidOutcomeFetchOrderbookInputSchema,
|
|
10336
|
+
outputZod: mcpHyperliquidOutcomeFetchOrderbookOutputSchema
|
|
10337
|
+
}),
|
|
10338
|
+
defineMcpTool({
|
|
10339
|
+
name: "ctm_hyperliquid_outcome_fetch_positions",
|
|
10340
|
+
actionId: "hyperliquidOutcome.fetch-positions",
|
|
10341
|
+
protocolId: "hyperliquidOutcome",
|
|
10342
|
+
chainCategory: "evm",
|
|
10343
|
+
description: "Quote balances and HIP-4 share balances (+encoding) for a HyperCore address. Not ERC20s \u2014 do not add_to_token_registry.",
|
|
10344
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "user address"],
|
|
10345
|
+
followUp: ["ctm_hyperliquid_outcome_build_merge_multisign"],
|
|
10346
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchPositionsSummary" },
|
|
10347
|
+
inputZod: mcpHyperliquidOutcomeFetchAccountInputSchema,
|
|
10348
|
+
outputZod: mcpHyperliquidOutcomeFetchPositionsOutputSchema
|
|
10349
|
+
}),
|
|
10350
|
+
defineMcpTool({
|
|
10351
|
+
name: "ctm_hyperliquid_outcome_fetch_open_orders",
|
|
10352
|
+
actionId: "hyperliquidOutcome.fetch-open-orders",
|
|
10353
|
+
protocolId: "hyperliquidOutcome",
|
|
10354
|
+
chainCategory: "evm",
|
|
10355
|
+
description: "Open Hyperliquid outcome orders (#encoding coins) for a user.",
|
|
10356
|
+
prerequisites: ["load_defi_protocol hyperliquidOutcome", "user address"],
|
|
10357
|
+
followUp: ["ctm_hyperliquid_outcome_build_cancel_multisign"],
|
|
10358
|
+
handler: { importPath: "protocols/evm/hyperliquidOutcome", exportName: "hyperliquidOutcomeFetchOpenOrdersSummary" },
|
|
10359
|
+
inputZod: mcpHyperliquidOutcomeFetchAccountInputSchema,
|
|
10360
|
+
outputZod: mcpHyperliquidOutcomeFetchOpenOrdersOutputSchema
|
|
10361
|
+
}),
|
|
9707
10362
|
defineMcpTool({
|
|
9708
10363
|
name: "search_prediction_markets",
|
|
9709
10364
|
actionId: "prediction-markets.search",
|
|
9710
10365
|
protocolId: "prediction-markets",
|
|
9711
10366
|
chainCategory: "evm",
|
|
9712
|
-
description: 'Venue-agnostic prediction market search
|
|
10367
|
+
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.',
|
|
9713
10368
|
prerequisites: [],
|
|
9714
10369
|
followUp: ["get_prediction_market", "load_defi_protocol", "get_defi_protocol_skill"],
|
|
9715
10370
|
handler: { importPath: "protocols/evm/trueo", exportName: "searchPredictionMarketsSummary" },
|
|
@@ -9721,7 +10376,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9721
10376
|
actionId: "prediction-markets.get",
|
|
9722
10377
|
protocolId: "prediction-markets",
|
|
9723
10378
|
chainCategory: "evm",
|
|
9724
|
-
description:
|
|
10379
|
+
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.",
|
|
9725
10380
|
prerequisites: ["venueMarketId from search_prediction_markets"],
|
|
9726
10381
|
followUp: [
|
|
9727
10382
|
"load_defi_protocol",
|
|
@@ -9838,7 +10493,8 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9838
10493
|
];
|
|
9839
10494
|
var MCP_TOOL_DEFINITIONS = [
|
|
9840
10495
|
...CORE_MCP_TOOL_DEFINITIONS,
|
|
9841
|
-
...MCP_PROTOCOL_TOOL_DEFINITIONS
|
|
10496
|
+
...MCP_PROTOCOL_TOOL_DEFINITIONS,
|
|
10497
|
+
...MCP_MARKETPLACE_TOOL_DEFINITIONS
|
|
9842
10498
|
];
|
|
9843
10499
|
function buildToolSchemaMap(kind) {
|
|
9844
10500
|
const out = {};
|
|
@@ -11659,12 +12315,52 @@ registerProtocolModule(aerodromeProtocolModule);
|
|
|
11659
12315
|
|
|
11660
12316
|
// src/protocols/evm/continuum-dao/index.ts
|
|
11661
12317
|
init_constants2();
|
|
12318
|
+
|
|
12319
|
+
// src/protocols/evm/continuum-dao/marketplaceModule.ts
|
|
12320
|
+
init_constants2();
|
|
12321
|
+
var common = ["keyGen", "purposeText", "useCustomGas"];
|
|
12322
|
+
var continuumDaoMarketplaceProtocolModule = {
|
|
12323
|
+
id: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID,
|
|
12324
|
+
chainCategory: "evm",
|
|
12325
|
+
isChainSupported(ctx) {
|
|
12326
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
12327
|
+
const n = typeof ctx.chainId === "number" ? ctx.chainId : Number.parseInt(String(ctx.chainId), 10);
|
|
12328
|
+
return n === CONTINUUM_DAO_LINEA_CHAIN_ID;
|
|
12329
|
+
},
|
|
12330
|
+
isTokenSupported(token) {
|
|
12331
|
+
return token.category === "evm" && (token.kind === "erc20" || token.kind === "erc721");
|
|
12332
|
+
},
|
|
12333
|
+
actions: [
|
|
12334
|
+
{ id: "continuum-dao-marketplace.fetch-config", protocolId: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, chainCategory: "evm", description: "Marketplace payment tokens, durations, and fees", commonParams: [], params: {} },
|
|
12335
|
+
{ 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: {} },
|
|
12336
|
+
{ 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: {} },
|
|
12337
|
+
{ 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: {} },
|
|
12338
|
+
{ 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: {} },
|
|
12339
|
+
{ 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: {} },
|
|
12340
|
+
{ 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" } } },
|
|
12341
|
+
{ 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" } } },
|
|
12342
|
+
{ 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: {} },
|
|
12343
|
+
{ 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" } } },
|
|
12344
|
+
{ 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" } } },
|
|
12345
|
+
{ 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" } } },
|
|
12346
|
+
{ 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" } } },
|
|
12347
|
+
{ 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" } } },
|
|
12348
|
+
{ 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" } } },
|
|
12349
|
+
{ 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" } } },
|
|
12350
|
+
{ 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" } } },
|
|
12351
|
+
{ 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" } } },
|
|
12352
|
+
{ 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" } } }
|
|
12353
|
+
]
|
|
12354
|
+
};
|
|
12355
|
+
|
|
12356
|
+
// src/protocols/evm/continuum-dao/index.ts
|
|
11662
12357
|
init_constants2();
|
|
11663
12358
|
init_governance();
|
|
11664
12359
|
init_simulateProposal();
|
|
11665
12360
|
init_foundryProposalScript();
|
|
11666
12361
|
init_explainProposal();
|
|
11667
12362
|
init_forum();
|
|
12363
|
+
registerProtocolModule(continuumDaoMarketplaceProtocolModule);
|
|
11668
12364
|
var continuumDaoProtocolModule = {
|
|
11669
12365
|
id: CONTINUUM_DAO_PROTOCOL_ID,
|
|
11670
12366
|
chainCategory: "evm",
|
|
@@ -13058,6 +13754,9 @@ function isTrueoChainSupported(chainId) {
|
|
|
13058
13754
|
return TRUEO_CHAIN_IDS.includes(chainId);
|
|
13059
13755
|
}
|
|
13060
13756
|
|
|
13757
|
+
// src/protocols/evm/hyperliquidOutcome/api.ts
|
|
13758
|
+
var HYPERLIQUID_OUTCOME_PROTOCOL_ID = "hyperliquidOutcome";
|
|
13759
|
+
|
|
13061
13760
|
// src/protocols/evm/trueo/index.ts
|
|
13062
13761
|
var trueoProtocolModule = {
|
|
13063
13762
|
id: TRUEO_PROTOCOL_ID,
|
|
@@ -13137,6 +13836,71 @@ var trueoProtocolModule = {
|
|
|
13137
13836
|
]
|
|
13138
13837
|
};
|
|
13139
13838
|
registerProtocolModule(trueoProtocolModule);
|
|
13839
|
+
|
|
13840
|
+
// src/protocols/evm/hyperliquidOutcome/index.ts
|
|
13841
|
+
var hyperliquidOutcomeProtocolModule = {
|
|
13842
|
+
id: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13843
|
+
chainCategory: "evm",
|
|
13844
|
+
isChainSupported(ctx) {
|
|
13845
|
+
if (ctx.chainCategory !== "evm") return false;
|
|
13846
|
+
const chainId = typeof ctx.chainId === "number" ? ctx.chainId : Number(ctx.chainId);
|
|
13847
|
+
return Number.isFinite(chainId) && isHyperliquidChainSupported(chainId);
|
|
13848
|
+
},
|
|
13849
|
+
isTokenSupported(token) {
|
|
13850
|
+
return token.category === "evm" && token.kind === "native";
|
|
13851
|
+
},
|
|
13852
|
+
actions: [
|
|
13853
|
+
{
|
|
13854
|
+
id: "hyperliquidOutcome.order",
|
|
13855
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13856
|
+
chainCategory: "evm",
|
|
13857
|
+
description: "Limit buy or sell a HIP-4 outcome side via Hyperliquid /exchange",
|
|
13858
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13859
|
+
params: {}
|
|
13860
|
+
},
|
|
13861
|
+
{
|
|
13862
|
+
id: "hyperliquidOutcome.cancel",
|
|
13863
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13864
|
+
chainCategory: "evm",
|
|
13865
|
+
description: "Cancel a resting HIP-4 outcome order",
|
|
13866
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13867
|
+
params: {}
|
|
13868
|
+
},
|
|
13869
|
+
{
|
|
13870
|
+
id: "hyperliquidOutcome.split",
|
|
13871
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13872
|
+
chainCategory: "evm",
|
|
13873
|
+
description: "Split quote tokens into Yes and No shares",
|
|
13874
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13875
|
+
params: {}
|
|
13876
|
+
},
|
|
13877
|
+
{
|
|
13878
|
+
id: "hyperliquidOutcome.merge",
|
|
13879
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13880
|
+
chainCategory: "evm",
|
|
13881
|
+
description: "Merge Yes and No shares back into quote tokens",
|
|
13882
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13883
|
+
params: {}
|
|
13884
|
+
},
|
|
13885
|
+
{
|
|
13886
|
+
id: "hyperliquidOutcome.merge-question",
|
|
13887
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13888
|
+
chainCategory: "evm",
|
|
13889
|
+
description: "Merge Yes shares across a question into quote tokens",
|
|
13890
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13891
|
+
params: {}
|
|
13892
|
+
},
|
|
13893
|
+
{
|
|
13894
|
+
id: "hyperliquidOutcome.negate",
|
|
13895
|
+
protocolId: HYPERLIQUID_OUTCOME_PROTOCOL_ID,
|
|
13896
|
+
chainCategory: "evm",
|
|
13897
|
+
description: "Convert No shares of one outcome into Yes shares of the other outcomes",
|
|
13898
|
+
commonParams: ["keyGen", "purposeText"],
|
|
13899
|
+
params: {}
|
|
13900
|
+
}
|
|
13901
|
+
]
|
|
13902
|
+
};
|
|
13903
|
+
registerProtocolModule(hyperliquidOutcomeProtocolModule);
|
|
13140
13904
|
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");
|
|
13141
13905
|
var SKILL_PROTOCOL_IDS = [
|
|
13142
13906
|
"aave-v4",
|
|
@@ -13155,9 +13919,11 @@ var SKILL_PROTOCOL_IDS = [
|
|
|
13155
13919
|
"aerodrome",
|
|
13156
13920
|
"pendle",
|
|
13157
13921
|
"continuum-dao",
|
|
13922
|
+
"continuum-dao-marketplace",
|
|
13158
13923
|
"compound-v3",
|
|
13159
13924
|
"derive",
|
|
13160
13925
|
"trueo",
|
|
13926
|
+
"hyperliquidOutcome",
|
|
13161
13927
|
"yield-compare"
|
|
13162
13928
|
];
|
|
13163
13929
|
function getToolsForProtocol(protocolId) {
|
|
@@ -13526,6 +14292,17 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
13526
14292
|
}
|
|
13527
14293
|
}
|
|
13528
14294
|
}),
|
|
14295
|
+
hyperliquidOutcome: advisor("hyperliquidOutcome", "api_underlyings", {
|
|
14296
|
+
async supportedChainIds() {
|
|
14297
|
+
return [...HYPERLIQUID_SUPPORTED_CHAIN_IDS];
|
|
14298
|
+
},
|
|
14299
|
+
async supportedTokens() {
|
|
14300
|
+
return {
|
|
14301
|
+
tokens: [],
|
|
14302
|
+
notes: 'HIP-4 outcome markets on HyperCore (chainId 999). Yes/No shares are exchange balances, not ERC20s. Search with search_prediction_markets venues ["hyperliquid"].'
|
|
14303
|
+
};
|
|
14304
|
+
}
|
|
14305
|
+
}),
|
|
13529
14306
|
hyperliquid: advisor("hyperliquid", "api_underlyings", {
|
|
13530
14307
|
async supportedChainIds() {
|
|
13531
14308
|
return [...HYPERLIQUID_SUPPORTED_CHAIN_IDS];
|
|
@@ -13590,6 +14367,22 @@ var PROTOCOL_SUPPORT_ADVISORS = {
|
|
|
13590
14367
|
};
|
|
13591
14368
|
}
|
|
13592
14369
|
}),
|
|
14370
|
+
[CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID]: advisor(CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, "fixed_addresses", {
|
|
14371
|
+
async supportedChainIds() {
|
|
14372
|
+
return [59144];
|
|
14373
|
+
},
|
|
14374
|
+
async supportedTokens(chainId) {
|
|
14375
|
+
const ve = votingEscrowAddressOnEvmChain(chainId);
|
|
14376
|
+
const market = votingEscrowMarketplaceAddressOnEvmChain(chainId);
|
|
14377
|
+
const tokens = [];
|
|
14378
|
+
if (ve) tokens.push({ address: ve, symbol: "veCTM", roles: ["position_nft"] });
|
|
14379
|
+
if (market) tokens.push({ address: market, symbol: "veCTM-market", roles: ["protocol"] });
|
|
14380
|
+
return {
|
|
14381
|
+
tokens,
|
|
14382
|
+
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."
|
|
14383
|
+
};
|
|
14384
|
+
}
|
|
14385
|
+
}),
|
|
13593
14386
|
[COMPOUND_V3_PROTOCOL_ID]: advisor(COMPOUND_V3_PROTOCOL_ID, "api_underlyings", {
|
|
13594
14387
|
async supportedChainIds() {
|
|
13595
14388
|
return listCompoundV3SupportedChainIds();
|
|
@@ -13773,26 +14566,6 @@ function listProtocolSupportAdvisorIds() {
|
|
|
13773
14566
|
}
|
|
13774
14567
|
|
|
13775
14568
|
// src/agent/catalog.ts
|
|
13776
|
-
registerProtocolModule(uniswapV4ProtocolModule);
|
|
13777
|
-
registerProtocolModule(curveDaoProtocolModule);
|
|
13778
|
-
registerProtocolModule(lidoProtocolModule);
|
|
13779
|
-
registerProtocolModule(ethenaProtocolModule);
|
|
13780
|
-
registerProtocolModule(mapleProtocolModule);
|
|
13781
|
-
registerProtocolModule(skyProtocolModule);
|
|
13782
|
-
registerProtocolModule(aaveV4ProtocolModule);
|
|
13783
|
-
registerProtocolModule(eulerV2ProtocolModule);
|
|
13784
|
-
registerProtocolModule(gmxProtocolModule);
|
|
13785
|
-
registerProtocolModule(hyperliquidProtocolModule);
|
|
13786
|
-
registerProtocolModule(arcusProtocolModule);
|
|
13787
|
-
registerProtocolModule(morphoProtocolModule);
|
|
13788
|
-
registerProtocolModule(circleCctpProtocolModule);
|
|
13789
|
-
registerProtocolModule(veniceProtocolModule);
|
|
13790
|
-
registerProtocolModule(aerodromeProtocolModule);
|
|
13791
|
-
registerProtocolModule(continuumDaoProtocolModule);
|
|
13792
|
-
registerProtocolModule(compoundV3ProtocolModule);
|
|
13793
|
-
registerProtocolModule(pendleProtocolModule);
|
|
13794
|
-
registerProtocolModule(deriveProtocolModule);
|
|
13795
|
-
registerProtocolModule(trueoProtocolModule);
|
|
13796
14569
|
function getAgentCatalog() {
|
|
13797
14570
|
return {
|
|
13798
14571
|
protocols: getProtocolModules(),
|
|
@@ -13821,6 +14594,7 @@ function getAgentCatalog() {
|
|
|
13821
14594
|
pendle: pendleProtocolModule,
|
|
13822
14595
|
derive: deriveProtocolModule,
|
|
13823
14596
|
trueo: trueoProtocolModule,
|
|
14597
|
+
hyperliquidOutcome: hyperliquidOutcomeProtocolModule,
|
|
13824
14598
|
/** Prefer getAgentCatalogForMcp() or getMcpToolDefinitions() for MCP servers. */
|
|
13825
14599
|
mcp: getAgentCatalogForMcp()
|
|
13826
14600
|
};
|