dexe-mcp 0.1.3 → 0.2.0

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.
Files changed (100) hide show
  1. package/.mcp.example.json +12 -2
  2. package/CHANGELOG.md +48 -0
  3. package/FUTURE.md +26 -5
  4. package/README.md +80 -195
  5. package/dist/bootstrap.d.ts.map +1 -1
  6. package/dist/bootstrap.js +10 -1
  7. package/dist/bootstrap.js.map +1 -1
  8. package/dist/config.d.ts +10 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +24 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/hardhat.d.ts.map +1 -1
  13. package/dist/hardhat.js +10 -5
  14. package/dist/hardhat.js.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/lib/addresses.d.ts +57 -0
  17. package/dist/lib/addresses.d.ts.map +1 -0
  18. package/dist/lib/addresses.js +83 -0
  19. package/dist/lib/addresses.js.map +1 -0
  20. package/dist/lib/calldata.d.ts +32 -0
  21. package/dist/lib/calldata.d.ts.map +1 -0
  22. package/dist/lib/calldata.js +28 -0
  23. package/dist/lib/calldata.js.map +1 -0
  24. package/dist/lib/govEnums.d.ts +12 -0
  25. package/dist/lib/govEnums.d.ts.map +1 -0
  26. package/dist/lib/govEnums.js +35 -0
  27. package/dist/lib/govEnums.js.map +1 -0
  28. package/dist/lib/ipfs.d.ts +60 -0
  29. package/dist/lib/ipfs.d.ts.map +1 -0
  30. package/dist/lib/ipfs.js +167 -0
  31. package/dist/lib/ipfs.js.map +1 -0
  32. package/dist/lib/multicall.d.ts +33 -0
  33. package/dist/lib/multicall.d.ts.map +1 -0
  34. package/dist/lib/multicall.js +46 -0
  35. package/dist/lib/multicall.js.map +1 -0
  36. package/dist/lib/proposalCatalog.d.ts +45 -0
  37. package/dist/lib/proposalCatalog.d.ts.map +1 -0
  38. package/dist/lib/proposalCatalog.js +416 -0
  39. package/dist/lib/proposalCatalog.js.map +1 -0
  40. package/dist/lib/subgraph.d.ts +15 -0
  41. package/dist/lib/subgraph.d.ts.map +1 -0
  42. package/dist/lib/subgraph.js +37 -0
  43. package/dist/lib/subgraph.js.map +1 -0
  44. package/dist/runtime.d.ts +51 -13
  45. package/dist/runtime.d.ts.map +1 -1
  46. package/dist/runtime.js +149 -26
  47. package/dist/runtime.js.map +1 -1
  48. package/dist/tools/dao.d.ts +4 -0
  49. package/dist/tools/dao.d.ts.map +1 -0
  50. package/dist/tools/dao.js +242 -0
  51. package/dist/tools/dao.js.map +1 -0
  52. package/dist/tools/daoDeploy.d.ts +4 -0
  53. package/dist/tools/daoDeploy.d.ts.map +1 -0
  54. package/dist/tools/daoDeploy.js +323 -0
  55. package/dist/tools/daoDeploy.js.map +1 -0
  56. package/dist/tools/index.d.ts.map +1 -1
  57. package/dist/tools/index.js +24 -0
  58. package/dist/tools/index.js.map +1 -1
  59. package/dist/tools/ipfs.d.ts +6 -0
  60. package/dist/tools/ipfs.d.ts.map +1 -0
  61. package/dist/tools/ipfs.js +310 -0
  62. package/dist/tools/ipfs.js.map +1 -0
  63. package/dist/tools/proposal.d.ts +4 -0
  64. package/dist/tools/proposal.d.ts.map +1 -0
  65. package/dist/tools/proposal.js +199 -0
  66. package/dist/tools/proposal.js.map +1 -0
  67. package/dist/tools/proposalBuild.d.ts +4 -0
  68. package/dist/tools/proposalBuild.d.ts.map +1 -0
  69. package/dist/tools/proposalBuild.js +357 -0
  70. package/dist/tools/proposalBuild.js.map +1 -0
  71. package/dist/tools/proposalBuildComplex.d.ts +4 -0
  72. package/dist/tools/proposalBuildComplex.d.ts.map +1 -0
  73. package/dist/tools/proposalBuildComplex.js +700 -0
  74. package/dist/tools/proposalBuildComplex.js.map +1 -0
  75. package/dist/tools/proposalBuildInternal.d.ts +4 -0
  76. package/dist/tools/proposalBuildInternal.d.ts.map +1 -0
  77. package/dist/tools/proposalBuildInternal.js +211 -0
  78. package/dist/tools/proposalBuildInternal.js.map +1 -0
  79. package/dist/tools/proposalBuildMore.d.ts +4 -0
  80. package/dist/tools/proposalBuildMore.d.ts.map +1 -0
  81. package/dist/tools/proposalBuildMore.js +436 -0
  82. package/dist/tools/proposalBuildMore.js.map +1 -0
  83. package/dist/tools/proposalBuildOffchain.d.ts +4 -0
  84. package/dist/tools/proposalBuildOffchain.d.ts.map +1 -0
  85. package/dist/tools/proposalBuildOffchain.js +386 -0
  86. package/dist/tools/proposalBuildOffchain.js.map +1 -0
  87. package/dist/tools/read.d.ts +4 -0
  88. package/dist/tools/read.d.ts.map +1 -0
  89. package/dist/tools/read.js +353 -0
  90. package/dist/tools/read.js.map +1 -0
  91. package/dist/tools/vote.d.ts +4 -0
  92. package/dist/tools/vote.d.ts.map +1 -0
  93. package/dist/tools/vote.js +196 -0
  94. package/dist/tools/vote.js.map +1 -0
  95. package/dist/tools/voteBuild.d.ts +4 -0
  96. package/dist/tools/voteBuild.d.ts.map +1 -0
  97. package/dist/tools/voteBuild.js +563 -0
  98. package/dist/tools/voteBuild.js.map +1 -0
  99. package/package.json +9 -4
  100. package/PLAN.md +0 -132
