dexe-mcp 0.2.0 → 0.4.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 (80) hide show
  1. package/CHANGELOG.md +192 -85
  2. package/README.md +103 -80
  3. package/dist/config.d.ts +2 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +10 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.js +16 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/addresses.js +1 -1
  10. package/dist/lib/ipfs.d.ts.map +1 -1
  11. package/dist/lib/ipfs.js +2 -1
  12. package/dist/lib/ipfs.js.map +1 -1
  13. package/dist/lib/markdownToSlate.d.ts +39 -0
  14. package/dist/lib/markdownToSlate.d.ts.map +1 -0
  15. package/dist/lib/markdownToSlate.js +203 -0
  16. package/dist/lib/markdownToSlate.js.map +1 -0
  17. package/dist/lib/merkleTree.d.ts +38 -0
  18. package/dist/lib/merkleTree.d.ts.map +1 -0
  19. package/dist/lib/merkleTree.js +83 -0
  20. package/dist/lib/merkleTree.js.map +1 -0
  21. package/dist/lib/signer.d.ts +12 -0
  22. package/dist/lib/signer.d.ts.map +1 -0
  23. package/dist/lib/signer.js +31 -0
  24. package/dist/lib/signer.js.map +1 -0
  25. package/dist/lib/subgraph.d.ts +2 -2
  26. package/dist/lib/subgraph.d.ts.map +1 -1
  27. package/dist/lib/subgraph.js +14 -9
  28. package/dist/lib/subgraph.js.map +1 -1
  29. package/dist/tools/daoDeploy.d.ts.map +1 -1
  30. package/dist/tools/daoDeploy.js +313 -63
  31. package/dist/tools/daoDeploy.js.map +1 -1
  32. package/dist/tools/flow.d.ts +62 -0
  33. package/dist/tools/flow.d.ts.map +1 -0
  34. package/dist/tools/flow.js +479 -0
  35. package/dist/tools/flow.js.map +1 -0
  36. package/dist/tools/index.d.ts.map +1 -1
  37. package/dist/tools/index.js +12 -0
  38. package/dist/tools/index.js.map +1 -1
  39. package/dist/tools/ipfs.d.ts.map +1 -1
  40. package/dist/tools/ipfs.js +94 -28
  41. package/dist/tools/ipfs.js.map +1 -1
  42. package/dist/tools/merkle.d.ts +4 -0
  43. package/dist/tools/merkle.d.ts.map +1 -0
  44. package/dist/tools/merkle.js +174 -0
  45. package/dist/tools/merkle.js.map +1 -0
  46. package/dist/tools/otc.d.ts +5 -0
  47. package/dist/tools/otc.d.ts.map +1 -0
  48. package/dist/tools/otc.js +481 -0
  49. package/dist/tools/otc.js.map +1 -0
  50. package/dist/tools/proposal.js +28 -10
  51. package/dist/tools/proposal.js.map +1 -1
  52. package/dist/tools/proposalBuild.d.ts.map +1 -1
  53. package/dist/tools/proposalBuild.js +28 -13
  54. package/dist/tools/proposalBuild.js.map +1 -1
  55. package/dist/tools/proposalBuildComplex.d.ts +222 -0
  56. package/dist/tools/proposalBuildComplex.d.ts.map +1 -1
  57. package/dist/tools/proposalBuildComplex.js +511 -138
  58. package/dist/tools/proposalBuildComplex.js.map +1 -1
  59. package/dist/tools/proposalBuildInternal.js +24 -11
  60. package/dist/tools/proposalBuildInternal.js.map +1 -1
  61. package/dist/tools/proposalBuildMore.js +42 -21
  62. package/dist/tools/proposalBuildMore.js.map +1 -1
  63. package/dist/tools/proposalBuildOffchain.d.ts.map +1 -1
  64. package/dist/tools/proposalBuildOffchain.js +8 -5
  65. package/dist/tools/proposalBuildOffchain.js.map +1 -1
  66. package/dist/tools/read.d.ts.map +1 -1
  67. package/dist/tools/read.js +227 -0
  68. package/dist/tools/read.js.map +1 -1
  69. package/dist/tools/subgraph.d.ts +4 -0
  70. package/dist/tools/subgraph.d.ts.map +1 -0
  71. package/dist/tools/subgraph.js +404 -0
  72. package/dist/tools/subgraph.js.map +1 -0
  73. package/dist/tools/txSend.d.ts +5 -0
  74. package/dist/tools/txSend.d.ts.map +1 -0
  75. package/dist/tools/txSend.js +87 -0
  76. package/dist/tools/txSend.js.map +1 -0
  77. package/dist/tools/voteBuild.d.ts.map +1 -1
  78. package/dist/tools/voteBuild.js +420 -0
  79. package/dist/tools/voteBuild.js.map +1 -1
  80. package/package.json +83 -75
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { cidForBytes, cidForJson, fetchIpfs, parseCid, PinataClient, } from "../lib/ipfs.js";
3
+ import { markdownToSlate } from "../lib/markdownToSlate.js";
3
4
  export function registerIpfsTools(server, ctx) {
4
5
  const gateways = resolveGateways(ctx);
5
6
  registerUploadProposalMetadata(server, ctx);
@@ -49,10 +50,13 @@ function requirePinata(ctx) {
49
50
  function registerUploadProposalMetadata(server, ctx) {
50
51
  server.registerTool("dexe_ipfs_upload_proposal_metadata", {
51
52
  title: "Upload proposal metadata JSON to IPFS (Pinata)",
52
- description: "Pins `{ title, description }` (the shape DeXe proposals expect) to IPFS via Pinata. Returns the CID for use as `descriptionURL` in `GovPool.createProposal`.",
53
+ description: "Pins `{ proposalName, proposalDescription, ... }` (the shape DeXe proposals expect) to IPFS via Pinata. Returns the CID for use as `descriptionURL` in `GovPool.createProposal`.",
53
54
  inputSchema: {
54
55
  title: z.string().min(1),
55
- description: z.string().default(""),
56
+ description: z.string().default("").describe("Proposal description — supports full Markdown: # headings, **bold**, *italic*, " +
57
+ "~~strikethrough~~, [links](url), `inline code`, ```code blocks```, " +
58
+ "- bullet lists, 1. numbered lists. Automatically converted to the Slate " +
59
+ "editor node format the frontend expects. Plain text also works."),
56
60
  extra: z
57
61
  .record(z.unknown())
58
62
  .optional()
@@ -69,7 +73,8 @@ function registerUploadProposalMetadata(server, ctx) {
69
73
  if ("error" in client)
70
74
  return errorResult(client.error);
71
75
  try {
72
- const payload = { title, description, ...(extra ?? {}) };
76
+ const slateDescription = markdownToSlate(description);
77
+ const payload = { proposalName: title, proposalDescription: JSON.stringify(slateDescription), ...(extra ?? {}) };
73
78
  const res = await client.pinJson(payload, { name: `proposal:${title.slice(0, 48)}` });
74
79
  const structured = {
75
80
  cid: res.cid,
@@ -93,50 +98,111 @@ function registerUploadProposalMetadata(server, ctx) {
93
98
  });
94
99
  }
95
100
  // ---------- dexe_ipfs_upload_dao_metadata ----------
101
+ /**
102
+ * Matches the frontend's nested IPFS upload chain for DAO descriptionURL.
103
+ *
104
+ * Frontend does 3 uploads:
105
+ * 1. Avatar file → CID v1 (optional)
106
+ * 2. Description text/JSON → CID v0 → "ipfs://<cid>"
107
+ * 3. Outer metadata wrapper (references #1 and #2) → CID v0 → "ipfs://<cid>"
108
+ *
109
+ * The outer CID (#3) becomes `descriptionURL` in `deployGovPool`.
110
+ *
111
+ * Outer metadata shape (must match for frontend UI compatibility):
112
+ * {
113
+ * avatarUrl: "https://<cidV1>.ipfs.4everland.io/<filename>" | "",
114
+ * avatarCID: "<cidV1>" | undefined,
115
+ * avatarFileName: "<filename>.jpeg" | "",
116
+ * daoName: string,
117
+ * websiteUrl: string,
118
+ * description: "ipfs://<cidV0>", // nested CID pointing to description content
119
+ * socialLinks: [["twitter", "https://..."], ...],
120
+ * documents: [{ name: string, url: string }, ...]
121
+ * }
122
+ */
96
123
  function registerUploadDaoMetadata(server, ctx) {
97
124
  server.registerTool("dexe_ipfs_upload_dao_metadata", {
98
- title: "Upload DAO-level metadata JSON to IPFS (Pinata)",
99
- description: "Pins arbitrary DAO metadata JSON (name, description, avatar, links, tags). Returns the CID for use as `descriptionURL` in `deployGovPool`.",
125
+ title: "Upload DAO metadata to IPFS (frontend-compatible nested format)",
126
+ description: "Uploads DAO metadata to IPFS using the exact schema the DeXe frontend expects. " +
127
+ "Performs a nested upload chain: (1) description content → IPFS, (2) outer metadata referencing the description CID → IPFS. " +
128
+ "Returns the outer CID for use as `descriptionURL` in `deployGovPool`. " +
129
+ "If avatarCID is provided (from a prior `dexe_ipfs_upload_file` call), it's wired into the metadata. " +
130
+ "Field names match the frontend exactly: `daoName`, `websiteUrl`, `socialLinks`, `documents`.",
100
131
  inputSchema: {
101
- name: z.string().min(1),
102
- description: z.string().default(""),
103
- avatar: z.string().optional().describe("Avatar CID or full URL"),
104
- links: z.array(z.object({ label: z.string(), url: z.string() })).optional(),
105
- tags: z.array(z.string()).optional(),
106
- extra: z.record(z.unknown()).optional(),
132
+ daoName: z.string().min(1).describe("DAO name (displayed in UI)"),
133
+ description: z.string().default("").describe("DAO description — supports full Markdown: # headings, **bold**, *italic*, " +
134
+ "~~strikethrough~~, [links](url), `inline code`, ```code blocks```, " +
135
+ "- bullet lists, 1. numbered lists. Automatically converted to the Slate " +
136
+ "editor node format the frontend expects. Plain text also works."),
137
+ websiteUrl: z.string().default("").describe("DAO website URL"),
138
+ avatarCID: z.string().optional().describe("CID v1 of a previously uploaded avatar image (from dexe_ipfs_upload_file). Omit if no avatar."),
139
+ avatarFileName: z.string().optional().describe("Avatar filename with extension, e.g. 'logo.jpeg'. Required if avatarCID is provided."),
140
+ socialLinks: z
141
+ .array(z.tuple([z.string(), z.string()]))
142
+ .optional()
143
+ .describe('Social links as [platform, url] tuples, e.g. [["twitter", "https://x.com/dao"]]'),
144
+ documents: z
145
+ .array(z.object({ name: z.string(), url: z.string() }))
146
+ .optional()
147
+ .describe("External documents, e.g. [{ name: \"Whitepaper\", url: \"https://...\" }]"),
107
148
  },
108
149
  outputSchema: {
109
150
  cid: z.string(),
151
+ descriptionCid: z.string(),
110
152
  size: z.number(),
111
153
  pinnedAt: z.string(),
112
154
  descriptionURL: z.string(),
113
155
  },
114
- }, async ({ name, description = "", avatar, links, tags, extra }) => {
156
+ }, async ({ daoName, description = "", websiteUrl = "", avatarCID, avatarFileName, socialLinks, documents, }) => {
115
157
  const client = requirePinata(ctx);
116
158
  if ("error" in client)
117
159
  return errorResult(client.error);
118
160
  try {
119
- const payload = { name, description };
120
- if (avatar)
121
- payload.avatar = avatar;
122
- if (links)
123
- payload.links = links;
124
- if (tags)
125
- payload.tags = tags;
126
- if (extra)
127
- Object.assign(payload, extra);
128
- const res = await client.pinJson(payload, { name: `dao:${name.slice(0, 48)}` });
161
+ // Step 1: Upload description content as its own IPFS pin.
162
+ // The frontend stores descriptions as Slate editor node arrays and
163
+ // renders them via SlateDescendant[]. We convert markdown/plain text
164
+ // to the full Slate format (headings, bold, links, lists, etc.)
165
+ // using remark-slate-transformer with frontend-matching overrides.
166
+ const descriptionPayload = markdownToSlate(description);
167
+ const descriptionRes = await client.pinJson(descriptionPayload, {
168
+ name: `dao-desc:${daoName.slice(0, 40)}`,
169
+ });
170
+ const descriptionIpfsPath = `ipfs://${descriptionRes.cid}`;
171
+ // Step 2: Build the outer metadata wrapper (matches frontend schema exactly)
172
+ let avatarUrl = "";
173
+ if (avatarCID && avatarFileName) {
174
+ // Frontend uses 4everland gateway: https://<cidV1>.ipfs.4everland.io/<filename>
175
+ avatarUrl = `https://${avatarCID}.ipfs.4everland.io/${avatarFileName}`;
176
+ }
177
+ const outerPayload = {
178
+ avatarUrl,
179
+ avatarCID: avatarCID ?? undefined,
180
+ avatarFileName: avatarFileName ?? "",
181
+ daoName,
182
+ websiteUrl,
183
+ description: descriptionIpfsPath,
184
+ socialLinks: socialLinks ?? [],
185
+ documents: documents ?? [],
186
+ };
187
+ // Step 3: Upload the outer metadata wrapper
188
+ const metadataRes = await client.pinJson(outerPayload, {
189
+ name: `dao:${daoName.slice(0, 48)}`,
190
+ });
129
191
  const structured = {
130
- cid: res.cid,
131
- size: res.size,
132
- pinnedAt: res.pinnedAt,
133
- descriptionURL: res.cid,
192
+ cid: metadataRes.cid,
193
+ descriptionCid: descriptionRes.cid,
194
+ size: metadataRes.size,
195
+ pinnedAt: metadataRes.pinnedAt,
196
+ descriptionURL: metadataRes.cid,
134
197
  };
135
198
  return {
136
199
  content: [
137
200
  {
138
201
  type: "text",
139
- text: `Pinned DAO metadata → ${res.cid} (${res.size} bytes, ${res.pinnedAt})`,
202
+ text: `Pinned DAO metadata (frontend-compatible):\n` +
203
+ ` description content → ${descriptionRes.cid}\n` +
204
+ ` outer metadata → ${metadataRes.cid} (${metadataRes.size} bytes)\n` +
205
+ `Use "${metadataRes.cid}" as descriptionURL in deployGovPool.`,
140
206
  },
141
207
  ],
142
208
  structuredContent: structured,
@@ -256,7 +322,7 @@ function registerCidInfo(server, gateways) {
256
322
  try {
257
323
  const info = parseCid(cid);
258
324
  const gatewayUrls = gateways.length
259
- ? gateways.map((g) => `${g.replace(/\/$/, "")}/ipfs/${info.cid}`)
325
+ ? gateways.map((g) => `${g.replace(/\/+$/, "").replace(/\/ipfs$/, "")}/ipfs/${info.cid}`)
260
326
  : [];
261
327
  const structured = { ...info, gatewayUrls };
262
328
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/tools/ipfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/tools/ipfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,GAAgB;IACnE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEtC,8BAA8B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5C,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAiB;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,eAAe,GACnB,2EAA2E;IAC3E,wFAAwF;IACxF,wDAAwD;IACxD,yEAAyE;IACzE,+FAA+F,CAAC;AAElG,SAAS,aAAa,CAAC,GAAgB;IACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EACH,yFAAyF;SAC5F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,2DAA2D;AAE3D,SAAS,8BAA8B,CAAC,MAAiB,EAAE,GAAgB;IACzE,MAAM,CAAC,YAAY,CACjB,oCAAoC,EACpC;QACE,KAAK,EAAE,gDAAgD;QACvD,WAAW,EACT,kLAAkL;QACpL,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC1C,iFAAiF;gBACjF,qEAAqE;gBACrE,0EAA0E;gBAC1E,iEAAiE,CAClE;YACD,KAAK,EAAE,CAAC;iBACL,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,uDAAuD,CAAC;SACrE;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC3B;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACjH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACtF,MAAM,UAAU,GAAG;gBACjB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,cAAc,EAAE,GAAG,CAAC,GAAG;aACxB,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8BAA8B,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,QAAQ,2BAA2B;qBAC3G;iBACF;gBACD,iBAAiB,EAAE,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sDAAsD;AAEtD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,yBAAyB,CAAC,MAAiB,EAAE,GAAgB;IACpE,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;QACE,KAAK,EAAE,iEAAiE;QACxE,WAAW,EACT,iFAAiF;YACjF,6HAA6H;YAC7H,wEAAwE;YACxE,sGAAsG;YACtG,8FAA8F;QAChG,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC1C,4EAA4E;gBAC5E,qEAAqE;gBACrE,0EAA0E;gBAC1E,iEAAiE,CAClE;YACD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvC,+FAA+F,CAChG;YACD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,sFAAsF,CACvF;YACD,WAAW,EAAE,CAAC;iBACX,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBACxC,QAAQ,EAAE;iBACV,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;iBACtD,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;SACzF;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SAC3B;KACF,EACD,KAAK,EAAE,EACL,OAAO,EACP,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,SAAS,EACT,cAAc,EACd,WAAW,EACX,SAAS,GACV,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,0DAA0D;YAC1D,mEAAmE;YACnE,qEAAqE;YACrE,gEAAgE;YAChE,mEAAmE;YACnE,MAAM,kBAAkB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC9D,IAAI,EAAE,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aACzC,CAAC,CAAC;YACH,MAAM,mBAAmB,GAAG,UAAU,cAAc,CAAC,GAAG,EAAE,CAAC;YAE3D,6EAA6E;YAC7E,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;gBAChC,gFAAgF;gBAChF,SAAS,GAAG,WAAW,SAAS,sBAAsB,cAAc,EAAE,CAAC;YACzE,CAAC;YAED,MAAM,YAAY,GAAG;gBACnB,SAAS;gBACT,SAAS,EAAE,SAAS,IAAI,SAAS;gBACjC,cAAc,EAAE,cAAc,IAAI,EAAE;gBACpC,OAAO;gBACP,UAAU;gBACV,WAAW,EAAE,mBAAmB;gBAChC,WAAW,EAAE,WAAW,IAAI,EAAE;gBAC9B,SAAS,EAAE,SAAS,IAAI,EAAE;aAC3B,CAAC;YAEF,4CAA4C;YAC5C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;gBACrD,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aACpC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG;gBACjB,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,cAAc,EAAE,cAAc,CAAC,GAAG;gBAClC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,cAAc,EAAE,WAAW,CAAC,GAAG;aAChC,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,8CAA8C;4BAC9C,2BAA2B,cAAc,CAAC,GAAG,IAAI;4BACjD,2BAA2B,WAAW,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,WAAW;4BAC1E,QAAQ,WAAW,CAAC,GAAG,uCAAuC;qBACjE;iBACF;gBACD,iBAAiB,EAAE,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,8CAA8C;AAE9C,SAAS,kBAAkB,CAAC,MAAiB,EAAE,GAAgB;IAC7D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,8DAA8D;QACrE,WAAW,EACT,kHAAkH;QACpH,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC;SAC5D;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,WAAW,GAAG,0BAA0B,EAAE,EAAE,EAAE;QAChF,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnF,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,UAAU,QAAQ,KAAK,KAAK,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,kBAAkB,GAAG,CAAC,IAAI,GAAG;qBAC3F;iBACF;gBACD,iBAAiB,EAAE,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,wCAAwC;AAExC,SAAS,aAAa,CAAC,MAAiB,EAAE,eAAyB;IACjE,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,6DAA6D;QACpE,WAAW,EACT,iXAAiX;QACnX,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;SAC/D;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,EAAE;QAClC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;gBAC/B,QAAQ,EAAE,eAAe;gBACzB,mBAAmB,EAAE,SAAS;aAC/B,CAAC,CAAC;YACH,MAAM,UAAU,GAAG;gBACjB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;gBAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;YACF,MAAM,OAAO,GACX,GAAG,CAAC,IAAI,IAAI,IAAI;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBACjD,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,OAAO,cAAc,GAAG,CAAC,QAAQ,MAAM,OAAO,EAAE;qBACjF;iBACF;gBACD,iBAAiB,EAAE,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,2CAA2C;AAE3C,SAAS,eAAe,CAAC,MAAiB,EAAE,QAAkB;IAC5D,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,+EAA+E;QACtF,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACjE;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjC;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM;gBACjC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzF,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,YAAY,IAAI,CAAC,GAAG,IAAI;4BACxB,aAAa,IAAI,CAAC,OAAO,IAAI;4BAC7B,YAAY,IAAI,CAAC,KAAK,IAAI;4BAC1B,0BAA0B,IAAI,CAAC,SAAS,IAAI;4BAC5C,YAAY,IAAI,CAAC,SAAS,IAAI,sBAAsB,IAAI;4BACxD,kBAAkB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAClE;iBACF;gBACD,iBAAiB,EAAE,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+CAA+C;AAE/C,SAAS,kBAAkB,CAAC,MAAiB;IAC3C,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,yDAAyD;QAChE,WAAW,EACT,oTAAoT;QACtT,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;SACnB;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wBAAwB,GAAG,EAAE,EAAE,CAAC;gBACzE,iBAAiB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,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 registerMerkleTools(server: McpServer, _ctx: ToolContext): void;
4
+ //# sourceMappingURL=merkle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/tools/merkle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA0ChD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA+J9E"}
@@ -0,0 +1,174 @@
1
+ import { z } from "zod";
2
+ import { isAddress, getAddress } from "ethers";
3
+ import { buildAddressMerkleTree, buildMerkleTree, computeLeafHash, verifyProof, } from "../lib/merkleTree.js";
4
+ /**
5
+ * Merkle utility tools — produce roots and proofs compatible with
6
+ * OpenZeppelin's `StandardMerkleTree` and the on-chain verifier in
7
+ * `TokenSaleProposalBuy.sol::_checkMerkleProofs`.
8
+ *
9
+ * Default leaf encoding is `["address"]` (the only shape used by the
10
+ * frontend's OTC token-sale flow). Set `leafEncoding` + `entries` for
11
+ * advanced trees (e.g. `["address","uint256"]`).
12
+ */
13
+ function errorResult(message) {
14
+ return { content: [{ type: "text", text: message }], isError: true };
15
+ }
16
+ function jsonResult(value) {
17
+ return {
18
+ content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
19
+ structuredContent: value,
20
+ };
21
+ }
22
+ function normaliseAddresses(addresses) {
23
+ const seen = new Set();
24
+ const result = [];
25
+ for (const raw of addresses) {
26
+ if (!isAddress(raw))
27
+ throw new Error(`Invalid address: ${raw}`);
28
+ const checksummed = getAddress(raw);
29
+ if (seen.has(checksummed.toLowerCase()))
30
+ continue;
31
+ seen.add(checksummed.toLowerCase());
32
+ result.push(checksummed);
33
+ }
34
+ return result;
35
+ }
36
+ export function registerMerkleTools(server, _ctx) {
37
+ server.registerTool("dexe_merkle_build", {
38
+ title: "Build a merkle tree (OZ StandardMerkleTree compatible)",
39
+ description: "Builds a merkle tree compatible with OpenZeppelin StandardMerkleTree (used by DeXe's TokenSaleProposal merkle whitelists). Default leaf shape is a single address; pass `leafEncoding` + `entries` for richer leaves (e.g. address + amount). Returns root, leaf hashes, and per-input-index proofs.",
40
+ inputSchema: {
41
+ addresses: z
42
+ .array(z.string())
43
+ .min(1)
44
+ .optional()
45
+ .describe("Convenience: addresses for an `address`-only merkle whitelist. Mutually exclusive with `entries`."),
46
+ entries: z
47
+ .array(z.array(z.union([z.string(), z.number()])))
48
+ .min(1)
49
+ .optional()
50
+ .describe("Advanced: per-leaf raw values matching `leafEncoding` order. Mutually exclusive with `addresses`."),
51
+ leafEncoding: z
52
+ .array(z.string())
53
+ .min(1)
54
+ .default(["address"])
55
+ .describe("ABI types for each leaf column. Default `['address']` matches the OTC frontend."),
56
+ },
57
+ outputSchema: {
58
+ root: z.string(),
59
+ leafHashes: z.array(z.string()),
60
+ proofs: z.array(z.array(z.string())),
61
+ addresses: z.array(z.string()).optional(),
62
+ },
63
+ }, async ({ addresses, entries, leafEncoding = ["address"] }) => {
64
+ try {
65
+ if (!addresses && !entries) {
66
+ return errorResult("Must provide either `addresses` or `entries`.");
67
+ }
68
+ if (addresses && entries) {
69
+ return errorResult("Provide either `addresses` or `entries`, not both.");
70
+ }
71
+ if (addresses) {
72
+ const normalised = normaliseAddresses(addresses);
73
+ const result = buildAddressMerkleTree(normalised);
74
+ return jsonResult({
75
+ root: result.root,
76
+ leafHashes: result.leafHashes,
77
+ proofs: result.proofs,
78
+ addresses: normalised,
79
+ });
80
+ }
81
+ const result = buildMerkleTree(entries, leafEncoding);
82
+ return jsonResult({
83
+ root: result.root,
84
+ leafHashes: result.leafHashes,
85
+ proofs: result.proofs,
86
+ });
87
+ }
88
+ catch (err) {
89
+ return errorResult(err instanceof Error ? err.message : String(err));
90
+ }
91
+ });
92
+ server.registerTool("dexe_merkle_proof", {
93
+ title: "Compute a merkle proof for one address (or leaf)",
94
+ description: "Builds the same tree as `dexe_merkle_build` and returns the proof for a single target. Useful for buyer-side flows where the full whitelist is known but only one proof is needed. Default shape: address-only.",
95
+ inputSchema: {
96
+ addresses: z
97
+ .array(z.string())
98
+ .min(1)
99
+ .optional()
100
+ .describe("Address-only whitelist (mutually exclusive with `entries`)."),
101
+ entries: z
102
+ .array(z.array(z.union([z.string(), z.number()])))
103
+ .min(1)
104
+ .optional(),
105
+ leafEncoding: z.array(z.string()).min(1).default(["address"]),
106
+ target: z.string().describe("Address (when using `addresses`)."),
107
+ targetEntry: z
108
+ .array(z.union([z.string(), z.number()]))
109
+ .optional()
110
+ .describe("Raw leaf values when using `entries`."),
111
+ },
112
+ outputSchema: {
113
+ root: z.string(),
114
+ leaf: z.string(),
115
+ proof: z.array(z.string()),
116
+ verified: z.boolean(),
117
+ },
118
+ }, async ({ addresses, entries, leafEncoding = ["address"], target, targetEntry }) => {
119
+ try {
120
+ if (!addresses && !entries) {
121
+ return errorResult("Must provide either `addresses` or `entries`.");
122
+ }
123
+ if (addresses) {
124
+ if (!isAddress(target))
125
+ return errorResult(`Invalid target address: ${target}`);
126
+ const normalised = normaliseAddresses(addresses);
127
+ const checksummed = getAddress(target);
128
+ const idx = normalised.findIndex((a) => a.toLowerCase() === checksummed.toLowerCase());
129
+ if (idx === -1) {
130
+ return errorResult(`Target ${checksummed} not present in whitelist.`);
131
+ }
132
+ const tree = buildAddressMerkleTree(normalised);
133
+ const leaf = computeLeafHash([checksummed], ["address"]);
134
+ const proof = tree.proofs[idx] ?? [];
135
+ return jsonResult({
136
+ root: tree.root,
137
+ leaf,
138
+ proof,
139
+ verified: verifyProof(proof, tree.root, leaf),
140
+ });
141
+ }
142
+ if (!entries) {
143
+ return errorResult("Must provide `entries` when not using `addresses`.");
144
+ }
145
+ if (!targetEntry) {
146
+ return errorResult("Provide `targetEntry` when using `entries`.");
147
+ }
148
+ const tree = buildMerkleTree(entries, leafEncoding);
149
+ const leaf = computeLeafHash(targetEntry, leafEncoding);
150
+ const idx = tree.leafHashes.findIndex((h) => h.toLowerCase() === leaf.toLowerCase());
151
+ if (idx === -1) {
152
+ return errorResult("Target entry leaf not in tree.");
153
+ }
154
+ let proof = [];
155
+ for (let i = 0; i < entries.length; i++) {
156
+ const candidateLeaf = computeLeafHash(entries[i], leafEncoding);
157
+ if (candidateLeaf.toLowerCase() === leaf.toLowerCase()) {
158
+ proof = tree.proofs[i] ?? [];
159
+ break;
160
+ }
161
+ }
162
+ return jsonResult({
163
+ root: tree.root,
164
+ leaf,
165
+ proof,
166
+ verified: verifyProof(proof, tree.root, leaf),
167
+ });
168
+ }
169
+ catch (err) {
170
+ return errorResult(err instanceof Error ? err.message : String(err));
171
+ }
172
+ });
173
+ }
174
+ //# sourceMappingURL=merkle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/tools/merkle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolContext } from "./context.js";
3
+ import { SignerManager } from "../lib/signer.js";
4
+ export declare function registerOtcTools(server: McpServer, ctx: ToolContext, signer: SignerManager): void;
5
+ //# sourceMappingURL=otc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otc.d.ts","sourceRoot":"","sources":["../../src/tools/otc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA+DjD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CAohBN"}