@continuumdao/ctm-mpc-defi 0.2.51 → 0.2.53
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 +66 -31
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +87 -21
- package/dist/agent/catalog.js +66 -31
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/continuum-dao/SKILL.md +7 -6
- package/dist/protocols/evm/continuum-dao/index.cjs +44 -4
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +8 -1
- package/dist/protocols/evm/continuum-dao/index.js +44 -4
- package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/catalog.cjs
CHANGED
|
@@ -573,7 +573,7 @@ function listContinuumDaoDefaultAssets() {
|
|
|
573
573
|
}
|
|
574
574
|
return out;
|
|
575
575
|
}
|
|
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;
|
|
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_LINEA_GOVERNOR_ADDRESS, CONTINUUM_DAO_DEPLOYMENTS;
|
|
577
577
|
var init_constants2 = __esm({
|
|
578
578
|
"src/protocols/evm/continuum-dao/constants.ts"() {
|
|
579
579
|
CONTINUUM_DAO_PROTOCOL_ID = "continuum-dao";
|
|
@@ -599,7 +599,7 @@ var init_constants2 = __esm({
|
|
|
599
599
|
viem.getAddress("0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f");
|
|
600
600
|
viem.getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff");
|
|
601
601
|
CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
|
|
602
|
-
viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
602
|
+
CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS = viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
603
603
|
viem.getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
|
|
604
604
|
[
|
|
605
605
|
viem.getAddress("0xd23eecBe0362F36b254F774C274823Cbfc482a10"),
|
|
@@ -610,7 +610,8 @@ var init_constants2 = __esm({
|
|
|
610
610
|
[CONTINUUM_DAO_LINEA_CHAIN_ID]: {
|
|
611
611
|
...UNSET,
|
|
612
612
|
ctm: CTM_TOKEN_ADDRESS,
|
|
613
|
-
votingEscrow: VOTING_ESCROW_LINEA_ADDRESS
|
|
613
|
+
votingEscrow: VOTING_ESCROW_LINEA_ADDRESS,
|
|
614
|
+
governor: CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS
|
|
614
615
|
},
|
|
615
616
|
[CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID]: { ...UNSET },
|
|
616
617
|
[CONTINUUM_DAO_ETHEREUM_CHAIN_ID]: {
|
|
@@ -3699,7 +3700,16 @@ var mcpContinuumDaoRegisterProposalOutputSchema = zod.z.object({
|
|
|
3699
3700
|
ok: zod.z.literal(true),
|
|
3700
3701
|
result: zod.z.unknown()
|
|
3701
3702
|
});
|
|
3702
|
-
var
|
|
3703
|
+
var forumNodeAddressField = zod.z.string().optional().describe(
|
|
3704
|
+
"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."
|
|
3705
|
+
);
|
|
3706
|
+
var forumUrlField = {
|
|
3707
|
+
forumUrl: zod.z.string().optional(),
|
|
3708
|
+
ticket: zod.z.string().optional().describe(
|
|
3709
|
+
"Forum ticket from get_forum_session. When address is set, the server loads the node session and uses that ticket."
|
|
3710
|
+
),
|
|
3711
|
+
address: forumNodeAddressField
|
|
3712
|
+
};
|
|
3703
3713
|
var mcpContinuumDaoForumResolveInputSchema = zod.z.object({
|
|
3704
3714
|
url: zod.z.string().optional(),
|
|
3705
3715
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
|
|
@@ -3785,7 +3795,10 @@ var mcpContinuumDaoForumDeleteInputSchema = zod.z.object({
|
|
|
3785
3795
|
"Only delete posts/threads in the last X hours. Omit with since for all."
|
|
3786
3796
|
),
|
|
3787
3797
|
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."),
|
|
3788
|
-
ticket: zod.z.string().min(1).describe(
|
|
3798
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3799
|
+
"Forum ticket from get_forum_session. Omit when address is set; the server loads the node session. Caller must be an admin or moderator."
|
|
3800
|
+
),
|
|
3801
|
+
address: forumNodeAddressField,
|
|
3789
3802
|
forumUrl: zod.z.string().optional()
|
|
3790
3803
|
}).refine(
|
|
3791
3804
|
(v) => {
|
|
@@ -3863,7 +3876,10 @@ var mcpContinuumDaoForumMeInputSchema = zod.z.object({
|
|
|
3863
3876
|
});
|
|
3864
3877
|
var mcpContinuumDaoForumMeOutputSchema = zod.z.unknown();
|
|
3865
3878
|
var mcpContinuumDaoForumUnreadInputSchema = zod.z.object({
|
|
3866
|
-
ticket: zod.z.string().min(1).describe(
|
|
3879
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3880
|
+
"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."
|
|
3881
|
+
),
|
|
3882
|
+
address: forumNodeAddressField,
|
|
3867
3883
|
filter: zod.z.enum(["all", "new", "watched", "unreplied"]).optional().describe("NodeBB Unread filter. Default all (watched/tracked categories + followed topics)."),
|
|
3868
3884
|
start: agentCoercedOptionalIntSchema(zod.z.number().int().nonnegative()),
|
|
3869
3885
|
limit: agentCoercedOptionalIntSchema(zod.z.number().int().positive().max(100)),
|
|
@@ -3897,7 +3913,10 @@ var mcpContinuumDaoForumUnreadOutputSchema = zod.z.object({
|
|
|
3897
3913
|
nextStart: zod.z.number().nullable().optional()
|
|
3898
3914
|
});
|
|
3899
3915
|
var mcpContinuumDaoForumMarkReadInputSchema = zod.z.object({
|
|
3900
|
-
ticket: zod.z.string().min(1).describe(
|
|
3916
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3917
|
+
"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."
|
|
3918
|
+
),
|
|
3919
|
+
address: forumNodeAddressField,
|
|
3901
3920
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Mark this thread read."),
|
|
3902
3921
|
url: zod.z.string().optional().describe("Mark this thread read by topic URL."),
|
|
3903
3922
|
tids: zod.z.array(zod.z.union([zod.z.string(), zod.z.number()])).optional().describe("Mark these threads read."),
|
|
@@ -3913,7 +3932,10 @@ var mcpContinuumDaoForumMarkReadInputSchema = zod.z.object({
|
|
|
3913
3932
|
);
|
|
3914
3933
|
var mcpContinuumDaoForumMarkReadOutputSchema = zod.z.unknown();
|
|
3915
3934
|
var mcpContinuumDaoForumMarkUnreadInputSchema = zod.z.object({
|
|
3916
|
-
ticket: zod.z.string().min(1).describe(
|
|
3935
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3936
|
+
"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."
|
|
3937
|
+
),
|
|
3938
|
+
address: forumNodeAddressField,
|
|
3917
3939
|
tid: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
|
|
3918
3940
|
url: zod.z.string().optional(),
|
|
3919
3941
|
forumUrl: zod.z.string().optional()
|
|
@@ -3922,7 +3944,10 @@ var mcpContinuumDaoForumMarkUnreadInputSchema = zod.z.object({
|
|
|
3922
3944
|
});
|
|
3923
3945
|
var mcpContinuumDaoForumMarkUnreadOutputSchema = zod.z.unknown();
|
|
3924
3946
|
var mcpContinuumDaoForumSignOutInputSchema = zod.z.object({
|
|
3925
|
-
ticket: zod.z.string().min(1).describe(
|
|
3947
|
+
ticket: zod.z.string().min(1).optional().describe(
|
|
3948
|
+
"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."
|
|
3949
|
+
),
|
|
3950
|
+
address: forumNodeAddressField,
|
|
3926
3951
|
forumUrl: zod.z.string().optional()
|
|
3927
3952
|
});
|
|
3928
3953
|
var mcpContinuumDaoForumSignOutOutputSchema = zod.z.object({
|
|
@@ -3991,11 +4016,21 @@ var mcpContinuumDaoForumSignInEligibleOutputSchema = zod.z.object({
|
|
|
3991
4016
|
ok: zod.z.boolean(),
|
|
3992
4017
|
eligible: zod.z.boolean(),
|
|
3993
4018
|
address: zod.z.string().optional(),
|
|
3994
|
-
reason: zod.z.string().optional()
|
|
4019
|
+
reason: zod.z.string().optional(),
|
|
4020
|
+
votingPower: zod.z.string().optional().describe("Current balanceOfNFT wei for the owned or attached veCTM that was checked"),
|
|
4021
|
+
threshold: zod.z.string().optional().describe("MultiSignAgentWallet.veCtmThresholdPower wei"),
|
|
4022
|
+
tokenId: zod.z.string().optional()
|
|
3995
4023
|
});
|
|
3996
4024
|
var mcpContinuumDaoForumSignInInputSchema = mcpMultisignInput({
|
|
3997
|
-
nodeKey: zod.z.string().optional().describe(
|
|
3998
|
-
|
|
4025
|
+
nodeKey: zod.z.string().optional().describe(
|
|
4026
|
+
"Node key bound to this KeyGen. Always required on KeyGen forum sign-in, including when username is a custom name. The server fills it from this node when omitted. useNodeKeyUsername does not replace it."
|
|
4027
|
+
),
|
|
4028
|
+
username: zod.z.string().min(2).max(16).regex(/^[A-Za-z0-9._-]+$/).optional().describe(
|
|
4029
|
+
"Custom forum username for a wallet or a KeyGen. Ask the operator before calling. 2\u201316 letters, numbers, . _ -."
|
|
4030
|
+
),
|
|
4031
|
+
useNodeKeyUsername: zod.z.boolean().optional().describe(
|
|
4032
|
+
"Set true only after the operator declines a custom username. The forum assigns the first 16 characters of nodeKey as the username. Still pass nodeKey."
|
|
4033
|
+
),
|
|
3999
4034
|
forumUrl: zod.z.string().optional()
|
|
4000
4035
|
});
|
|
4001
4036
|
var mcpMapleSyrupMarketSummarySchema = zod.z.object({
|
|
@@ -7148,11 +7183,11 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7148
7183
|
actionId: "continuum-dao.forum-sign-in",
|
|
7149
7184
|
protocolId: "continuum-dao",
|
|
7150
7185
|
chainCategory: "evm",
|
|
7151
|
-
description: "Build an EIP-712 forum login multi-sign (no EVM tx).
|
|
7186
|
+
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. Always include nodeKey from this node; a custom username does not omit it. Ask the operator for a custom username (2\u201316 letters, numbers, . _ -) and pass it as username. If they decline, set useNodeKeyUsername true; the forum assigns the first 16 characters of the node key as the username. After Get Sig, node-app stores the ticket on the node. The forum stores the verified node key on that user, including when the user already exists, which is what allows MPA Wallet Chat.",
|
|
7152
7187
|
prerequisites: [
|
|
7153
7188
|
"keyGen",
|
|
7154
|
-
"veCTM at or above MultiSignAgentWallet.veCtmThresholdPower
|
|
7155
|
-
"nodeKey or
|
|
7189
|
+
"current balanceOfNFT on an owned or attached veCTM at or above MultiSignAgentWallet.veCtmThresholdPower",
|
|
7190
|
+
"nodeKey from this node, plus username from the operator or useNodeKeyUsername"
|
|
7156
7191
|
],
|
|
7157
7192
|
followUp: [...MCP_MULTISIGN_SUBMIT_FOLLOW_UP, "ctm_continuum_dao_forum_me"],
|
|
7158
7193
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoForumSignIn" },
|
|
@@ -9383,7 +9418,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9383
9418
|
actionId: "continuum-dao.forum-sign-in-eligible",
|
|
9384
9419
|
protocolId: "continuum-dao",
|
|
9385
9420
|
chainCategory: "evm",
|
|
9386
|
-
description: "Check whether an address may EIP-712 sign in to the forum (
|
|
9421
|
+
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.",
|
|
9387
9422
|
prerequisites: ["address (KeyGen ethereumaddress)"],
|
|
9388
9423
|
followUp: ["ctm_continuum_dao_build_forum_sign_in_multisign"],
|
|
9389
9424
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumSignInEligible" },
|
|
@@ -9455,7 +9490,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9455
9490
|
actionId: "continuum-dao.forum-delete",
|
|
9456
9491
|
protocolId: "continuum-dao",
|
|
9457
9492
|
chainCategory: "evm",
|
|
9458
|
-
description: "Admin or moderator soft-delete on forum.continuumdao.org.
|
|
9493
|
+
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.",
|
|
9459
9494
|
prerequisites: ["ticket", "exactly one of pid, tid/url, or username"],
|
|
9460
9495
|
followUp: ["ctm_continuum_dao_forum_fetch_post", "ctm_continuum_dao_forum_recent", "ctm_continuum_dao_forum_sign_out"],
|
|
9461
9496
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumDelete" },
|
|
@@ -9491,7 +9526,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9491
9526
|
actionId: "continuum-dao.forum-reply",
|
|
9492
9527
|
protocolId: "continuum-dao",
|
|
9493
9528
|
chainCategory: "evm",
|
|
9494
|
-
description: "Post an English reply (max 8000 characters) to a forum thread (Ideas, Governance, or MPA listing).
|
|
9529
|
+
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.",
|
|
9495
9530
|
prerequisites: ["ticket", "content", "url or tid"],
|
|
9496
9531
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
9497
9532
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReply" },
|
|
@@ -9503,7 +9538,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9503
9538
|
actionId: "continuum-dao.forum-react",
|
|
9504
9539
|
protocolId: "continuum-dao",
|
|
9505
9540
|
chainCategory: "evm",
|
|
9506
|
-
description: "Toggle an allowlisted reaction on a post: +1, -1, heart, tada, eyes.
|
|
9541
|
+
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.",
|
|
9507
9542
|
prerequisites: ["ticket", "pid", "emoji"],
|
|
9508
9543
|
followUp: ["ctm_continuum_dao_forum_fetch_post"],
|
|
9509
9544
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReact" },
|
|
@@ -9515,7 +9550,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9515
9550
|
actionId: "continuum-dao.forum-create-topic",
|
|
9516
9551
|
protocolId: "continuum-dao",
|
|
9517
9552
|
chainCategory: "evm",
|
|
9518
|
-
description: "Create a formal proposal thread in a Governance section: decision, election, treasury, constitution, or admin. Requires getVotes >= live proposalThreshold() and
|
|
9553
|
+
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.",
|
|
9519
9554
|
prerequisites: ["ticket", "title", "content", "section or cid", "governor configured on the forum"],
|
|
9520
9555
|
followUp: ["ctm_continuum_dao_build_propose_bravo_multisign", "ctm_continuum_dao_build_propose_delta_multisign"],
|
|
9521
9556
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumCreateTopic" },
|
|
@@ -9527,7 +9562,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9527
9562
|
actionId: "continuum-dao.forum-create-idea",
|
|
9528
9563
|
protocolId: "continuum-dao",
|
|
9529
9564
|
chainCategory: "evm",
|
|
9530
|
-
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.",
|
|
9565
|
+
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.",
|
|
9531
9566
|
prerequisites: ["ticket", "title", "content"],
|
|
9532
9567
|
followUp: ["ctm_continuum_dao_forum_reply", "ctm_continuum_dao_forum_sign_out"],
|
|
9533
9568
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumCreateIdea" },
|
|
@@ -9539,7 +9574,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9539
9574
|
actionId: "continuum-dao.mpa-post-listing",
|
|
9540
9575
|
protocolId: "continuum-dao",
|
|
9541
9576
|
chainCategory: "evm",
|
|
9542
|
-
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.",
|
|
9577
|
+
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.",
|
|
9543
9578
|
prerequisites: ["ticket", "kind", "summary", "details", "capabilities"],
|
|
9544
9579
|
followUp: ["ctm_continuum_dao_forum_reply", "ctm_continuum_dao_mpa_retract"],
|
|
9545
9580
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaListing" },
|
|
@@ -9551,7 +9586,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9551
9586
|
actionId: "continuum-dao.mpa-reply",
|
|
9552
9587
|
protocolId: "continuum-dao",
|
|
9553
9588
|
chainCategory: "evm",
|
|
9554
|
-
description: "Reply on an MPA listing thread (30s cooldown). Locked listings refuse replies. Not for Agent Mail \u2014 use mpa_mailbox_send.",
|
|
9589
|
+
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.",
|
|
9555
9590
|
prerequisites: ["ticket", "content", "url or tid"],
|
|
9556
9591
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
9557
9592
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumReply" },
|
|
@@ -9563,7 +9598,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9563
9598
|
actionId: "continuum-dao.mpa-retract",
|
|
9564
9599
|
protocolId: "continuum-dao",
|
|
9565
9600
|
chainCategory: "evm",
|
|
9566
|
-
description: "Retract your MPA listing (locks immediately; soft-delete 90 days later).
|
|
9601
|
+
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.",
|
|
9567
9602
|
prerequisites: ["ticket", "url or tid"],
|
|
9568
9603
|
followUp: ["ctm_continuum_dao_mpa_post_listing"],
|
|
9569
9604
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaRetract" },
|
|
@@ -9575,7 +9610,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9575
9610
|
actionId: "continuum-dao.mpa-flag",
|
|
9576
9611
|
protocolId: "continuum-dao",
|
|
9577
9612
|
chainCategory: "evm",
|
|
9578
|
-
description: "Flag an MPA listing for moderators. Requires
|
|
9613
|
+
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.",
|
|
9579
9614
|
prerequisites: ["ticket", "reason", "url or tid"],
|
|
9580
9615
|
followUp: ["ctm_continuum_dao_forum_fetch_thread"],
|
|
9581
9616
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaFlag" },
|
|
@@ -9611,7 +9646,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9611
9646
|
actionId: "continuum-dao.mpa-mailbox-send",
|
|
9612
9647
|
protocolId: "continuum-dao",
|
|
9613
9648
|
chainCategory: "evm",
|
|
9614
|
-
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.",
|
|
9649
|
+
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.",
|
|
9615
9650
|
prerequisites: ["ticket", "content", "username or url or tid"],
|
|
9616
9651
|
followUp: ["ctm_continuum_dao_mpa_mailbox_list"],
|
|
9617
9652
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoMpaMailboxSend" },
|
|
@@ -9635,7 +9670,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9635
9670
|
actionId: "continuum-dao.forum-me",
|
|
9636
9671
|
protocolId: "continuum-dao",
|
|
9637
9672
|
chainCategory: "evm",
|
|
9638
|
-
description: "Current forum user, votes, canPropose (Governance), canPostIdea (Ideas), and canPostMpa (MPA Wallet Chat listings / mailbox).",
|
|
9673
|
+
description: "Current forum user, votes, canPropose (Governance), canPostIdea (Ideas), and canPostMpa (MPA Wallet Chat listings / mailbox). canPropose is governor getVotes(address, clock-1) >= proposalThreshold(). Null votes means that read failed \u2014 do not say the KeyGen has no veCTM. Attachment is get_ve_ctm_attach_status, not this flag.",
|
|
9639
9674
|
prerequisites: [],
|
|
9640
9675
|
followUp: [
|
|
9641
9676
|
"ctm_continuum_dao_forum_unread",
|
|
@@ -9651,7 +9686,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9651
9686
|
actionId: "continuum-dao.forum-unread",
|
|
9652
9687
|
protocolId: "continuum-dao",
|
|
9653
9688
|
chainCategory: "evm",
|
|
9654
|
-
description: "List unread Forum topics for the logged-in user (NodeBB Unread).
|
|
9689
|
+
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.",
|
|
9655
9690
|
prerequisites: ["ticket"],
|
|
9656
9691
|
followUp: ["ctm_continuum_dao_forum_fetch_thread", "ctm_continuum_dao_forum_mark_read"],
|
|
9657
9692
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumUnread" },
|
|
@@ -9663,7 +9698,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9663
9698
|
actionId: "continuum-dao.forum-mark-read",
|
|
9664
9699
|
protocolId: "continuum-dao",
|
|
9665
9700
|
chainCategory: "evm",
|
|
9666
|
-
description: "Mark Forum topic(s) read for the logged-in user (clears NodeBB Unread and topic notifications).
|
|
9701
|
+
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.",
|
|
9667
9702
|
prerequisites: ["ticket", "exactly one of tid/url, tids, or all"],
|
|
9668
9703
|
followUp: ["ctm_continuum_dao_forum_unread", "ctm_continuum_dao_forum_fetch_thread"],
|
|
9669
9704
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumMarkRead" },
|
|
@@ -9675,7 +9710,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9675
9710
|
actionId: "continuum-dao.forum-mark-unread",
|
|
9676
9711
|
protocolId: "continuum-dao",
|
|
9677
9712
|
chainCategory: "evm",
|
|
9678
|
-
description: "Mark one Forum topic unread for the logged-in user.
|
|
9713
|
+
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.",
|
|
9679
9714
|
prerequisites: ["ticket", "tid or url"],
|
|
9680
9715
|
followUp: ["ctm_continuum_dao_forum_unread"],
|
|
9681
9716
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumMarkUnread" },
|
|
@@ -9687,7 +9722,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9687
9722
|
actionId: "continuum-dao.forum-sign-out",
|
|
9688
9723
|
protocolId: "continuum-dao",
|
|
9689
9724
|
chainCategory: "evm",
|
|
9690
|
-
description: "Revoke the forum ticket and destroy NodeBB sessions for that user.
|
|
9725
|
+
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.",
|
|
9691
9726
|
prerequisites: ["ticket from forum sign-in"],
|
|
9692
9727
|
followUp: ["ctm_continuum_dao_forum_me"],
|
|
9693
9728
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoForumSignOut" },
|