@aibtc/mcp-server 1.0.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 (178) hide show
  1. package/README.md +340 -0
  2. package/dist/api.d.ts +9 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +79 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/contracts.d.ts +169 -0
  7. package/dist/config/contracts.d.ts.map +1 -0
  8. package/dist/config/contracts.js +250 -0
  9. package/dist/config/contracts.js.map +1 -0
  10. package/dist/config/index.d.ts +3 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +3 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/networks.d.ts +11 -0
  15. package/dist/config/networks.d.ts.map +1 -0
  16. package/dist/config/networks.js +21 -0
  17. package/dist/config/networks.js.map +1 -0
  18. package/dist/endpoints/index.d.ts +2 -0
  19. package/dist/endpoints/index.d.ts.map +1 -0
  20. package/dist/endpoints/index.js +2 -0
  21. package/dist/endpoints/index.js.map +1 -0
  22. package/dist/endpoints/registry.d.ts +38 -0
  23. package/dist/endpoints/registry.d.ts.map +1 -0
  24. package/dist/endpoints/registry.js +935 -0
  25. package/dist/endpoints/registry.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +79 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/services/bitflow.service.d.ts +159 -0
  31. package/dist/services/bitflow.service.d.ts.map +1 -0
  32. package/dist/services/bitflow.service.js +325 -0
  33. package/dist/services/bitflow.service.js.map +1 -0
  34. package/dist/services/bns.service.d.ts +87 -0
  35. package/dist/services/bns.service.d.ts.map +1 -0
  36. package/dist/services/bns.service.js +312 -0
  37. package/dist/services/bns.service.js.map +1 -0
  38. package/dist/services/defi.service.d.ts +146 -0
  39. package/dist/services/defi.service.d.ts.map +1 -0
  40. package/dist/services/defi.service.js +461 -0
  41. package/dist/services/defi.service.js.map +1 -0
  42. package/dist/services/hiro-api.d.ts +438 -0
  43. package/dist/services/hiro-api.d.ts.map +1 -0
  44. package/dist/services/hiro-api.js +376 -0
  45. package/dist/services/hiro-api.js.map +1 -0
  46. package/dist/services/nft.service.d.ts +70 -0
  47. package/dist/services/nft.service.d.ts.map +1 -0
  48. package/dist/services/nft.service.js +148 -0
  49. package/dist/services/nft.service.js.map +1 -0
  50. package/dist/services/sbtc.service.d.ts +44 -0
  51. package/dist/services/sbtc.service.d.ts.map +1 -0
  52. package/dist/services/sbtc.service.js +100 -0
  53. package/dist/services/sbtc.service.js.map +1 -0
  54. package/dist/services/scaffold.service.d.ts +41 -0
  55. package/dist/services/scaffold.service.d.ts.map +1 -0
  56. package/dist/services/scaffold.service.js +1055 -0
  57. package/dist/services/scaffold.service.js.map +1 -0
  58. package/dist/services/stacking.service.d.ts +58 -0
  59. package/dist/services/stacking.service.d.ts.map +1 -0
  60. package/dist/services/stacking.service.js +153 -0
  61. package/dist/services/stacking.service.js.map +1 -0
  62. package/dist/services/tokens.service.d.ts +62 -0
  63. package/dist/services/tokens.service.d.ts.map +1 -0
  64. package/dist/services/tokens.service.js +119 -0
  65. package/dist/services/tokens.service.js.map +1 -0
  66. package/dist/services/wallet-manager.d.ts +107 -0
  67. package/dist/services/wallet-manager.d.ts.map +1 -0
  68. package/dist/services/wallet-manager.js +389 -0
  69. package/dist/services/wallet-manager.js.map +1 -0
  70. package/dist/services/x402.service.d.ts +26 -0
  71. package/dist/services/x402.service.d.ts.map +1 -0
  72. package/dist/services/x402.service.js +125 -0
  73. package/dist/services/x402.service.js.map +1 -0
  74. package/dist/tools/bitflow.tools.d.ts +3 -0
  75. package/dist/tools/bitflow.tools.d.ts.map +1 -0
  76. package/dist/tools/bitflow.tools.js +501 -0
  77. package/dist/tools/bitflow.tools.js.map +1 -0
  78. package/dist/tools/bns.tools.d.ts +3 -0
  79. package/dist/tools/bns.tools.d.ts.map +1 -0
  80. package/dist/tools/bns.tools.js +164 -0
  81. package/dist/tools/bns.tools.js.map +1 -0
  82. package/dist/tools/contract.tools.d.ts +3 -0
  83. package/dist/tools/contract.tools.d.ts.map +1 -0
  84. package/dist/tools/contract.tools.js +126 -0
  85. package/dist/tools/contract.tools.js.map +1 -0
  86. package/dist/tools/defi.tools.d.ts +3 -0
  87. package/dist/tools/defi.tools.d.ts.map +1 -0
  88. package/dist/tools/defi.tools.js +425 -0
  89. package/dist/tools/defi.tools.js.map +1 -0
  90. package/dist/tools/endpoint.tools.d.ts +3 -0
  91. package/dist/tools/endpoint.tools.d.ts.map +1 -0
  92. package/dist/tools/endpoint.tools.js +157 -0
  93. package/dist/tools/endpoint.tools.js.map +1 -0
  94. package/dist/tools/index.d.ts +6 -0
  95. package/dist/tools/index.d.ts.map +1 -0
  96. package/dist/tools/index.js +52 -0
  97. package/dist/tools/index.js.map +1 -0
  98. package/dist/tools/nft.tools.d.ts +3 -0
  99. package/dist/tools/nft.tools.d.ts.map +1 -0
  100. package/dist/tools/nft.tools.js +154 -0
  101. package/dist/tools/nft.tools.js.map +1 -0
  102. package/dist/tools/openrouter.tools.d.ts +3 -0
  103. package/dist/tools/openrouter.tools.d.ts.map +1 -0
  104. package/dist/tools/openrouter.tools.js +664 -0
  105. package/dist/tools/openrouter.tools.js.map +1 -0
  106. package/dist/tools/query.tools.d.ts +3 -0
  107. package/dist/tools/query.tools.d.ts.map +1 -0
  108. package/dist/tools/query.tools.js +209 -0
  109. package/dist/tools/query.tools.js.map +1 -0
  110. package/dist/tools/sbtc.tools.d.ts +3 -0
  111. package/dist/tools/sbtc.tools.d.ts.map +1 -0
  112. package/dist/tools/sbtc.tools.js +103 -0
  113. package/dist/tools/sbtc.tools.js.map +1 -0
  114. package/dist/tools/scaffold.tools.d.ts +3 -0
  115. package/dist/tools/scaffold.tools.d.ts.map +1 -0
  116. package/dist/tools/scaffold.tools.js +216 -0
  117. package/dist/tools/scaffold.tools.js.map +1 -0
  118. package/dist/tools/stacking.tools.d.ts +3 -0
  119. package/dist/tools/stacking.tools.d.ts.map +1 -0
  120. package/dist/tools/stacking.tools.js +112 -0
  121. package/dist/tools/stacking.tools.js.map +1 -0
  122. package/dist/tools/tokens.tools.d.ts +3 -0
  123. package/dist/tools/tokens.tools.d.ts.map +1 -0
  124. package/dist/tools/tokens.tools.js +154 -0
  125. package/dist/tools/tokens.tools.js.map +1 -0
  126. package/dist/tools/transfer.tools.d.ts +3 -0
  127. package/dist/tools/transfer.tools.d.ts.map +1 -0
  128. package/dist/tools/transfer.tools.js +62 -0
  129. package/dist/tools/transfer.tools.js.map +1 -0
  130. package/dist/tools/wallet-management.tools.d.ts +6 -0
  131. package/dist/tools/wallet-management.tools.d.ts.map +1 -0
  132. package/dist/tools/wallet-management.tools.js +390 -0
  133. package/dist/tools/wallet-management.tools.js.map +1 -0
  134. package/dist/tools/wallet.tools.d.ts +3 -0
  135. package/dist/tools/wallet.tools.d.ts.map +1 -0
  136. package/dist/tools/wallet.tools.js +105 -0
  137. package/dist/tools/wallet.tools.js.map +1 -0
  138. package/dist/transactions/builder.d.ts +56 -0
  139. package/dist/transactions/builder.d.ts.map +1 -0
  140. package/dist/transactions/builder.js +134 -0
  141. package/dist/transactions/builder.js.map +1 -0
  142. package/dist/transactions/clarity-values.d.ts +67 -0
  143. package/dist/transactions/clarity-values.d.ts.map +1 -0
  144. package/dist/transactions/clarity-values.js +169 -0
  145. package/dist/transactions/clarity-values.js.map +1 -0
  146. package/dist/transactions/post-conditions.d.ts +27 -0
  147. package/dist/transactions/post-conditions.d.ts.map +1 -0
  148. package/dist/transactions/post-conditions.js +101 -0
  149. package/dist/transactions/post-conditions.js.map +1 -0
  150. package/dist/utils/encryption.d.ts +33 -0
  151. package/dist/utils/encryption.d.ts.map +1 -0
  152. package/dist/utils/encryption.js +110 -0
  153. package/dist/utils/encryption.js.map +1 -0
  154. package/dist/utils/errors.d.ts +84 -0
  155. package/dist/utils/errors.d.ts.map +1 -0
  156. package/dist/utils/errors.js +132 -0
  157. package/dist/utils/errors.js.map +1 -0
  158. package/dist/utils/formatting.d.ts +51 -0
  159. package/dist/utils/formatting.d.ts.map +1 -0
  160. package/dist/utils/formatting.js +114 -0
  161. package/dist/utils/formatting.js.map +1 -0
  162. package/dist/utils/index.d.ts +6 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +6 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/storage.d.ts +90 -0
  167. package/dist/utils/storage.d.ts.map +1 -0
  168. package/dist/utils/storage.js +196 -0
  169. package/dist/utils/storage.js.map +1 -0
  170. package/dist/utils/validation.d.ts +67 -0
  171. package/dist/utils/validation.d.ts.map +1 -0
  172. package/dist/utils/validation.js +74 -0
  173. package/dist/utils/validation.js.map +1 -0
  174. package/dist/wallet.d.ts +86 -0
  175. package/dist/wallet.d.ts.map +1 -0
  176. package/dist/wallet.js +279 -0
  177. package/dist/wallet.js.map +1 -0
  178. package/package.json +58 -0
