dexe-mcp 0.1.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 (62) hide show
  1. package/.mcp.example.json +8 -0
  2. package/FUTURE.md +37 -0
  3. package/LICENSE +21 -0
  4. package/PLAN.md +132 -0
  5. package/README.md +126 -0
  6. package/dist/artifacts.d.ts +69 -0
  7. package/dist/artifacts.d.ts.map +1 -0
  8. package/dist/artifacts.js +181 -0
  9. package/dist/artifacts.js.map +1 -0
  10. package/dist/bootstrap.d.ts +12 -0
  11. package/dist/bootstrap.d.ts.map +1 -0
  12. package/dist/bootstrap.js +83 -0
  13. package/dist/bootstrap.js.map +1 -0
  14. package/dist/config.d.ts +19 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +40 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/hardhat.d.ts +26 -0
  19. package/dist/hardhat.d.ts.map +1 -0
  20. package/dist/hardhat.js +87 -0
  21. package/dist/hardhat.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +22 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/lib/decoders.d.ts +51 -0
  27. package/dist/lib/decoders.d.ts.map +1 -0
  28. package/dist/lib/decoders.js +122 -0
  29. package/dist/lib/decoders.js.map +1 -0
  30. package/dist/lib/govAddresses.d.ts +35 -0
  31. package/dist/lib/govAddresses.d.ts.map +1 -0
  32. package/dist/lib/govAddresses.js +51 -0
  33. package/dist/lib/govAddresses.js.map +1 -0
  34. package/dist/lib/selectors.d.ts +31 -0
  35. package/dist/lib/selectors.d.ts.map +1 -0
  36. package/dist/lib/selectors.js +110 -0
  37. package/dist/lib/selectors.js.map +1 -0
  38. package/dist/rpc.d.ts +14 -0
  39. package/dist/rpc.d.ts.map +1 -0
  40. package/dist/rpc.js +23 -0
  41. package/dist/rpc.js.map +1 -0
  42. package/dist/tools/build.d.ts +21 -0
  43. package/dist/tools/build.d.ts.map +1 -0
  44. package/dist/tools/build.js +281 -0
  45. package/dist/tools/build.js.map +1 -0
  46. package/dist/tools/context.d.ts +16 -0
  47. package/dist/tools/context.d.ts.map +1 -0
  48. package/dist/tools/context.js +2 -0
  49. package/dist/tools/context.js.map +1 -0
  50. package/dist/tools/gov.d.ts +4 -0
  51. package/dist/tools/gov.d.ts.map +1 -0
  52. package/dist/tools/gov.js +302 -0
  53. package/dist/tools/gov.js.map +1 -0
  54. package/dist/tools/index.d.ts +9 -0
  55. package/dist/tools/index.d.ts.map +1 -0
  56. package/dist/tools/index.js +21 -0
  57. package/dist/tools/index.js.map +1 -0
  58. package/dist/tools/introspect.d.ts +4 -0
  59. package/dist/tools/introspect.d.ts.map +1 -0
  60. package/dist/tools/introspect.js +312 -0
  61. package/dist/tools/introspect.js.map +1 -0
  62. package/package.json +69 -0
