@mint.club/v2-mcp 2.0.0 → 2.0.2

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mint Club contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -27,6 +27,8 @@ Read-only tools work without a wallet. Write tools and `wallet_balance` require
27
27
 
28
28
  > Never store a key in a committed MCP configuration or paste it into a model conversation. Use a dedicated wallet with limited funds.
29
29
 
30
+ Every write tool requires an explicit `chain` and the literal structured argument `"confirm": true`. This field prevents accidental omission but is not proof of user authorization: configure the MCP host to require interactive approval for tools marked destructive. The client must show the complete chain, assets, amounts, and limits before setting it; the server never infers confirmation.
31
+
30
32
  ## Tools
31
33
 
32
34
  The server exposes nine protocol-specific tools:
@@ -45,12 +47,16 @@ The server exposes nine protocol-specific tools:
45
47
 
46
48
  `create_token` requires `curve`, `initialPrice`, and `finalPrice` in addition to its name, symbol, reserve, and maximum supply. It uses the CLI defaults of 100 basis points (1%) for both mint and burn royalties; use the CLI directly when different royalties are required.
47
49
 
48
- Every tool accepts an optional canonical `chain` property. Base is the default. Supported values are:
50
+ This tool performs onchain creation through the CLI. Configure logos and website links afterward using the creator wallet on Mint Club; see the [CLI metadata guidance](../cli/README.md#create-a-token). No anonymous metadata API call is required.
51
+
52
+ Read tools accept an optional canonical `chain` property and default to Base. Every write tool requires `chain` explicitly. Supported values are:
49
53
 
50
54
  `ethereum` · `optimism` · `arbitrum` · `avalanche` · `base` · `polygon` · `bsc` · `zora` · `unichain` · `robinhood` · `sepolia` · `base-sepolia`
51
55
 
52
56
  Blast is unsupported by this integration.
53
57
 
58
+ `send_token` also requires an explicit `token` asset. Use the literal `"NATIVE"` for the selected chain's native currency; otherwise provide an ERC-20 symbol or address.
59
+
54
60
  ## ZapV2 inputs
55
61
 
56
62
  `zap_buy` requires:
@@ -61,7 +67,8 @@ Blast is unsupported by this integration.
61
67
  "token": "0xMINT_CLUB_TOKEN",
62
68
  "inputToken": "USDT",
63
69
  "inputAmount": "10",
64
- "slippage": "1"
70
+ "slippage": "1",
71
+ "confirm": true
65
72
  }
66
73
  ```
67
74
 
@@ -75,7 +82,8 @@ Optional `minTokens` is denominated in the Mint Club token. `inputAmount` is exa
75
82
  "token": "0xMINT_CLUB_TOKEN",
76
83
  "amount": "100",
77
84
  "outputToken": "USDC",
78
- "slippage": "1"
85
+ "slippage": "1",
86
+ "confirm": true
79
87
  }
80
88
  ```
81
89
 
@@ -90,14 +98,14 @@ ZapV2 is deployed on every supported chain listed above. Deployment addresses ar
90
98
  ## Example requests
91
99
 
92
100
  - “Get token info for SIGNET on Base.” → `token_info`
93
- - “Mint 100 TOKEN on Robinhood with its USDG reserve.” → `buy_token`
94
- - “Buy TOKEN with exactly 10 USDT on Arbitrum.” → `zap_buy`
95
- - “Sell 50 TOKEN for USDC on Unichain.” → `zap_sell`
96
- - “Create token My Token (MYT), backed by USDG on Robinhood, with maximum supply 1,000,000 and a linear curve from 0.01 to 1 USDG.” → `create_token`
101
+ - Confirmed `buy_token` call for 100 TOKEN on Robinhood with `"confirm": true`.
102
+ - Confirmed `zap_buy` call using exactly 10 USDT on Arbitrum with `"confirm": true`.
103
+ - Confirmed `zap_sell` call for 50 TOKEN to USDC on Unichain with `"confirm": true`.
104
+ - Confirmed `create_token` call for My Token (MYT), backed by USDG on Robinhood, with maximum supply 1,000,000, a linear curve from 0.01 to 1 USDG, and `"confirm": true`.
97
105
 
98
106
  ## Safe CLI execution
99
107
 