@@ -0,0 +1,501 @@
1
+ import { z } from "zod";
2
+ import { getAccount, getWalletAddress, NETWORK } from "../services/x402.service.js";
3
+ import { getBitflowService } from "../services/bitflow.service.js";
4
+ import { getExplorerTxUrl } from "../config/networks.js";
5
+ import { createJsonResponse, createErrorResponse } from "../utils/index.js";
6
+ export function registerBitflowTools(server) {
7
+ // ==========================================================================
8
+ // Public API Tools (No API Key Required)
9
+ // ==========================================================================
10
+ // Get ticker data
11
+ server.registerTool("bitflow_get_ticker", {
12
+ description: `Get market ticker data from Bitflow DEX.
13
+
14
+ Returns price, volume, and liquidity data for all trading pairs.
15
+ This endpoint does NOT require an API key.
16
+
17
+ Note: Bitflow is only available on mainnet.`,
18
+ inputSchema: {
19
+ baseCurrency: z
20
+ .string()
21
+ .optional()
22
+ .describe("Optional: filter by base currency contract ID"),
23
+ targetCurrency: z
24
+ .string()
25
+ .optional()
26
+ .describe("Optional: filter by target currency contract ID"),
27
+ },
28
+ }, async ({ baseCurrency, targetCurrency }) => {
29
+ try {
30
+ if (NETWORK !== "mainnet") {
31
+ return createJsonResponse({
32
+ error: "Bitflow is only available on mainnet",
33
+ network: NETWORK,
34
+ });
35
+ }
36
+ const bitflowService = getBitflowService(NETWORK);
37
+ if (baseCurrency && targetCurrency) {
38
+ const ticker = await bitflowService.getTickerByPair(baseCurrency, targetCurrency);
39
+ if (!ticker) {
40
+ return createJsonResponse({
41
+ error: "Trading pair not found",
42
+ baseCurrency,
43
+ targetCurrency,
44
+ });
45
+ }
46
+ return createJsonResponse({
47
+ network: NETWORK,
48
+ ticker,
49
+ });
50
+ }
51
+ const tickers = await bitflowService.getTicker();
52
+ return createJsonResponse({
53
+ network: NETWORK,
54
+ pairCount: tickers.length,
55
+ tickers: tickers.slice(0, 50), // Limit to 50 for readability
56
+ note: tickers.length > 50 ? `Showing 50 of ${tickers.length} pairs` : undefined,
57
+ });
58
+ }
59
+ catch (error) {
60
+ return createErrorResponse(error);
61
+ }
62
+ });
63
+ // ==========================================================================
64
+ // SDK Tools (Requires BITFLOW_API_KEY)
65
+ // ==========================================================================
66
+ // Get available tokens
67
+ server.registerTool("bitflow_get_tokens", {
68
+ description: `Get all available tokens for swapping on Bitflow.
69
+
70
+ Returns the list of tokens that can be swapped on Bitflow DEX.
71
+ Requires BITFLOW_API_KEY environment variable.
72
+
73
+ Note: Bitflow is only available on mainnet.`,
74
+ inputSchema: {},
75
+ }, async () => {
76
+ try {
77
+ if (NETWORK !== "mainnet") {
78
+ return createJsonResponse({
79
+ error: "Bitflow is only available on mainnet",
80
+ network: NETWORK,
81
+ });
82
+ }
83
+ const bitflowService = getBitflowService(NETWORK);
84
+ if (!bitflowService.isSdkAvailable()) {
85
+ return createJsonResponse({
86
+ error: "Bitflow SDK not configured",
87
+ message: "Set BITFLOW_API_KEY environment variable to enable this feature",
88
+ alternative: "Use bitflow_get_ticker for public market data (no API key required)",
89
+ });
90
+ }
91
+ const tokens = await bitflowService.getAvailableTokens();
92
+ return createJsonResponse({
93
+ network: NETWORK,
94
+ tokenCount: tokens.length,
95
+ tokens,
96
+ });
97
+ }
98
+ catch (error) {
99
+ return createErrorResponse(error);
100
+ }
101
+ });
102
+ // Get possible swap targets
103
+ server.registerTool("bitflow_get_swap_targets", {
104
+ description: `Get possible swap target tokens for a given input token on Bitflow.
105
+
106
+ Returns all tokens that can be received when swapping from the specified token.
107
+ Requires BITFLOW_API_KEY environment variable.
108
+
109
+ Note: Bitflow is only available on mainnet.`,
110
+ inputSchema: {
111
+ tokenId: z.string().describe("The input token ID (contract address)"),
112
+ },
113
+ }, async ({ tokenId }) => {
114
+ try {
115
+ if (NETWORK !== "mainnet") {
116
+ return createJsonResponse({
117
+ error: "Bitflow is only available on mainnet",
118
+ network: NETWORK,
119
+ });
120
+ }
121
+ const bitflowService = getBitflowService(NETWORK);
122
+ if (!bitflowService.isSdkAvailable()) {
123
+ return createJsonResponse({
124
+ error: "Bitflow SDK not configured",
125
+ message: "Set BITFLOW_API_KEY environment variable to enable this feature",
126
+ });
127
+ }
128
+ const targets = await bitflowService.getPossibleSwapTargets(tokenId);
129
+ return createJsonResponse({
130
+ network: NETWORK,
131
+ inputToken: tokenId,
132
+ targetCount: targets.length,
133
+ targets,
134
+ });
135
+ }
136
+ catch (error) {
137
+ return createErrorResponse(error);
138
+ }
139
+ });
140
+ // Get swap quote
141
+ server.registerTool("bitflow_get_quote", {
142
+ description: `Get a swap quote from Bitflow DEX.
143
+
144
+ Returns the expected output amount and route for swapping tokens.
145
+ Requires BITFLOW_API_KEY environment variable.
146
+
147
+ Note: Bitflow is only available on mainnet.`,
148
+ inputSchema: {
149
+ tokenX: z.string().describe("Input token ID (contract address)"),
150
+ tokenY: z.string().describe("Output token ID (contract address)"),
151
+ amountIn: z.string().describe("Amount of input token (in smallest units)"),
152
+ },
153
+ }, async ({ tokenX, tokenY, amountIn }) => {
154
+ try {
155
+ if (NETWORK !== "mainnet") {
156
+ return createJsonResponse({
157
+ error: "Bitflow is only available on mainnet",
158
+ network: NETWORK,
159
+ });
160
+ }
161
+ const bitflowService = getBitflowService(NETWORK);
162
+ if (!bitflowService.isSdkAvailable()) {
163
+ return createJsonResponse({
164
+ error: "Bitflow SDK not configured",
165
+ message: "Set BITFLOW_API_KEY environment variable to enable this feature",
166
+ });
167
+ }
168
+ const quote = await bitflowService.getSwapQuote(tokenX, tokenY, Number(amountIn));
169
+ return createJsonResponse({
170
+ network: NETWORK,
171
+ quote,
172
+ });
173
+ }
174
+ catch (error) {
175
+ return createErrorResponse(error);
176
+ }
177
+ });
178
+ // Get all routes between tokens
179
+ server.registerTool("bitflow_get_routes", {
180
+ description: `Get all possible swap routes between two tokens on Bitflow.
181
+
182
+ Returns all available routes for swapping from tokenX to tokenY.
183
+ Useful for understanding routing options.
184
+ Requires BITFLOW_API_KEY environment variable.
185
+
186
+ Note: Bitflow is only available on mainnet.`,
187
+ inputSchema: {
188
+ tokenX: z.string().describe("Input token ID (contract address)"),
189
+ tokenY: z.string().describe("Output token ID (contract address)"),
190
+ },
191
+ }, async ({ tokenX, tokenY }) => {
192
+ try {
193
+ if (NETWORK !== "mainnet") {
194
+ return createJsonResponse({
195
+ error: "Bitflow is only available on mainnet",
196
+ network: NETWORK,
197
+ });
198
+ }
199
+ const bitflowService = getBitflowService(NETWORK);
200
+ if (!bitflowService.isSdkAvailable()) {
201
+ return createJsonResponse({
202
+ error: "Bitflow SDK not configured",
203
+ message: "Set BITFLOW_API_KEY environment variable to enable this feature",
204
+ });
205
+ }
206
+ const routes = await bitflowService.getAllRoutes(tokenX, tokenY);
207
+ return createJsonResponse({
208
+ network: NETWORK,
209
+ tokenX,
210
+ tokenY,
211
+ routeCount: routes.length,
212
+ routes: routes.map((r) => ({
213
+ tokenPath: r.token_path,
214
+ dexPath: r.dex_path,
215
+ })),
216
+ });
217
+ }
218
+ catch (error) {
219
+ return createErrorResponse(error);
220
+ }
221
+ });
222
+ // Execute swap
223
+ server.registerTool("bitflow_swap", {
224
+ description: `Execute a token swap on Bitflow DEX.
225
+
226
+ Swaps tokenX for tokenY using Bitflow's aggregated liquidity.
227
+ Requires BITFLOW_API_KEY environment variable.
228
+
229
+ Note: Bitflow is only available on mainnet.`,
230
+ inputSchema: {
231
+ tokenX: z.string().describe("Input token ID (contract address)"),
232
+ tokenY: z.string().describe("Output token ID (contract address)"),
233
+ amountIn: z.string().describe("Amount of input token (in smallest units)"),
234
+ slippageTolerance: z
235
+ .number()
236
+ .optional()
237
+ .default(0.01)
238
+ .describe("Slippage tolerance as decimal (default 0.01 = 1%)"),
239
+ },
240
+ }, async ({ tokenX, tokenY, amountIn, slippageTolerance }) => {
241
+ try {
242
+ if (NETWORK !== "mainnet") {
243
+ return createJsonResponse({
244
+ error: "Bitflow is only available on mainnet",
245
+ network: NETWORK,
246
+ });
247
+ }
248
+ const bitflowService = getBitflowService(NETWORK);
249
+ if (!bitflowService.isSdkAvailable()) {
250
+ return createJsonResponse({
251
+ error: "Bitflow SDK not configured",
252
+ message: "Set BITFLOW_API_KEY environment variable to enable this feature",
253
+ });
254
+ }
255
+ const account = await getAccount();
256
+ const result = await bitflowService.swap(account, tokenX, tokenY, Number(amountIn), slippageTolerance || 0.01);
257
+ return createJsonResponse({
258
+ success: true,
259
+ txid: result.txid,
260
+ swap: {
261
+ tokenIn: tokenX,
262
+ tokenOut: tokenY,
263
+ amountIn,
264
+ slippageTolerance: slippageTolerance || 0.01,
265
+ },
266
+ network: NETWORK,
267
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
268
+ });
269
+ }
270
+ catch (error) {
271
+ return createErrorResponse(error);
272
+ }
273
+ });
274
+ // ==========================================================================
275
+ // Keeper Tools (Requires BITFLOW_KEEPER_API_KEY)
276
+ // ==========================================================================
277
+ // Get or create keeper contract
278
+ server.registerTool("bitflow_get_keeper_contract", {
279
+ description: `Get or create a Bitflow Keeper contract for automated swaps.
280
+
281
+ Keeper contracts enable scheduled/automated token swaps.
282
+ Requires BITFLOW_KEEPER_API_KEY environment variable.
283
+
284
+ Note: Bitflow is only available on mainnet.`,
285
+ inputSchema: {
286
+ stacksAddress: z
287
+ .string()
288
+ .optional()
289
+ .describe("Stacks address (uses wallet if not specified)"),
290
+ },
291
+ }, async ({ stacksAddress }) => {
292
+ try {
293
+ if (NETWORK !== "mainnet") {
294
+ return createJsonResponse({
295
+ error: "Bitflow is only available on mainnet",
296
+ network: NETWORK,
297
+ });
298
+ }
299
+ const bitflowService = getBitflowService(NETWORK);
300
+ if (!bitflowService.isKeeperAvailable()) {
301
+ return createJsonResponse({
302
+ error: "Bitflow Keeper not configured",
303
+ message: "Set BITFLOW_KEEPER_API_KEY environment variable to enable Keeper features",
304
+ });
305
+ }
306
+ const address = stacksAddress || (await getWalletAddress());
307
+ const result = await bitflowService.getOrCreateKeeperContract(address);
308
+ return createJsonResponse({
309
+ network: NETWORK,
310
+ address,
311
+ contractIdentifier: result.contractIdentifier,
312
+ status: result.status,
313
+ });
314
+ }
315
+ catch (error) {
316
+ return createErrorResponse(error);
317
+ }
318
+ });
319
+ // Create keeper order
320
+ server.registerTool("bitflow_create_order", {
321
+ description: `Create an automated swap order via Bitflow Keeper.
322
+
323
+ Creates a pending order that will be executed by the Keeper service.
324
+ Requires BITFLOW_KEEPER_API_KEY environment variable.
325
+
326
+ Note: Bitflow is only available on mainnet.`,
327
+ inputSchema: {
328
+ contractIdentifier: z.string().describe("Keeper contract identifier"),
329
+ actionType: z.string().describe("Action type (e.g., 'SWAP_XYK_SWAP_HELPER')"),
330
+ fundingTokens: z
331
+ .record(z.string(), z.string())
332
+ .describe("Map of token IDs to amounts for funding"),
333
+ actionAmount: z.string().describe("Amount for the action"),
334
+ minReceivedAmount: z
335
+ .string()
336
+ .optional()
337
+ .describe("Minimum amount to receive (slippage protection)"),
338
+ autoAdjust: z
339
+ .boolean()
340
+ .optional()
341
+ .default(true)
342
+ .describe("Auto-adjust minimum received based on market (default true)"),
343
+ },
344
+ }, async ({ contractIdentifier, actionType, fundingTokens, actionAmount, minReceivedAmount, autoAdjust }) => {
345
+ try {
346
+ if (NETWORK !== "mainnet") {
347
+ return createJsonResponse({
348
+ error: "Bitflow is only available on mainnet",
349
+ network: NETWORK,
350
+ });
351
+ }
352
+ const bitflowService = getBitflowService(NETWORK);
353
+ if (!bitflowService.isKeeperAvailable()) {
354
+ return createJsonResponse({
355
+ error: "Bitflow Keeper not configured",
356
+ message: "Set BITFLOW_KEEPER_API_KEY environment variable to enable Keeper features",
357
+ });
358
+ }
359
+ const address = await getWalletAddress();
360
+ const result = await bitflowService.createKeeperOrder({
361
+ contractIdentifier,
362
+ stacksAddress: address,
363
+ actionType,
364
+ fundingTokens,
365
+ actionAmount,
366
+ minReceived: minReceivedAmount
367
+ ? { amount: minReceivedAmount, autoAdjust: autoAdjust ?? true }
368
+ : undefined,
369
+ });
370
+ return createJsonResponse({
371
+ success: true,
372
+ network: NETWORK,
373
+ orderId: result.orderId,
374
+ status: result.status,
375
+ order: {
376
+ contractIdentifier,
377
+ actionType,
378
+ fundingTokens,
379
+ actionAmount,
380
+ },
381
+ });
382
+ }
383
+ catch (error) {
384
+ return createErrorResponse(error);
385
+ }
386
+ });
387
+ // Get keeper order
388
+ server.registerTool("bitflow_get_order", {
389
+ description: `Get details of a Bitflow Keeper order.
390
+
391
+ Retrieves the status and details of a specific order.
392
+ Requires BITFLOW_KEEPER_API_KEY environment variable.
393
+
394
+ Note: Bitflow is only available on mainnet.`,
395
+ inputSchema: {
396
+ orderId: z.string().describe("The order ID to retrieve"),
397
+ },
398
+ }, async ({ orderId }) => {
399
+ try {
400
+ if (NETWORK !== "mainnet") {
401
+ return createJsonResponse({
402
+ error: "Bitflow is only available on mainnet",
403
+ network: NETWORK,
404
+ });
405
+ }
406
+ const bitflowService = getBitflowService(NETWORK);
407
+ if (!bitflowService.isKeeperAvailable()) {
408
+ return createJsonResponse({
409
+ error: "Bitflow Keeper not configured",
410
+ message: "Set BITFLOW_KEEPER_API_KEY environment variable to enable Keeper features",
411
+ });
412
+ }
413
+ const order = await bitflowService.getKeeperOrder(orderId);
414
+ return createJsonResponse({
415
+ network: NETWORK,
416
+ order,
417
+ });
418
+ }
419
+ catch (error) {
420
+ return createErrorResponse(error);
421
+ }
422
+ });
423
+ // Cancel keeper order
424
+ server.registerTool("bitflow_cancel_order", {
425
+ description: `Cancel a Bitflow Keeper order.
426
+
427
+ Cancels a pending order before execution.
428
+ Requires BITFLOW_KEEPER_API_KEY environment variable.
429
+
430
+ Note: Bitflow is only available on mainnet.`,
431
+ inputSchema: {
432
+ orderId: z.string().describe("The order ID to cancel"),
433
+ },
434
+ }, async ({ orderId }) => {
435
+ try {
436
+ if (NETWORK !== "mainnet") {
437
+ return createJsonResponse({
438
+ error: "Bitflow is only available on mainnet",
439
+ network: NETWORK,
440
+ });
441
+ }
442
+ const bitflowService = getBitflowService(NETWORK);
443
+ if (!bitflowService.isKeeperAvailable()) {
444
+ return createJsonResponse({
445
+ error: "Bitflow Keeper not configured",
446
+ message: "Set BITFLOW_KEEPER_API_KEY environment variable to enable Keeper features",
447
+ });
448
+ }
449
+ const result = await bitflowService.cancelKeeperOrder(orderId);
450
+ return createJsonResponse({
451
+ network: NETWORK,
452
+ orderId,
453
+ cancelled: result.success,
454
+ });
455
+ }
456
+ catch (error) {
457
+ return createErrorResponse(error);
458
+ }
459
+ });
460
+ // Get keeper user info
461
+ server.registerTool("bitflow_get_keeper_user", {
462
+ description: `Get Bitflow Keeper user info and orders.
463
+
464
+ Retrieves user's keeper contracts and order history.
465
+ Requires BITFLOW_KEEPER_API_KEY environment variable.
466
+
467
+ Note: Bitflow is only available on mainnet.`,
468
+ inputSchema: {
469
+ stacksAddress: z
470
+ .string()
471
+ .optional()
472
+ .describe("Stacks address (uses wallet if not specified)"),
473
+ },
474
+ }, async ({ stacksAddress }) => {
475
+ try {
476
+ if (NETWORK !== "mainnet") {
477
+ return createJsonResponse({
478
+ error: "Bitflow is only available on mainnet",
479
+ network: NETWORK,
480
+ });
481
+ }
482
+ const bitflowService = getBitflowService(NETWORK);
483
+ if (!bitflowService.isKeeperAvailable()) {
484
+ return createJsonResponse({
485
+ error: "Bitflow Keeper not configured",
486
+ message: "Set BITFLOW_KEEPER_API_KEY environment variable to enable Keeper features",
487
+ });
488
+ }
489
+ const address = stacksAddress || (await getWalletAddress());
490
+ const userInfo = await bitflowService.getKeeperUser(address);
491
+ return createJsonResponse({
492
+ network: NETWORK,
493
+ userInfo,
494
+ });
495
+ }
496
+ catch (error) {
497
+ return createErrorResponse(error);
498
+ }
499
+ });
500
+ }
501
+ //# sourceMappingURL=bitflow.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitflow.tools.js","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerBnsTools(server: McpServer): void;
3
+ //# sourceMappingURL=bns.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bns.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bns.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8LxD"}