@mint.club/v2-mcp 2.0.0 → 2.0.1
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 +21 -0
- package/README.md +15 -9
- package/THIRD_PARTY_NOTICES.md +204 -0
- package/dist/index.js +65 -23
- package/package.json +10 -5
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,14 @@ 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
|
-
|
|
50
|
+
Read tools accept an optional canonical `chain` property and default to Base. Every write tool requires `chain` explicitly. Supported values are:
|
|
49
51
|
|
|
50
52
|
`ethereum` · `optimism` · `arbitrum` · `avalanche` · `base` · `polygon` · `bsc` · `zora` · `unichain` · `robinhood` · `sepolia` · `base-sepolia`
|
|
51
53
|
|
|
52
54
|
Blast is unsupported by this integration.
|
|
53
55
|
|
|
56
|
+
`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.
|
|
57
|
+
|
|
54
58
|
## ZapV2 inputs
|
|
55
59
|
|
|
56
60
|
`zap_buy` requires:
|
|
@@ -61,7 +65,8 @@ Blast is unsupported by this integration.
|
|
|
61
65
|
"token": "0xMINT_CLUB_TOKEN",
|
|
62
66
|
"inputToken": "USDT",
|
|
63
67
|
"inputAmount": "10",
|
|
64
|
-
"slippage": "1"
|
|
68
|
+
"slippage": "1",
|
|
69
|
+
"confirm": true
|
|
65
70
|
}
|
|
66
71
|
```
|
|
67
72
|
|
|
@@ -75,7 +80,8 @@ Optional `minTokens` is denominated in the Mint Club token. `inputAmount` is exa
|
|
|
75
80
|
"token": "0xMINT_CLUB_TOKEN",
|
|
76
81
|
"amount": "100",
|
|
77
82
|
"outputToken": "USDC",
|
|
78
|
-
"slippage": "1"
|
|
83
|
+
"slippage": "1",
|
|
84
|
+
"confirm": true
|
|
79
85
|
}
|
|
80
86
|
```
|
|
81
87
|
|
|
@@ -90,14 +96,14 @@ ZapV2 is deployed on every supported chain listed above. Deployment addresses ar
|
|
|
90
96
|
## Example requests
|
|
91
97
|
|
|
92
98
|
- “Get token info for SIGNET on Base.” → `token_info`
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
99
|
+
- Confirmed `buy_token` call for 100 TOKEN on Robinhood with `"confirm": true`.
|
|
100
|
+
- Confirmed `zap_buy` call using exactly 10 USDT on Arbitrum with `"confirm": true`.
|
|
101
|
+
- Confirmed `zap_sell` call for 50 TOKEN to USDC on Unichain with `"confirm": true`.
|
|
102
|
+
- 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
103
|
|
|
98
104
|
## Safe CLI execution
|
|
99
105
|
|
|
100
|
-
Tool arguments are passed to `mc` with `execFileSync` argv arrays. User values are not interpolated into a shell command.
|
|
106
|
+
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
107
|
|
|
102
108
|
Set `MINTCLUB_CLI` to override the CLI executable path.
|
|
103
109
|
|
|
@@ -114,4 +120,4 @@ npm --prefix mcp run build
|
|
|
114
120
|
|
|
115
121
|
## License
|
|
116
122
|
|
|
117
|
-
MIT
|
|
123
|
+
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.1";
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
14290
|
-
|
|
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
|
-
|
|
14333
|
-
|
|
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:
|
|
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.
|
|
3
|
+
"version": "2.0.1",
|
|
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": "
|
|
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.
|
|
54
|
+
"@mint.club/v2-cli": "^2.0.1"
|
|
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.
|
|
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
|
}
|