100
- Tool arguments are passed to `mc` with `execFileSync` argv arrays. User values are not interpolated into a shell command.
108
+ Tool arguments are passed to `mc` with `execFileSync` argv arrays. User values are not interpolated into a shell command. The server appends CLI `--yes` only after validating `confirm === true` for a write tool.
101
109
 
102
110
  Set `MINTCLUB_CLI` to override the CLI executable path.
103
111
 
@@ -114,4 +122,4 @@ npm --prefix mcp run build
114
122
 
115
123
  ## License
116
124
 
117
- MIT
125
+ MIT. Published tarballs include the project `LICENSE` and generated `THIRD_PARTY_NOTICES.md` covering every package bundled into the MCP server.
@@ -0,0 +1,204 @@
1
+ # Third-Party Notices
2
+
3
+ > Generated from the Bun bundle metafile by `scripts/generate-third-party-notices.mjs`.
4
+ > Do not edit manually; run `npm run build` from the repository root.
5
+
6
+ The Mint Club MCP server bundle includes the following third-party packages:
7
+
8
+ | Package | Version | Declared license |
9
+ | --- | --- | --- |
10
+ | `@modelcontextprotocol/sdk@1.29.0` | 1.29.0 | MIT |
11
+ | `ajv-formats@3.0.1` | 3.0.1 | MIT |
12
+ | `ajv@8.20.0` | 8.20.0 | MIT |
13
+ | `fast-deep-equal@3.1.3` | 3.1.3 | MIT |
14
+ | `fast-uri@3.1.3` | 3.1.3 | BSD-3-Clause |
15
+ | `json-schema-traverse@1.0.0` | 1.0.0 | MIT |
16
+ | `zod-to-json-schema@3.25.2` | 3.25.2 | ISC |
17
+ | `zod@4.4.3` | 4.4.3 | MIT |
18
+
19
+ ## License and notice texts
20
+
21
+ ### @modelcontextprotocol/sdk@1.29.0 (LICENSE)
22
+
23
+ <!-- sha256:8694aa57bec3f3e9ad0559e91c63a795904e967104efb9d6fc9d153e56f567c2 -->
24
+
25
+ MIT License
26
+
27
+ Copyright (c) 2024 Anthropic, PBC
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining a copy
30
+ of this software and associated documentation files (the "Software"), to deal
31
+ in the Software without restriction, including without limitation the rights
32
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
33
+ copies of the Software, and to permit persons to whom the Software is
34
+ furnished to do so, subject to the following conditions:
35
+
36
+ The above copyright notice and this permission notice shall be included in all
37
+ copies or substantial portions of the Software.
38
+
39
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
42
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
43
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
44
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
45
+ SOFTWARE.
46
+
47
+ ### ajv-formats@3.0.1 (LICENSE)
48
+
49
+ <!-- sha256:0eb7e0538bf86badc8cc36fc66164d495630f21f6998529188406fb00c782a5e -->
50
+
51
+ MIT License
52
+
53
+ Copyright (c) 2020 Evgeny Poberezkin
54
+
55
+ Permission is hereby granted, free of charge, to any person obtaining a copy
56
+ of this software and associated documentation files (the "Software"), to deal
57
+ in the Software without restriction, including without limitation the rights
58
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
59
+ copies of the Software, and to permit persons to whom the Software is
60
+ furnished to do so, subject to the following conditions:
61
+
62
+ The above copyright notice and this permission notice shall be included in all
63
+ copies or substantial portions of the Software.
64
+
65
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
67
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
68
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
69
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
70
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
71
+ SOFTWARE.
72
+
73
+ ### ajv@8.20.0 (LICENSE)
74
+
75
+ <!-- sha256:f2fde84e6c1f177681e152a4459f025a87e855c0aa374238ba79b2e72a15b57c -->
76
+
77
+ The MIT License (MIT)
78
+
79
+ Copyright (c) 2015-2021 Evgeny Poberezkin
80
+
81
+ Permission is hereby granted, free of charge, to any person obtaining a copy
82
+ of this software and associated documentation files (the "Software"), to deal
83
+ in the Software without restriction, including without limitation the rights
84
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
85
+ copies of the Software, and to permit persons to whom the Software is
86
+ furnished to do so, subject to the following conditions:
87
+
88
+ The above copyright notice and this permission notice shall be included in all
89
+ copies or substantial portions of the Software.
90
+
91
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
92
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
93
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
94
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
95
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
96
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
97
+ SOFTWARE.
98
+
99
+ ### fast-deep-equal@3.1.3 (LICENSE), json-schema-traverse@1.0.0 (LICENSE)
100
+
101
+ <!-- sha256:aa407ee69b3f646286f5162d0679256a0fe5b7fcc51f104ffb647efe167715ea -->
102
+
103
+ MIT License
104
+
105
+ Copyright (c) 2017 Evgeny Poberezkin
106
+
107
+ Permission is hereby granted, free of charge, to any person obtaining a copy
108
+ of this software and associated documentation files (the "Software"), to deal
109
+ in the Software without restriction, including without limitation the rights
110
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
111
+ copies of the Software, and to permit persons to whom the Software is
112
+ furnished to do so, subject to the following conditions:
113
+
114
+ The above copyright notice and this permission notice shall be included in all
115
+ copies or substantial portions of the Software.
116
+
117
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
118
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
119
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
120
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
121
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
122
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
123
+ SOFTWARE.
124
+
125
+ ### fast-uri@3.1.3 (LICENSE)
126
+
127
+ <!-- sha256:b010b0dfdfdb23d7396e03b82cd4621fc9bb8f95d6b0aea70b9c24e12074c786 -->
128
+
129
+ Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae
130
+ Copyright (c) 2021-present The Fastify team <https://github.com/fastify/fastify#team>
131
+ All rights reserved.
132
+
133
+ Redistribution and use in source and binary forms, with or without
134
+ modification, are permitted provided that the following conditions are met:
135
+ * Redistributions of source code must retain the above copyright
136
+ notice, this list of conditions and the following disclaimer.
137
+ * Redistributions in binary form must reproduce the above copyright
138
+ notice, this list of conditions and the following disclaimer in the
139
+ documentation and/or other materials provided with the distribution.
140
+ * The names of any contributors may not be used to endorse or promote
141
+ products derived from this software without specific prior written
142
+ permission.
143
+
144
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
145
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
146
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
147
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
148
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
149
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
150
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
151
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
152
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
153
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
154
+
155
+ * * *
156
+
157
+ The complete list of contributors can be found at:
158
+ - https://github.com/garycourt/uri-js/graphs/contributors
159
+
160
+ ### zod-to-json-schema@3.25.2 (LICENSE)
161
+
162
+ <!-- sha256:80d3168ad2f70f6f5bb2ab22b23414707abf6f0a392034891481ae36a1a429d4 -->
163
+
164
+ ISC License
165
+
166
+ Copyright (c) 2020, Stefan Terdell
167
+
168
+ Permission to use, copy, modify, and/or distribute this software for any
169
+ purpose with or without fee is hereby granted, provided that the above
170
+ copyright notice and this permission notice appear in all copies.
171
+
172
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
173
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
174
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
175
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
176
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
177
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
178
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
179
+
180
+ ### zod@4.4.3 (LICENSE)
181
+
182
+ <!-- sha256:f61cacc2acb8b71aa79a128b3e732bf25e02aab40747bbbd5bf00c97c9cda28d -->
183
+
184
+ MIT License
185
+
186
+ Copyright (c) 2025 Colin McDonnell
187
+
188
+ Permission is hereby granted, free of charge, to any person obtaining a copy
189
+ of this software and associated documentation files (the "Software"), to deal
190
+ in the Software without restriction, including without limitation the rights
191
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
192
+ copies of the Software, and to permit persons to whom the Software is
193
+ furnished to do so, subject to the following conditions:
194
+
195
+ The above copyright notice and this permission notice shall be included in all
196
+ copies or substantial portions of the Software.
197
+
198
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
199
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
200
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
201
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
202
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
203
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
204
+ SOFTWARE.
package/dist/index.js CHANGED
@@ -14071,14 +14071,18 @@ class StdioServerTransport {
14071
14071
 
14072
14072
  // src/index.ts
14073
14073
  var require2 = createRequire(import.meta.url);
14074
+ var version2 = "2.0.2";
14074
14075
  var chainRegistry = require2("@mint.club/v2-cli/chain-registry.json");
14075
14076
  var SUPPORTED_CHAINS = Object.freeze(chainRegistry.chains.map(({ key }) => key));
14076
14077
  var CHAIN_PROPERTY = {
14077
14078
  type: "string",
14078
14079
  enum: SUPPORTED_CHAINS,
14079
- default: "base",
14080
14080
  description: "Chain to use"
14081
14081
  };
14082
+ var READ_CHAIN_PROPERTY = {
14083
+ ...CHAIN_PROPERTY,
14084
+ default: "base"
14085
+ };
14082
14086
  var tokenProperty = {
14083
14087
  type: "string",
14084
14088
  description: "Token address or chain-local symbol"
@@ -14095,6 +14099,11 @@ var WRITE_ANNOTATIONS = {
14095
14099
  idempotentHint: false,
14096
14100
  openWorldHint: true
14097
14101
  };
14102
+ var CONFIRM_PROPERTY = {
14103
+ type: "boolean",
14104
+ const: true,
14105
+ description: "Set to true only after the user explicitly confirms broadcast"
14106
+ };
14098
14107
  var TOOL_DEFINITIONS = [
14099
14108
  {
14100
14109
  name: "token_info",
@@ -14102,7 +14111,7 @@ var TOOL_DEFINITIONS = [
14102
14111
  annotations: READ_ONLY_ANNOTATIONS,
14103
14112
  inputSchema: {
14104
14113
  type: "object",
14105
- properties: { chain: CHAIN_PROPERTY, token: tokenProperty },
14114
+ properties: { chain: READ_CHAIN_PROPERTY, token: tokenProperty },
14106
14115
  required: ["token"]
14107
14116
  }
14108
14117
  },
@@ -14112,7 +14121,7 @@ var TOOL_DEFINITIONS = [
14112
14121
  annotations: READ_ONLY_ANNOTATIONS,
14113
14122
  inputSchema: {
14114
14123
  type: "object",
14115
- properties: { chain: CHAIN_PROPERTY, token: tokenProperty },
14124
+ properties: { chain: READ_CHAIN_PROPERTY, token: tokenProperty },
14116
14125
  required: ["token"]
14117
14126
  }
14118
14127
  },
@@ -14122,7 +14131,7 @@ var TOOL_DEFINITIONS = [
14122
14131
  annotations: READ_ONLY_ANNOTATIONS,
14123
14132
  inputSchema: {
14124
14133
  type: "object",
14125
- properties: { chain: CHAIN_PROPERTY }
14134
+ properties: { chain: READ_CHAIN_PROPERTY }
14126
14135
  }
14127
14136
  },
14128
14137
  {
@@ -14138,9 +14147,10 @@ var TOOL_DEFINITIONS = [
14138
14147
  maxCost: {
14139
14148
  type: "string",
14140
14149
  description: "Maximum reserve-token cost (optional)"
14141
- }
14150
+ },
14151
+ confirm: CONFIRM_PROPERTY
14142
14152
  },
14143
- required: ["token", "amount"]
14153
+ required: ["chain", "token", "amount", "confirm"]
14144
14154
  }
14145
14155
  },
14146
14156
  {
@@ -14156,9 +14166,10 @@ var TOOL_DEFINITIONS = [
14156
14166
  minRefund: {
14157
14167
  type: "string",
14158
14168
  description: "Minimum reserve-token refund (optional)"
14159
- }
14169
+ },
14170
+ confirm: CONFIRM_PROPERTY
14160
14171
  },
14161
- required: ["token", "amount"]
14172
+ required: ["chain", "token", "amount", "confirm"]
14162
14173
  }
14163
14174
  },