@@ -0,0 +1,563 @@
1
+ import { z } from "zod";
2
+ import { Interface, isAddress } from "ethers";
3
+ import { buildPayload } from "../lib/calldata.js";
4
+ /**
5
+ * Phase 4 — user-facing write calldata builders.
6
+ *
7
+ * Every tool returns `{ payload: TxPayload }` — a signable single tx. For
8
+ * atomic combos (deposit+delegate, execute+claim), use
9
+ * `dexe_vote_build_multicall` which wraps inner calldata into
10
+ * GovPool.multicall(bytes[] calls).
11
+ *
12
+ * Arg-order gotchas (verified against frontend hooks, 2026-04-15):
13
+ * GovPool.vote(proposalId, isVoteFor, amount, nftIds) ← (pid, bool, amt, nfts)
14
+ * GovValidators.voteInternalProposal(proposalId, amount, isVoteFor) ← (pid, amt, bool) — different!
15
+ * GovValidators.voteExternalProposal(proposalId, amount, isVoteFor)
16
+ * GovPool.claimRewards(proposalIds[], user)
17
+ * GovPool.claimMicropoolRewards(proposalIds[], delegator, delegatee)
18
+ *
19
+ * User-level delegate/undelegate live on GovPool (not GovUserKeeper).
20
+ * Treasury-level delegation is a proposal (see Phase 3b).
21
+ */
22
+ const GOV_POOL_WRITE_ABI = [
23
+ "function deposit(uint256 amount, uint256[] nftIds) payable",
24
+ "function withdraw(address receiver, uint256 amount, uint256[] nftIds)",
25
+ "function delegate(address delegatee, uint256 amount, uint256[] nftIds)",
26
+ "function undelegate(address delegatee, uint256 amount, uint256[] nftIds)",
27
+ "function vote(uint256 proposalId, bool isVoteFor, uint256 voteAmount, uint256[] voteNftIds)",
28
+ "function cancelVote(uint256 proposalId)",
29
+ "function moveProposalToValidators(uint256 proposalId)",
30
+ "function execute(uint256 proposalId)",
31
+ "function claimRewards(uint256[] proposalIds, address user)",
32
+ "function claimMicropoolRewards(uint256[] proposalIds, address delegator, address delegatee)",
33
+ "function multicall(bytes[] calls) returns (bytes[] results)",
34
+ ];
35
+ const GOV_VALIDATORS_WRITE_ABI = [
36
+ "function voteInternalProposal(uint256 proposalId, uint256 amount, bool isVoteFor)",
37
+ "function voteExternalProposal(uint256 proposalId, uint256 amount, bool isVoteFor)",
38
+ "function cancelVoteInternalProposal(uint256 proposalId)",
39
+ "function cancelVoteExternalProposal(uint256 proposalId)",
40
+ ];
41
+ const ERC20_WRITE_ABI = ["function approve(address spender, uint256 amount) returns (bool)"];
42
+ function errorResult(message) {
43
+ return { content: [{ type: "text", text: message }], isError: true };
44
+ }
45
+ function payloadResult(payload) {
46
+ return {
47
+ content: [
48
+ {
49
+ type: "text",
50
+ text: `${payload.description}\n to : ${payload.to}\n value: ${payload.value}\n data : ${payload.data.slice(0, 66)}…`,
51
+ },
52
+ ],
53
+ structuredContent: { payload: { ...payload } },
54
+ };
55
+ }
56
+ function payloadOutputSchema() {
57
+ return {
58
+ payload: z.object({
59
+ to: z.string(),
60
+ data: z.string(),
61
+ value: z.string(),
62
+ chainId: z.number(),
63
+ description: z.string(),
64
+ }),
65
+ };
66
+ }
67
+ // ---------- register ----------
68
+ export function registerVoteBuildTools(server, ctx) {
69
+ registerErc20Approve(server, ctx);
70
+ registerDeposit(server, ctx);
71
+ registerWithdraw(server, ctx);
72
+ registerDelegate(server, ctx);
73
+ registerUndelegate(server, ctx);
74
+ registerVote(server, ctx);
75
+ registerCancelVote(server, ctx);
76
+ registerValidatorVote(server, ctx);
77
+ registerValidatorCancelVote(server, ctx);
78
+ registerMoveToValidators(server, ctx);
79
+ registerExecute(server, ctx);
80
+ registerClaimRewards(server, ctx);
81
+ registerClaimMicropoolRewards(server, ctx);
82
+ registerMulticall(server, ctx);
83
+ }
84
+ // ---------- ERC20 approve ----------
85
+ function registerErc20Approve(server, ctx) {
86
+ server.registerTool("dexe_vote_build_erc20_approve", {
87
+ title: "Build ERC20.approve(spender, amount) calldata",
88
+ description: "Prepares an ERC20 approval tx. Prepend this before `dexe_vote_build_deposit` when staking an ERC20 token — DAO treasury uses GovPool as the spender. For native-coin staking (BNB/ETH) no approve is needed; just pass `value` on deposit.",
89
+ inputSchema: {
90
+ token: z.string(),
91
+ spender: z.string().describe("Typically the GovPool address"),
92
+ amount: z.string().describe("Wei amount; use max uint256 to grant unlimited"),
93
+ },
94
+ outputSchema: payloadOutputSchema(),
95
+ }, async ({ token, spender, amount }) => {
96
+ if (!isAddress(token))
97
+ return errorResult(`Invalid token: ${token}`);
98
+ if (!isAddress(spender))
99
+ return errorResult(`Invalid spender: ${spender}`);
100
+ try {
101
+ const iface = new Interface(ERC20_WRITE_ABI);
102
+ const payload = buildPayload({
103
+ to: token,
104
+ iface,
105
+ method: "approve",
106
+ args: [spender, BigInt(amount)],
107
+ chainId: ctx.config.chainId,
108
+ contractLabel: "ERC20",
109
+ description: `ERC20(${token}).approve(${spender}, ${amount})`,
110
+ });
111
+ return payloadResult(payload);
112
+ }
113
+ catch (err) {
114
+ return errorResult(err instanceof Error ? err.message : String(err));
115
+ }
116
+ });
117
+ }
118
+ // ---------- deposit ----------
119
+ function registerDeposit(server, ctx) {
120
+ server.registerTool("dexe_vote_build_deposit", {
121
+ title: "Stake tokens/NFTs into a DAO to gain voting power",
122
+ description: "Builds `GovPool.deposit(amount, nftIds)`. **payable** — for native-coin staking, pass `value` (wei). For ERC20 staking, pass `value=0` and ensure an ERC20 approve is already submitted.",
123
+ inputSchema: {
124
+ govPool: z.string(),
125
+ amount: z.string().describe("Token amount in wei"),
126
+ nftIds: z.array(z.string()).default([]),
127
+ value: z
128
+ .string()
129
+ .default("0")
130
+ .describe("Native coin (wei) for native-staking DAOs; 0 for ERC20"),
131
+ },
132
+ outputSchema: payloadOutputSchema(),
133
+ }, async ({ govPool, amount, nftIds = [], value = "0" }) => {
134
+ if (!isAddress(govPool))
135
+ return errorResult(`Invalid govPool: ${govPool}`);
136
+ try {
137
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
138
+ const payload = buildPayload({
139
+ to: govPool,
140
+ iface,
141
+ method: "deposit",
142
+ args: [BigInt(amount), nftIds.map((n) => BigInt(n))],
143
+ value,
144
+ chainId: ctx.config.chainId,
145
+ contractLabel: "GovPool",
146
+ description: `GovPool.deposit(${amount} wei, ${nftIds.length} NFTs)${value !== "0" ? ` + ${value} native` : ""}`,
147
+ });
148
+ return payloadResult(payload);
149
+ }
150
+ catch (err) {
151
+ return errorResult(err instanceof Error ? err.message : String(err));
152
+ }
153
+ });
154
+ }
155
+ // ---------- withdraw ----------
156
+ function registerWithdraw(server, ctx) {
157
+ server.registerTool("dexe_vote_build_withdraw", {
158
+ title: "Unstake tokens/NFTs from a DAO",
159
+ description: "Builds `GovPool.withdraw(receiver, amount, nftIds)`.",
160
+ inputSchema: {
161
+ govPool: z.string(),
162
+ receiver: z.string(),
163
+ amount: z.string(),
164
+ nftIds: z.array(z.string()).default([]),
165
+ },
166
+ outputSchema: payloadOutputSchema(),
167
+ }, async ({ govPool, receiver, amount, nftIds = [] }) => {
168
+ if (!isAddress(govPool))
169
+ return errorResult(`Invalid govPool: ${govPool}`);
170
+ if (!isAddress(receiver))
171
+ return errorResult(`Invalid receiver: ${receiver}`);
172
+ try {
173
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
174
+ const payload = buildPayload({
175
+ to: govPool,
176
+ iface,
177
+ method: "withdraw",
178
+ args: [receiver, BigInt(amount), nftIds.map((n) => BigInt(n))],
179
+ chainId: ctx.config.chainId,
180
+ contractLabel: "GovPool",
181
+ description: `GovPool.withdraw → ${receiver} (${amount} wei, ${nftIds.length} NFTs)`,
182
+ });
183
+ return payloadResult(payload);
184
+ }
185
+ catch (err) {
186
+ return errorResult(err instanceof Error ? err.message : String(err));
187
+ }
188
+ });
189
+ }
190
+ // ---------- delegate (user-level) ----------
191
+ function registerDelegate(server, ctx) {
192
+ server.registerTool("dexe_vote_build_delegate", {
193
+ title: "Delegate YOUR staked voting power to a delegatee",
194
+ description: "Builds `GovPool.delegate(delegatee, amount, nftIds)`. This is the user-level delegation; for DAO treasury delegation use the `dexe_proposal_build_delegate_to_expert` wrapper instead.",
195
+ inputSchema: {
196
+ govPool: z.string(),
197
+ delegatee: z.string(),
198
+ amount: z.string(),
199
+ nftIds: z.array(z.string()).default([]),
200
+ },
201
+ outputSchema: payloadOutputSchema(),
202
+ }, async ({ govPool, delegatee, amount, nftIds = [] }) => {
203
+ if (!isAddress(govPool))
204
+ return errorResult(`Invalid govPool: ${govPool}`);
205
+ if (!isAddress(delegatee))
206
+ return errorResult(`Invalid delegatee: ${delegatee}`);
207
+ try {
208
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
209
+ const payload = buildPayload({
210
+ to: govPool,
211
+ iface,
212
+ method: "delegate",
213
+ args: [delegatee, BigInt(amount), nftIds.map((n) => BigInt(n))],
214
+ chainId: ctx.config.chainId,
215
+ contractLabel: "GovPool",
216
+ description: `GovPool.delegate → ${delegatee} (${amount} wei, ${nftIds.length} NFTs)`,
217
+ });
218
+ return payloadResult(payload);
219
+ }
220
+ catch (err) {
221
+ return errorResult(err instanceof Error ? err.message : String(err));
222
+ }
223
+ });
224
+ }
225
+ // ---------- undelegate ----------
226
+ function registerUndelegate(server, ctx) {
227
+ server.registerTool("dexe_vote_build_undelegate", {
228
+ title: "Undelegate voting power from a delegatee",
229
+ description: "Builds `GovPool.undelegate(delegatee, amount, nftIds)`.",
230
+ inputSchema: {
231
+ govPool: z.string(),
232
+ delegatee: z.string(),
233
+ amount: z.string(),
234
+ nftIds: z.array(z.string()).default([]),
235
+ },
236
+ outputSchema: payloadOutputSchema(),
237
+ }, async ({ govPool, delegatee, amount, nftIds = [] }) => {
238
+ if (!isAddress(govPool))
239
+ return errorResult(`Invalid govPool: ${govPool}`);
240
+ if (!isAddress(delegatee))
241
+ return errorResult(`Invalid delegatee: ${delegatee}`);
242
+ try {
243
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
244
+ const payload = buildPayload({
245
+ to: govPool,
246
+ iface,
247
+ method: "undelegate",
248
+ args: [delegatee, BigInt(amount), nftIds.map((n) => BigInt(n))],
249
+ chainId: ctx.config.chainId,
250
+ contractLabel: "GovPool",
251
+ description: `GovPool.undelegate ← ${delegatee} (${amount} wei, ${nftIds.length} NFTs)`,
252
+ });
253
+ return payloadResult(payload);
254
+ }
255
+ catch (err) {
256
+ return errorResult(err instanceof Error ? err.message : String(err));
257
+ }
258
+ });
259
+ }
260
+ // ---------- vote ----------
261
+ function registerVote(server, ctx) {
262
+ server.registerTool("dexe_vote_build_vote", {
263
+ title: "Vote on an external proposal",
264
+ description: "Builds `GovPool.vote(proposalId, isVoteFor, amount, nftIds)`. Arg order: (proposalId, isVoteFor, amount, nftIds). Must have staked/delegated voting power beforehand.",
265
+ inputSchema: {
266
+ govPool: z.string(),
267
+ proposalId: z.string(),
268
+ isVoteFor: z.boolean(),
269
+ amount: z.string(),
270
+ nftIds: z.array(z.string()).default([]),
271
+ },
272
+ outputSchema: payloadOutputSchema(),
273
+ }, async ({ govPool, proposalId, isVoteFor, amount, nftIds = [] }) => {
274
+ if (!isAddress(govPool))
275
+ return errorResult(`Invalid govPool: ${govPool}`);
276
+ try {
277
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
278
+ const payload = buildPayload({
279
+ to: govPool,
280
+ iface,
281
+ method: "vote",
282
+ args: [BigInt(proposalId), isVoteFor, BigInt(amount), nftIds.map((n) => BigInt(n))],
283
+ chainId: ctx.config.chainId,
284
+ contractLabel: "GovPool",
285
+ description: `GovPool.vote(#${proposalId}, ${isVoteFor ? "FOR" : "AGAINST"}, ${amount} wei, ${nftIds.length} NFTs)`,
286
+ });
287
+ return payloadResult(payload);
288
+ }
289
+ catch (err) {
290
+ return errorResult(err instanceof Error ? err.message : String(err));
291
+ }
292
+ });
293
+ }
294
+ // ---------- cancel vote ----------
295
+ function registerCancelVote(server, ctx) {
296
+ server.registerTool("dexe_vote_build_cancel_vote", {
297
+ title: "Cancel your vote on an external proposal",
298
+ description: "Builds `GovPool.cancelVote(proposalId)`.",
299
+ inputSchema: {
300
+ govPool: z.string(),
301
+ proposalId: z.string(),
302
+ },
303
+ outputSchema: payloadOutputSchema(),
304
+ }, async ({ govPool, proposalId }) => {
305
+ if (!isAddress(govPool))
306
+ return errorResult(`Invalid govPool: ${govPool}`);
307
+ try {
308
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
309
+ const payload = buildPayload({
310
+ to: govPool,
311
+ iface,
312
+ method: "cancelVote",
313
+ args: [BigInt(proposalId)],
314
+ chainId: ctx.config.chainId,
315
+ contractLabel: "GovPool",
316
+ description: `GovPool.cancelVote(#${proposalId})`,
317
+ });
318
+ return payloadResult(payload);
319
+ }
320
+ catch (err) {
321
+ return errorResult(err instanceof Error ? err.message : String(err));
322
+ }
323
+ });
324
+ }
325
+ // ---------- validator vote ----------
326
+ function registerValidatorVote(server, ctx) {
327
+ server.registerTool("dexe_vote_build_validator_vote", {
328
+ title: "Validator vote on internal or external proposal",
329
+ description: "Builds `GovValidators.vote{Internal,External}Proposal(proposalId, amount, isVoteFor)`. **Arg order differs from GovPool.vote** — here amount comes before isVoteFor. Requires validator stake.",
330
+ inputSchema: {
331
+ govValidators: z.string(),
332
+ scope: z.enum(["internal", "external"]),
333
+ proposalId: z.string(),
334
+ amount: z.string(),
335
+ isVoteFor: z.boolean(),
336
+ },
337
+ outputSchema: payloadOutputSchema(),
338
+ }, async ({ govValidators, scope, proposalId, amount, isVoteFor }) => {
339
+ if (!isAddress(govValidators))
340
+ return errorResult(`Invalid govValidators: ${govValidators}`);
341
+ try {
342
+ const iface = new Interface(GOV_VALIDATORS_WRITE_ABI);
343
+ const method = scope === "internal" ? "voteInternalProposal" : "voteExternalProposal";
344
+ const payload = buildPayload({
345
+ to: govValidators,
346
+ iface,
347
+ method,
348
+ args: [BigInt(proposalId), BigInt(amount), isVoteFor],
349
+ chainId: ctx.config.chainId,
350
+ contractLabel: "GovValidators",
351
+ description: `GovValidators.${method}(#${proposalId}, ${amount}, ${isVoteFor ? "FOR" : "AGAINST"})`,
352
+ });
353
+ return payloadResult(payload);
354
+ }
355
+ catch (err) {
356
+ return errorResult(err instanceof Error ? err.message : String(err));
357
+ }
358
+ });
359
+ }
360
+ // ---------- validator cancel vote ----------
361
+ function registerValidatorCancelVote(server, ctx) {
362
+ server.registerTool("dexe_vote_build_validator_cancel_vote", {
363
+ title: "Validator: cancel your vote on internal/external proposal",
364
+ description: "Builds `GovValidators.cancelVote{Internal,External}Proposal(proposalId)`.",
365
+ inputSchema: {
366
+ govValidators: z.string(),
367
+ scope: z.enum(["internal", "external"]),
368
+ proposalId: z.string(),
369
+ },
370
+ outputSchema: payloadOutputSchema(),
371
+ }, async ({ govValidators, scope, proposalId }) => {
372
+ if (!isAddress(govValidators))
373
+ return errorResult(`Invalid govValidators: ${govValidators}`);
374
+ try {
375
+ const iface = new Interface(GOV_VALIDATORS_WRITE_ABI);
376
+ const method = scope === "internal" ? "cancelVoteInternalProposal" : "cancelVoteExternalProposal";
377
+ const payload = buildPayload({
378
+ to: govValidators,
379
+ iface,
380
+ method,
381
+ args: [BigInt(proposalId)],
382
+ chainId: ctx.config.chainId,
383
+ contractLabel: "GovValidators",
384
+ description: `GovValidators.${method}(#${proposalId})`,
385
+ });
386
+ return payloadResult(payload);
387
+ }
388
+ catch (err) {
389
+ return errorResult(err instanceof Error ? err.message : String(err));
390
+ }
391
+ });
392
+ }
393
+ // ---------- move to validators ----------
394
+ function registerMoveToValidators(server, ctx) {
395
+ server.registerTool("dexe_vote_build_move_to_validators", {
396
+ title: "Escalate a passing proposal to the validators tier",
397
+ description: "Builds `GovPool.moveProposalToValidators(proposalId)`.",
398
+ inputSchema: {
399
+ govPool: z.string(),
400
+ proposalId: z.string(),
401
+ },
402
+ outputSchema: payloadOutputSchema(),
403
+ }, async ({ govPool, proposalId }) => {
404
+ if (!isAddress(govPool))
405
+ return errorResult(`Invalid govPool: ${govPool}`);
406
+ try {
407
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
408
+ const payload = buildPayload({
409
+ to: govPool,
410
+ iface,
411
+ method: "moveProposalToValidators",
412
+ args: [BigInt(proposalId)],
413
+ chainId: ctx.config.chainId,
414
+ contractLabel: "GovPool",
415
+ description: `GovPool.moveProposalToValidators(#${proposalId})`,
416
+ });
417
+ return payloadResult(payload);
418
+ }
419
+ catch (err) {
420
+ return errorResult(err instanceof Error ? err.message : String(err));
421
+ }
422
+ });
423
+ }
424
+ // ---------- execute ----------
425
+ function registerExecute(server, ctx) {
426
+ server.registerTool("dexe_vote_build_execute", {
427
+ title: "Execute a passed proposal",
428
+ description: "Builds `GovPool.execute(proposalId)`.",
429
+ inputSchema: {
430
+ govPool: z.string(),
431
+ proposalId: z.string(),
432
+ },
433
+ outputSchema: payloadOutputSchema(),
434
+ }, async ({ govPool, proposalId }) => {
435
+ if (!isAddress(govPool))
436
+ return errorResult(`Invalid govPool: ${govPool}`);
437
+ try {
438
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
439
+ const payload = buildPayload({
440
+ to: govPool,
441
+ iface,
442
+ method: "execute",
443
+ args: [BigInt(proposalId)],
444
+ chainId: ctx.config.chainId,
445
+ contractLabel: "GovPool",
446
+ description: `GovPool.execute(#${proposalId})`,
447
+ });
448
+ return payloadResult(payload);
449
+ }
450
+ catch (err) {
451
+ return errorResult(err instanceof Error ? err.message : String(err));
452
+ }
453
+ });
454
+ }
455
+ // ---------- claim rewards ----------
456
+ function registerClaimRewards(server, ctx) {
457
+ server.registerTool("dexe_vote_build_claim_rewards", {
458
+ title: "Claim voter rewards for executed proposals",
459
+ description: "Builds `GovPool.claimRewards(proposalIds, user)`.",
460
+ inputSchema: {
461
+ govPool: z.string(),
462
+ proposalIds: z.array(z.string()).min(1),
463
+ user: z.string(),
464
+ },
465
+ outputSchema: payloadOutputSchema(),
466
+ }, async ({ govPool, proposalIds, user }) => {
467
+ if (!isAddress(govPool))
468
+ return errorResult(`Invalid govPool: ${govPool}`);
469
+ if (!isAddress(user))
470
+ return errorResult(`Invalid user: ${user}`);
471
+ try {
472
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
473
+ const payload = buildPayload({
474
+ to: govPool,
475
+ iface,
476
+ method: "claimRewards",
477
+ args: [proposalIds.map((p) => BigInt(p)), user],
478
+ chainId: ctx.config.chainId,
479
+ contractLabel: "GovPool",
480
+ description: `GovPool.claimRewards([${proposalIds.join(",")}], ${user})`,
481
+ });
482
+ return payloadResult(payload);
483
+ }
484
+ catch (err) {
485
+ return errorResult(err instanceof Error ? err.message : String(err));
486
+ }
487
+ });
488
+ }
489
+ // ---------- claim micropool rewards ----------
490
+ function registerClaimMicropoolRewards(server, ctx) {
491
+ server.registerTool("dexe_vote_build_claim_micropool_rewards", {
492
+ title: "Claim micropool (delegated) rewards",
493
+ description: "Builds `GovPool.claimMicropoolRewards(proposalIds, delegator, delegatee)`. Called by the delegator to collect their share of rewards earned by their delegatee's votes.",
494
+ inputSchema: {
495
+ govPool: z.string(),
496
+ proposalIds: z.array(z.string()).min(1),
497
+ delegator: z.string(),
498
+ delegatee: z.string(),
499
+ },
500
+ outputSchema: payloadOutputSchema(),
501
+ }, async ({ govPool, proposalIds, delegator, delegatee }) => {
502
+ if (!isAddress(govPool))
503
+ return errorResult(`Invalid govPool: ${govPool}`);
504
+ if (!isAddress(delegator))
505
+ return errorResult(`Invalid delegator: ${delegator}`);
506
+ if (!isAddress(delegatee))
507
+ return errorResult(`Invalid delegatee: ${delegatee}`);
508
+ try {
509
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
510
+ const payload = buildPayload({
511
+ to: govPool,
512
+ iface,
513
+ method: "claimMicropoolRewards",
514
+ args: [proposalIds.map((p) => BigInt(p)), delegator, delegatee],
515
+ chainId: ctx.config.chainId,
516
+ contractLabel: "GovPool",
517
+ description: `GovPool.claimMicropoolRewards([${proposalIds.join(",")}], ${delegator} → ${delegatee})`,
518
+ });
519
+ return payloadResult(payload);
520
+ }
521
+ catch (err) {
522
+ return errorResult(err instanceof Error ? err.message : String(err));
523
+ }
524
+ });
525
+ }
526
+ // ---------- multicall wrapper ----------
527
+ function registerMulticall(server, ctx) {
528
+ server.registerTool("dexe_vote_build_multicall", {
529
+ title: "Atomic multicall on GovPool (batch multiple writes in one tx)",
530
+ description: "Wraps N inner calldatas into `GovPool.multicall(calls)`. Pass the `data` fields from other build tools (e.g. deposit + delegate, execute + claim). Each inner call executes against GovPool itself — only use for GovPool methods.",
531
+ inputSchema: {
532
+ govPool: z.string(),
533
+ calls: z.array(z.string()).min(2).describe("Array of 0x-hex calldatas to batch"),
534
+ value: z.string().default("0").describe("Total native-coin value across the batch"),
535
+ },
536
+ outputSchema: payloadOutputSchema(),
537
+ }, async ({ govPool, calls, value = "0" }) => {
538
+ if (!isAddress(govPool))
539
+ return errorResult(`Invalid govPool: ${govPool}`);
540
+ for (const c of calls) {
541
+ if (!c.startsWith("0x"))
542
+ return errorResult(`call must be 0x-prefixed hex: ${c.slice(0, 16)}…`);
543
+ }
544
+ try {
545
+ const iface = new Interface(GOV_POOL_WRITE_ABI);
546
+ const payload = buildPayload({
547
+ to: govPool,
548
+ iface,
549
+ method: "multicall",
550
+ args: [calls],
551
+ value,
552
+ chainId: ctx.config.chainId,
553
+ contractLabel: "GovPool",
554
+ description: `GovPool.multicall(${calls.length} calls)`,
555
+ });
556
+ return payloadResult(payload);
557
+ }
558
+ catch (err) {
559
+ return errorResult(err instanceof Error ? err.message : String(err));
560
+ }
561
+ });
562
+ }
563
+ //# sourceMappingURL=voteBuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voteBuild.js","sourceRoot":"","sources":["../../src/tools/voteBuild.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dexe-mcp",
3
- "version": "0.1.3",
4
- "description": "MCP server wrapping DeXe Protocol for Claude Code dev tooling (build/test, contract introspection, governance-domain tools)",
3
+ "version": "0.2.0",
4
+ "description": "MCP server for the DeXe Protocol full DAO operations coverage: deploy DAOs, build every proposal type, IPFS metadata, stake/vote/delegate/execute/claim calldata. Plus dev tooling (build/test/introspect/decode).",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": "Edward Arinin <edward.arinin@gmail.com>",
@@ -25,7 +25,12 @@
25
25
  "dao",
26
26
  "governance",
27
27
  "smart-contracts",
28
- "dev-tools"
28
+ "dev-tools",
29
+ "dao-operations",
30
+ "proposals",
31
+ "ipfs",
32
+ "pinata",
33
+ "calldata-builder"
29
34
  ],
30
35
  "bin": {
31
36
  "dexe-mcp": "dist/index.js"
@@ -36,7 +41,6 @@
36
41
  "README.md",
37
42
  "CHANGELOG.md",
38
43
  "FUTURE.md",
39
- "PLAN.md",
40
44
  ".mcp.example.json"
41
45
  ],
42
46
  "scripts": {
@@ -52,6 +56,7 @@
52
56
  "@modelcontextprotocol/sdk": "^1.0.0",
53
57
  "ethers": "^6.13.0",
54
58
  "execa": "^9.5.0",
59
+ "multiformats": "^13.4.2",
55
60
  "p-limit": "^6.2.0",
56
61
  "zod": "^3.23.8"
57
62
  },