@@ -0,0 +1,302 @@
1
+ import { z } from "zod";
2
+ import { Contract, isAddress } from "ethers";
3
+ import { CalldataDecoder } from "../lib/decoders.js";
4
+ import { GovAddressResolver } from "../lib/govAddresses.js";
5
+ import { RpcProvider } from "../rpc.js";
6
+ import { ArtifactsMissingError } from "../artifacts.js";
7
+ export function registerGovTools(server, ctx) {
8
+ const rpc = new RpcProvider(ctx.config);
9
+ const decoder = new CalldataDecoder(ctx.artifacts, ctx.selectors);
10
+ const addresses = new GovAddressResolver(ctx.artifacts);
11
+ registerDecodeCalldata(server, ctx, decoder);
12
+ registerDecodeProposal(server, ctx, decoder, addresses, rpc);
13
+ registerReadGovState(server, ctx, addresses, rpc);
14
+ registerListGovContractTypes(server);
15
+ }
16
+ function errorResult(message) {
17
+ return {
18
+ content: [{ type: "text", text: message }],
19
+ isError: true,
20
+ };
21
+ }
22
+ // ---------- dexe_decode_calldata ----------
23
+ function registerDecodeCalldata(server, ctx, decoder) {
24
+ server.registerTool("dexe_decode_calldata", {
25
+ title: "Decode ABI-encoded calldata",
26
+ description: "Decodes a raw '0x…' calldata blob against loaded contract ABIs. If `contract` is given, only that ABI is tried; otherwise every artifact whose selector matches is tried. Useful for understanding captured transactions or proposal action payloads.",
27
+ inputSchema: {
28
+ data: z
29
+ .string()
30
+ .regex(/^0x[0-9a-fA-F]+$/, "Must be a 0x-prefixed hex string")
31
+ .describe("Raw calldata including 4-byte selector"),
32
+ contract: z.string().optional().describe("Optional: restrict to one contract's ABI"),
33
+ },
34
+ outputSchema: {
35
+ matched: z.boolean(),
36
+ primary: z
37
+ .object({
38
+ contract: z.string().nullable(),
39
+ sourceName: z.string().nullable(),
40
+ signature: z.string(),
41
+ selector: z.string(),
42
+ args: z.record(z.unknown()),
43
+ argsArray: z.array(z.unknown()),
44
+ })
45
+ .nullable(),
46
+ alternativeCount: z.number(),
47
+ alternatives: z.array(z.object({
48
+ contract: z.string().nullable(),
49
+ signature: z.string(),
50
+ })),
51
+ },
52
+ }, async ({ data, contract }) => {
53
+ try {
54
+ ctx.artifacts.requireArtifactsExist();
55
+ }
56
+ catch (err) {
57
+ if (err instanceof ArtifactsMissingError)
58
+ return errorResult(err.message);
59
+ throw err;
60
+ }
61
+ const result = decoder.decodeCalldata(data, contract);
62
+ const structured = {
63
+ matched: result.primary !== null,
64
+ primary: result.primary,
65
+ alternativeCount: result.alternatives.length,
66
+ alternatives: result.alternatives.map((a) => ({ contract: a.contract, signature: a.signature })),
67
+ };
68
+ const text = result.primary
69
+ ? `${result.primary.contract ?? "?"}.${result.primary.signature}\n\nArgs:\n${JSON.stringify(result.primary.args, null, 2).slice(0, 3000)}${result.alternatives.length > 0
70
+ ? `\n\n${result.alternatives.length} alternative match(es): ${result.alternatives.map((a) => `${a.contract}.${a.signature}`).join(", ")}`
71
+ : ""}`
72
+ : `No matching ABI found for selector ${data.slice(0, 10)}. Try dexe_find_selector.`;
73
+ return {
74
+ content: [{ type: "text", text }],
75
+ structuredContent: structured,
76
+ isError: !result.primary,
77
+ };
78
+ });
79
+ }
80
+ // ---------- dexe_decode_proposal ----------
81
+ function registerDecodeProposal(server, ctx, decoder, _addresses, rpc) {
82
+ server.registerTool("dexe_decode_proposal", {
83
+ title: "Read and decode a GovPool proposal",
84
+ description: "Fetches a proposal from an on-chain GovPool via `getProposals(offset, limit)` and decodes every action in BOTH `actionsOnFor` and `actionsOnAgainst` against loaded ABIs. Requires DEXE_RPC_URL.",
85
+ inputSchema: {
86
+ govPool: z.string().describe("GovPool contract address"),
87
+ proposalId: z.number().int().positive().describe("Proposal ID (1-indexed)"),
88
+ },
89
+ outputSchema: {
90
+ govPool: z.string(),
91
+ proposalId: z.number(),
92
+ proposalState: z.number(),
93
+ descriptionURL: z.string(),
94
+ requiredQuorum: z.string(),
95
+ requiredValidatorsQuorum: z.string(),
96
+ core: z.object({
97
+ voteEnd: z.string(),
98
+ executeAfter: z.string(),
99
+ executed: z.boolean(),
100
+ votesFor: z.string(),
101
+ votesAgainst: z.string(),
102
+ rawVotesFor: z.string(),
103
+ rawVotesAgainst: z.string(),
104
+ givenRewards: z.string(),
105
+ }),
106
+ forActions: z.array(z.unknown()),
107
+ againstActions: z.array(z.unknown()),
108
+ },
109
+ }, async ({ govPool, proposalId }) => {
110
+ if (!isAddress(govPool))
111
+ return errorResult(`Invalid GovPool address: ${govPool}`);
112
+ try {
113
+ ctx.artifacts.requireArtifactsExist();
114
+ }
115
+ catch (err) {
116
+ if (err instanceof ArtifactsMissingError)
117
+ return errorResult(err.message);
118
+ throw err;
119
+ }
120
+ let provider;
121
+ try {
122
+ provider = rpc.requireProvider();
123
+ }
124
+ catch (err) {
125
+ return errorResult(err instanceof Error ? err.message : String(err));
126
+ }
127
+ const abi = ctx.artifacts.get("GovPool")[0]?.abi;
128
+ if (!abi)
129
+ return errorResult("GovPool artifact not loaded. Run dexe_compile first.");
130
+ const pool = new Contract(govPool, abi, provider);
131
+ let views;
132
+ try {
133
+ views = await pool.getFunction("getProposals")(proposalId - 1, 1);
134
+ }
135
+ catch (err) {
136
+ return errorResult(`RPC call to getProposals failed: ${err instanceof Error ? err.message : String(err)}`);
137
+ }
138
+ if (!views || views.length === 0) {
139
+ return errorResult(`Proposal ${proposalId} not found at ${govPool}.`);
140
+ }
141
+ // ProposalView = [proposal, validatorProposal, proposalState, requiredQuorum, requiredValidatorsQuorum]
142
+ // proposal = [core, descriptionURL, actionsOnFor, actionsOnAgainst]
143
+ // core = [settings, voteEnd, executeAfter, executed, votesFor, votesAgainst, rawVotesFor, rawVotesAgainst, givenRewards]
144
+ const view = views[0];
145
+ const proposal = view[0];
146
+ const core = proposal[0];
147
+ const descriptionURL = proposal[1];
148
+ const rawForActions = proposal[2];
149
+ const rawAgainstActions = proposal[3];
150
+ const proposalState = Number(view[2]);
151
+ const requiredQuorum = view[3].toString();
152
+ const requiredValidatorsQuorum = view[4].toString();
153
+ const forActions = rawForActions.map((a) => decoder.decodeProposalAction({ executor: a[0], value: a[1], data: a[2], side: "for" }));
154
+ const againstActions = rawAgainstActions.map((a) => decoder.decodeProposalAction({ executor: a[0], value: a[1], data: a[2], side: "against" }));
155
+ const structured = {
156
+ govPool,
157
+ proposalId,
158
+ proposalState,
159
+ descriptionURL,
160
+ requiredQuorum,
161
+ requiredValidatorsQuorum,
162
+ core: {
163
+ voteEnd: core[1].toString(),
164
+ executeAfter: core[2].toString(),
165
+ executed: Boolean(core[3]),
166
+ votesFor: core[4].toString(),
167
+ votesAgainst: core[5].toString(),
168
+ rawVotesFor: core[6].toString(),
169
+ rawVotesAgainst: core[7].toString(),
170
+ givenRewards: core[8].toString(),
171
+ },
172
+ forActions,
173
+ againstActions,
174
+ };
175
+ return {
176
+ content: [
177
+ {
178
+ type: "text",
179
+ text: `Proposal ${proposalId} @ ${govPool}\nState: ${PROPOSAL_STATE_NAMES[proposalState] ?? proposalState}\nDescription: ${descriptionURL}\nActions on For: ${forActions.length}\nActions on Against: ${againstActions.length}\n${formatActions(forActions)}${formatActions(againstActions)}`,
180
+ },
181
+ ],
182
+ structuredContent: structured,
183
+ };
184
+ });
185
+ }
186
+ const PROPOSAL_STATE_NAMES = [
187
+ "Voting",
188
+ "WaitingForVotingTransfer",
189
+ "ValidatorVoting",
190
+ "Defeated",
191
+ "SucceededFor",
192
+ "SucceededAgainst",
193
+ "Locked",
194
+ "ExecutedFor",
195
+ "ExecutedAgainst",
196
+ "Undefined",
197
+ ];
198
+ function formatActions(actions) {
199
+ if (actions.length === 0)
200
+ return "";
201
+ return (`\n\n--- ${actions[0].side.toUpperCase()} actions ---\n` +
202
+ actions
203
+ .map((a, i) => {
204
+ const decoded = a.decoded
205
+ ? `${a.decoded.contract ?? "?"}.${a.decoded.signature}`
206
+ : "(no matching ABI)";
207
+ return ` ${i}: executor=${a.executor} value=${a.value}\n ${decoded}`;
208
+ })
209
+ .join("\n"));
210
+ }
211
+ // ---------- dexe_read_gov_state ----------
212
+ function registerReadGovState(server, _ctx, addresses, rpc) {
213
+ server.registerTool("dexe_read_gov_state", {
214
+ title: "Read aggregate GovPool state",
215
+ description: "For a given GovPool address, reads `getHelperContracts()` and `getNftContracts()` on-chain and returns the resolved helper + nft addresses. Requires DEXE_RPC_URL.",
216
+ inputSchema: {
217
+ govPool: z.string().describe("GovPool contract address"),
218
+ },
219
+ outputSchema: {
220
+ govPool: z.string(),
221
+ helpers: z.object({
222
+ settings: z.string(),
223
+ userKeeper: z.string(),
224
+ validators: z.string(),
225
+ poolRegistry: z.string(),
226
+ votePower: z.string(),
227
+ }),
228
+ nftContracts: z.object({
229
+ nftMultiplier: z.string(),
230
+ expertNft: z.string(),
231
+ dexeExpertNft: z.string(),
232
+ babt: z.string(),
233
+ }),
234
+ },
235
+ }, async ({ govPool }) => {
236
+ if (!isAddress(govPool))
237
+ return errorResult(`Invalid GovPool address: ${govPool}`);
238
+ let provider;
239
+ try {
240
+ provider = rpc.requireProvider();
241
+ }
242
+ catch (err) {
243
+ return errorResult(err instanceof Error ? err.message : String(err));
244
+ }
245
+ try {
246
+ const helpers = await addresses.resolveHelpers(govPool, provider);
247
+ const nftContracts = await addresses.resolveNftContracts(govPool, provider);
248
+ const structured = { govPool, helpers, nftContracts };
249
+ return {
250
+ content: [
251
+ {
252
+ type: "text",
253
+ text: `GovPool ${govPool}\n\nHelpers:\n settings : ${helpers.settings}\n userKeeper : ${helpers.userKeeper}\n validators : ${helpers.validators}\n poolRegistry : ${helpers.poolRegistry}\n votePower : ${helpers.votePower}\n\nNFT contracts:\n nftMultiplier : ${nftContracts.nftMultiplier}\n expertNft : ${nftContracts.expertNft}\n dexeExpertNft : ${nftContracts.dexeExpertNft}\n babt : ${nftContracts.babt}`,
254
+ },
255
+ ],
256
+ structuredContent: structured,
257
+ };
258
+ }
259
+ catch (err) {
260
+ return errorResult(`Failed to read gov state: ${err instanceof Error ? err.message : String(err)}`);
261
+ }
262
+ });
263
+ }
264
+ // ---------- dexe_list_gov_contract_types ----------
265
+ function registerListGovContractTypes(server) {
266
+ server.registerTool("dexe_list_gov_contract_types", {
267
+ title: "Orientation: gov subsystem contract catalog",
268
+ description: "Static catalog describing the DeXe governance subsystem contracts: what each one does and where its source lives. Cheap orientation tool for agents new to the codebase.",
269
+ inputSchema: {},
270
+ outputSchema: {
271
+ contracts: z.array(z.object({
272
+ name: z.string(),
273
+ role: z.string(),
274
+ sourcePath: z.string(),
275
+ })),
276
+ },
277
+ }, async () => {
278
+ const catalog = [
279
+ { name: "GovPool", role: "Per-DAO main contract: proposals, voting, execution", sourcePath: "contracts/gov/GovPool.sol" },
280
+ { name: "GovSettings", role: "Proposal settings (quorum, voting period, etc.)", sourcePath: "contracts/gov/settings/GovSettings.sol" },
281
+ { name: "GovUserKeeper", role: "User deposits, delegations, and voting power bookkeeping", sourcePath: "contracts/gov/user-keeper/GovUserKeeper.sol" },
282
+ { name: "GovValidators", role: "Validator set + second-step validator voting", sourcePath: "contracts/gov/validators/GovValidators.sol" },
283
+ { name: "DistributionProposal", role: "Proposal executor for reward distribution", sourcePath: "contracts/gov/proposals/DistributionProposal.sol" },
284
+ { name: "StakingProposal", role: "Proposal executor for staking-related actions", sourcePath: "contracts/gov/proposals/StakingProposal.sol" },
285
+ { name: "TokenSaleProposal", role: "Proposal executor for token sale tiers", sourcePath: "contracts/gov/proposals/TokenSaleProposal.sol" },
286
+ { name: "LinearPower", role: "Voting-power formula: linear", sourcePath: "contracts/gov/voting/LinearPower.sol" },
287
+ { name: "PolynomialPower", role: "Voting-power formula: polynomial", sourcePath: "contracts/gov/voting/PolynomialPower.sol" },
288
+ { name: "ContractsRegistry", role: "Service locator for global protocol contracts (not per-pool)", sourcePath: "contracts/core/ContractsRegistry.sol" },
289
+ { name: "PoolRegistry", role: "Tracks all deployed GovPool instances", sourcePath: "contracts/core/PoolRegistry.sol" },
290
+ ];
291
+ return {
292
+ content: [
293
+ {
294
+ type: "text",
295
+ text: catalog.map((c) => ` ${c.name.padEnd(22)} — ${c.role}\n ${c.sourcePath}`).join("\n"),
296
+ },
297
+ ],
298
+ structuredContent: { contracts: catalog },
299
+ };
300
+ });
301
+ }
302
+ //# sourceMappingURL=gov.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gov.js","sourceRoot":"","sources":["../../src/tools/gov.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { DexeConfig } from "../config.js";
3
+ /**
4
+ * Wire every dexe-mcp tool onto the given server instance. Builds the shared
5
+ * ToolContext (artifacts cache, hardhat runner, selector index) once so all
6
+ * tools share state.
7
+ */
8
+ export declare function registerAll(server: McpServer, config: DexeConfig): void;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS/C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CASvE"}
@@ -0,0 +1,21 @@
1
+ import { Artifacts } from "../artifacts.js";
2
+ import { HardhatRunner } from "../hardhat.js";
3
+ import { SelectorIndex } from "../lib/selectors.js";
4
+ import { registerBuildTools } from "./build.js";
5
+ import { registerIntrospectTools } from "./introspect.js";
6
+ import { registerGovTools } from "./gov.js";
7
+ /**
8
+ * Wire every dexe-mcp tool onto the given server instance. Builds the shared
9
+ * ToolContext (artifacts cache, hardhat runner, selector index) once so all
10
+ * tools share state.
11
+ */
12
+ export function registerAll(server, config) {
13
+ const artifacts = new Artifacts(config);
14
+ const runner = new HardhatRunner(config);
15
+ const selectors = new SelectorIndex(artifacts);
16
+ const ctx = { config, artifacts, runner, selectors };
17
+ registerBuildTools(server, ctx);
18
+ registerIntrospectTools(server, ctx);
19
+ registerGovTools(server, ctx);
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAiB,EAAE,MAAkB;IAC/D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAElE,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolContext } from "./context.js";
3
+ export declare function registerIntrospectTools(server: McpServer, ctx: ToolContext): void;
4
+ //# sourceMappingURL=introspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/tools/introspect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAOjF"}