14164
14175
  {
@@ -14186,9 +14197,10 @@ var TOOL_DEFINITIONS = [
14186
14197
  type: "string",
14187
14198
  description: "Route and token-output slippage percent",
14188
14199
  default: "1"
14189
- }
14200
+ },
14201
+ confirm: CONFIRM_PROPERTY
14190
14202
  },
14191
- required: ["token", "inputToken", "inputAmount"]
14203
+ required: ["chain", "token", "inputToken", "inputAmount", "confirm"]
14192
14204
  }
14193
14205
  },
14194
14206
  {
@@ -14213,9 +14225,10 @@ var TOOL_DEFINITIONS = [
14213
14225
  type: "string",
14214
14226
  description: "Route slippage percent",
14215
14227
  default: "1"
14216
- }
14228
+ },
14229
+ confirm: CONFIRM_PROPERTY
14217
14230
  },
14218
- required: ["token", "amount", "outputToken"]
14231
+ required: ["chain", "token", "amount", "outputToken", "confirm"]
14219
14232
  }
14220
14233
  },
14221
14234
  {
@@ -14230,10 +14243,11 @@ var TOOL_DEFINITIONS = [
14230
14243
  amount: { type: "string", description: "Amount to send" },
14231
14244
  token: {
14232
14245
  type: "string",
14233
- description: "ERC-20 symbol/address; omit for native currency"
14234
- }
14246
+ description: "ERC-20 symbol/address, or the literal NATIVE for native currency"
14247
+ },
14248
+ confirm: CONFIRM_PROPERTY
14235
14249
  },
14236
- required: ["to", "amount"]
14250
+ required: ["chain", "to", "amount", "token", "confirm"]
14237
14251
  }
14238
14252
  },
14239
14253
  {
@@ -14257,20 +14271,28 @@ var TOOL_DEFINITIONS = [
14257
14271
  description: "Curve preset"
14258
14272
  },
14259
14273
  initialPrice: { type: "string", description: "Starting price" },
14260
- finalPrice: { type: "string", description: "Final price" }
14274
+ finalPrice: { type: "string", description: "Final price" },
14275
+ confirm: CONFIRM_PROPERTY
14261
14276
  },
14262
14277
  required: [
14278
+ "chain",
14263
14279
  "name",
14264
14280
  "symbol",
14265
14281
  "reserve",
14266
14282
  "maxSupply",
14267
14283
  "curve",
14268
14284
  "initialPrice",
14269
- "finalPrice"
14285
+ "finalPrice",
14286
+ "confirm"
14270
14287
  ]
14271
14288
  }
14272
14289
  }
14273
14290
  ];
14291
+ var READ_TOOLS = new Set([
14292
+ "token_info",
14293
+ "token_price",
14294
+ "wallet_balance"
14295
+ ]);
14274
14296
  function requiredString(args, key) {
14275
14297
  const value = args?.[key];
14276
14298
  if (typeof value !== "string" || value.length === 0) {
@@ -14286,8 +14308,18 @@ function optionalString(args, key) {
14286
14308
  throw new Error(`${key} must be a string`);
14287
14309
  return value;
14288
14310
  }
14289
- function selectedChain(args) {
14290
- const chain = args?.chain ?? "base";
14311
+ function requireConfirmation(args) {
14312
+ if (args?.confirm !== true) {
14313
+ throw new Error("confirm must be true before a transaction can be broadcast");
14314
+ }
14315
+ }
14316
+ function selectedChain(args, requireExplicit) {
14317
+ const chain = args?.chain;
14318
+ if (chain === undefined) {
14319
+ if (requireExplicit)
14320
+ throw new Error("Missing required argument: chain");
14321
+ return "base";
14322
+ }
14291
14323
  if (typeof chain !== "string" || !SUPPORTED_CHAINS.includes(chain)) {
14292
14324
  throw new Error(`Unsupported chain: ${String(chain)}`);
14293
14325
  }
@@ -14298,7 +14330,7 @@ function appendOption(argv, flag, value) {
14298
14330
  argv.push(flag, value);
14299
14331
  }
14300
14332
  function buildCliArgs(tool, args) {
14301
- const argv = ["--chain", selectedChain(args)];
14333
+ const argv = ["--chain", selectedChain(args, !READ_TOOLS.has(tool))];
14302
14334
  switch (tool) {
14303
14335
  case "token_info":
14304
14336
  return [...argv, "info", requiredString(args, "token")];
@@ -14307,33 +14339,43 @@ function buildCliArgs(tool, args) {
14307
14339
  case "wallet_balance":
14308
14340
  return [...argv, "wallet"];
14309
14341
  case "buy_token": {
14342
+ requireConfirmation(args);
14310
14343
  argv.push("buy", requiredString(args, "token"), "--amount", requiredString(args, "amount"));
14311
14344
  appendOption(argv, "--max-cost", optionalString(args, "maxCost"));
14345
+ argv.push("--yes");
14312
14346
  return argv;
14313
14347
  }
14314
14348
  case "sell_token": {
14349
+ requireConfirmation(args);
14315
14350
  argv.push("sell", requiredString(args, "token"), "--amount", requiredString(args, "amount"));
14316
14351
  appendOption(argv, "--min-refund", optionalString(args, "minRefund"));
14352
+ argv.push("--yes");
14317
14353
  return argv;
14318
14354
  }
14319
14355
  case "zap_buy": {
14356
+ requireConfirmation(args);
14320
14357
  argv.push("zap-buy", requiredString(args, "token"), "--input-token", requiredString(args, "inputToken"), "--input-amount", requiredString(args, "inputAmount"));
14321
14358
  appendOption(argv, "--min-tokens", optionalString(args, "minTokens"));
14322
14359
  appendOption(argv, "--slippage", optionalString(args, "slippage"));
14360
+ argv.push("--yes");
14323
14361
  return argv;
14324
14362
  }
14325
14363
  case "zap_sell": {
14364
+ requireConfirmation(args);
14326
14365
  argv.push("zap-sell", requiredString(args, "token"), "--amount", requiredString(args, "amount"), "--output-token", requiredString(args, "outputToken"));
14327
14366
  appendOption(argv, "--min-output", optionalString(args, "minOutput"));
14328
14367
  appendOption(argv, "--slippage", optionalString(args, "slippage"));
14368
+ argv.push("--yes");
14329
14369
  return argv;
14330
14370
  }
14331
14371
  case "send_token": {
14332
- argv.push("send", requiredString(args, "to"), "--amount", requiredString(args, "amount"));
14333
- appendOption(argv, "--token", optionalString(args, "token"));
14372
+ requireConfirmation(args);
14373
+ argv.push("send", requiredString(args, "to"), "--amount", requiredString(args, "amount"), "--token", requiredString(args, "token"));
14374
+ argv.push("--yes");
14334
14375
  return argv;
14335
14376
  }
14336
14377
  case "create_token": {
14378
+ requireConfirmation(args);
14337
14379
  argv.push("create", "--name", requiredString(args, "name"), "--symbol", requiredString(args, "symbol"), "--reserve", requiredString(args, "reserve"), "--max-supply", requiredString(args, "maxSupply"), "--curve", requiredString(args, "curve"), "--initial-price", requiredString(args, "initialPrice"), "--final-price", requiredString(args, "finalPrice"), "--yes");
14338
14380
  return argv;
14339
14381
  }
@@ -14365,7 +14407,7 @@ function runCli(argv) {
14365
14407
  }
14366
14408
  }
14367
14409
  function createServer(execute = runCli) {
14368
- const server = new Server({ name: "mintclub", version: "2.0.0" }, { capabilities: { tools: {} } });
14410
+ const server = new Server({ name: "mintclub", version: version2 }, { capabilities: { tools: {} } });
14369
14411
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
14370
14412
  tools: [...TOOL_DEFINITIONS]
14371
14413
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint.club/v2-mcp",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "mcpName": "io.github.h1-hunt/mintclub",
5
5
  "description": "MCP server for Mint Club V2 Bond operations and bounded local Uniswap ZapV2 routing across supported chains",
6
6
  "type": "module",
@@ -13,7 +13,7 @@
13
13
  "mintclub-mcp": "dist/index.js"
14
14
  },
15
15
  "scripts": {
16
- "build": "bun build src/index.ts --outdir dist --target node --format esm",
16
+ "build": "bash build.sh",
17
17
  "check": "tsc --noEmit",
18
18
  "test": "vitest run",
19
19
  "start": "node dist/index.js",
@@ -21,7 +21,9 @@
21
21
  },
22
22
  "files": [
23
23
  "dist",
24
- "README.md"
24
+ "README.md",
25
+ "LICENSE",
26
+ "THIRD_PARTY_NOTICES.md"
25
27
  ],
26
28
  "keywords": [
27
29
  "mcp",
@@ -49,16 +51,19 @@
49
51
  "license": "MIT",
50
52
  "dependencies": {
51
53
  "@modelcontextprotocol/sdk": "^1.29.0",
52
- "@mint.club/v2-cli": "^2.0.0"
54
+ "@mint.club/v2-cli": "^2.0.2"
53
55
  },
54
56
  "devDependencies": {
55
57
  "@types/node": "^22.0.0",
56
58
  "bun": "^1.3.14",
57
59
  "bun-types": "^1.0.0",
58
60
  "typescript": "^5.0.0",
59
- "vitest": "^2.1.9"
61
+ "vitest": "^3.2.7"
60
62
  },
61
63
  "publishConfig": {
62
64
  "access": "public"
65
+ },
66
+ "engines": {
67
+ "node": ">=18.0.0"
63
68
  }
64
69
  }