@aibtc/mcp-server 1.30.2 → 1.31.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.
package/README.md CHANGED
@@ -350,6 +350,8 @@ Supports 10 assets: sBTC, aeUSDC, stSTX, wSTX, USDH, sUSDT, USDA, DIKO, ALEX, st
350
350
 
351
351
  DEX aggregator that routes trades across multiple liquidity sources.
352
352
 
353
+ > **Units:** Bitflow tools default to **human units** (`amountUnit: "human"`). Pass `"2"` to swap 2 STX, not `"2000000"`. Set `amountUnit: "base"` only when working with raw on-chain integers. See [Units & Decimals guide](skill/references/stacks-defi.md#units--decimals-bitflow--defi) for details and common pitfalls.
354
+
353
355
  | Tool | Description |
354
356
  |------|-------------|
355
357
  | `bitflow_get_ticker` | Get market data (no API key needed) |
@@ -1 +1 @@
1
- {"version":3,"file":"bitflow.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2CpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgkB5D"}
1
+ {"version":3,"file":"bitflow.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuOpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2kB5D"}
@@ -1,11 +1,31 @@
1
1
  import { z } from "zod";
2
2
  import { getAccount, getWalletAddress, NETWORK } from "../services/x402.service.js";
3
3
  import { getBitflowService } from "../services/bitflow.service.js";
4
+ import { getHiroApi } from "../services/hiro-api.js";
4
5
  import { getExplorerTxUrl } from "../config/networks.js";
5
6
  import { createJsonResponse, createErrorResponse, resolveFee } from "../utils/index.js";
6
7
  const HIGH_IMPACT_THRESHOLD = 0.05; // 5%
7
8
  /**
8
- * Resolve amountIn to the human-unit number the Bitflow SDK expects.
9
+ * How many times larger than the wallet balance an amount must be before
10
+ * we suspect the caller passed base-units instead of human-units.
11
+ */
12
+ const AMOUNT_SCALE_SUSPICION_MULTIPLIER = 10;
13
+ /**
14
+ * Thrown by checkAmountScaling when the requested amount looks like it was
15
+ * supplied in base units instead of human units.
16
+ */
17
+ class AmountUnitMismatchError extends Error {
18
+ code = "AMOUNT_UNIT_MISMATCH_SUSPECTED";
19
+ details;
20
+ constructor(message, details) {
21
+ super(message);
22
+ this.name = "AmountUnitMismatchError";
23
+ this.details = details;
24
+ }
25
+ }
26
+ /**
27
+ * Resolve amountIn to the human-unit number the Bitflow SDK expects,
28
+ * and return full interpretation metadata for auditability.
9
29
  * When amountUnit is "human" (default), validates and passes through.
10
30
  * When amountUnit is "base", converts from smallest units using token decimals.
11
31
  */
@@ -23,13 +43,144 @@ async function resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit) {
23
43
  if (!Number.isFinite(numeric)) {
24
44
  throw new Error("Converted amount is too large to handle safely");
25
45
  }
26
- return numeric;
46
+ const amountMetadata = {
47
+ amountInRawInput: amountIn,
48
+ amountUnit: "base",
49
+ tokenDecimals: tokenIn.decimals,
50
+ amountInHuman: numeric,
51
+ amountInBase: amountIn,
52
+ interpretation: `Input '${amountIn}' interpreted as base units; converted to ${numeric} human units using ${tokenIn.decimals} decimals`,
53
+ };
54
+ return { normalizedAmountIn: numeric, amountMetadata };
27
55
  }
28
56
  const numeric = Number(amountIn);
29
57
  if (!Number.isFinite(numeric) || numeric <= 0) {
30
58
  throw new Error("amountIn must be a positive number");
31
59
  }
32
- return numeric;
60
+ // For human units we don't need decimals from the token list; base = round(human * 10^decimals).
61
+ // Since we don't know decimals without an extra fetch, we omit the base string here and
62
+ // attempt a best-effort lookup so the metadata is as complete as possible.
63
+ let tokenDecimals = null;
64
+ let amountInBase = "unknown (decimals not fetched for human-unit input)";
65
+ try {
66
+ const tokens = await bitflowService.getAvailableTokens();
67
+ const tokenIn = tokens.find((t) => t.id === tokenX);
68
+ if (tokenIn) {
69
+ tokenDecimals = tokenIn.decimals;
70
+ amountInBase = String(Math.round(numeric * 10 ** tokenIn.decimals));
71
+ }
72
+ }
73
+ catch {
74
+ // Non-fatal: metadata degrades gracefully if token list is unavailable
75
+ }
76
+ const amountMetadata = {
77
+ amountInRawInput: amountIn,
78
+ amountUnit: "human",
79
+ tokenDecimals,
80
+ amountInHuman: numeric,
81
+ amountInBase,
82
+ interpretation: tokenDecimals !== null
83
+ ? `Input '${amountIn}' interpreted as human units (${tokenDecimals} decimals); base unit equivalent is ${amountInBase}`
84
+ : `Input '${amountIn}' interpreted as human units; token decimals unavailable so base unit string is omitted`,
85
+ };
86
+ return { normalizedAmountIn: numeric, amountMetadata };
87
+ }
88
+ /**
89
+ * Preflight guardrail: detect likely base-unit / human-unit confusion.
90
+ *
91
+ * When amountUnit is "human" and the requested amount is more than
92
+ * AMOUNT_SCALE_SUSPICION_MULTIPLIER times the wallet's actual balance of that
93
+ * token, we reject the call early with a structured error that explains the
94
+ * mismatch and shows corrected examples.
95
+ *
96
+ * This prevents wasted retries and failed transactions caused by an agent (or
97
+ * human) passing micro-unit values (e.g. 1_000_000 micro-STX) when the API
98
+ * expects human units (e.g. 1 STX).
99
+ *
100
+ * The check is skipped (silently passes) when:
101
+ * - amountUnit is "base" — the caller already opted into explicit unit
102
+ * conversion via resolveAmountIn, so no confusion is expected.
103
+ * - The wallet address cannot be resolved (no active session / no mnemonic),
104
+ * because we cannot fetch the balance without an address.
105
+ * - The balance fetch itself fails — we treat network errors as non-fatal so
106
+ * that a temporary API outage does not block all swap traffic.
107
+ *
108
+ * @throws Error with code AMOUNT_UNIT_MISMATCH_SUSPECTED when suspicious.
109
+ */
110
+ async function checkAmountScaling(bitflowService, tokenX, humanAmount, amountIn, amountUnit) {
111
+ // Only guard the default "human" path — "base" users have already been
112
+ // explicit about their units.
113
+ if (amountUnit !== "human")
114
+ return;
115
+ let walletAddress;
116
+ try {
117
+ walletAddress = await getWalletAddress();
118
+ }
119
+ catch {
120
+ // No wallet unlocked / no mnemonic — skip the check rather than blocking.
121
+ return;
122
+ }
123
+ try {
124
+ // Look up the token's decimals from the Bitflow token list.
125
+ // Fall back to 6 (micro-STX standard) if the token is unknown.
126
+ // NOTE: getAvailableTokens() is inside this try/catch so that a Bitflow
127
+ // API outage does not propagate as an uncaught error and block all swaps.
128
+ const tokens = await bitflowService.getAvailableTokens();
129
+ const tokenMeta = tokens.find((t) => t.id === tokenX);
130
+ const decimals = tokenMeta?.decimals ?? 6;
131
+ // Fetch the wallet's balance for this token.
132
+ // STX is identified in Bitflow as "token-stx".
133
+ const hiroApi = getHiroApi(NETWORK);
134
+ let walletBalanceHuman;
135
+ const isStx = tokenX === "token-stx";
136
+ if (isStx) {
137
+ const stxInfo = await hiroApi.getStxBalance(walletAddress);
138
+ // balance is in micro-STX; convert to STX (6 decimals)
139
+ walletBalanceHuman = Number(stxInfo.balance) / 10 ** 6;
140
+ }
141
+ else {
142
+ const rawBalance = await hiroApi.getTokenBalance(walletAddress, tokenX);
143
+ walletBalanceHuman = Number(rawBalance) / 10 ** decimals;
144
+ }
145
+ // If the wallet has no balance at all, there is nothing to compare against.
146
+ if (walletBalanceHuman <= 0)
147
+ return;
148
+ const threshold = walletBalanceHuman * AMOUNT_SCALE_SUSPICION_MULTIPLIER;
149
+ if (humanAmount <= threshold)
150
+ return;
151
+ // The requested amount looks like it was supplied in base units.
152
+ // Build a helpful error with corrected examples.
153
+ const correctedHumanAmount = (humanAmount / 10 ** decimals).toFixed(decimals > 0 ? 6 : 0);
154
+ const baseEquivalent = Math.round(humanAmount * 10 ** decimals).toString();
155
+ throw new AmountUnitMismatchError(`AMOUNT_UNIT_MISMATCH_SUSPECTED: The requested amount (${humanAmount} in human units) is ` +
156
+ `${(humanAmount / walletBalanceHuman).toFixed(0)}x your wallet balance ` +
157
+ `(${walletBalanceHuman.toFixed(6)} ${tokenMeta?.symbol ?? tokenX}). ` +
158
+ `This strongly suggests you passed a base-unit value as a human-unit value. ` +
159
+ `To fix this, either:\n` +
160
+ ` 1. Pass amountUnit="base" with amountIn="${Math.round(humanAmount)}" ` +
161
+ ` (the SDK will convert ${Math.round(humanAmount)} base-units → ~${correctedHumanAmount} ${tokenMeta?.symbol ?? tokenX})\n` +
162
+ ` 2. Pass amountUnit="human" (default) with amountIn="${correctedHumanAmount}" ` +
163
+ ` (interpreted directly as ${correctedHumanAmount} ${tokenMeta?.symbol ?? tokenX})\n` +
164
+ ` 3. If you really do intend to swap ${humanAmount} ${tokenMeta?.symbol ?? tokenX}, ` +
165
+ ` first fund your wallet — it currently holds ${walletBalanceHuman.toFixed(6)} ${tokenMeta?.symbol ?? tokenX}.`, {
166
+ requestedAmountHuman: humanAmount,
167
+ requestedAmountInput: amountIn,
168
+ walletBalanceHuman,
169
+ tokenDecimals: decimals,
170
+ tokenSymbol: tokenMeta?.symbol ?? tokenX,
171
+ correctedHumanAmount: Number(correctedHumanAmount),
172
+ correctedBaseAmount: baseEquivalent,
173
+ suspicionMultiplier: AMOUNT_SCALE_SUSPICION_MULTIPLIER,
174
+ });
175
+ }
176
+ catch (err) {
177
+ // Re-throw only our own typed error — for anything else (Bitflow API down,
178
+ // balance lookup failed, network issue, unknown token, etc.) we silently
179
+ // skip the guard rather than blocking legitimate swaps.
180
+ if (err instanceof AmountUnitMismatchError)
181
+ throw err;
182
+ return;
183
+ }
33
184
  }
34
185
  export function registerBitflowTools(server) {
35
186
  // ==========================================================================
@@ -168,9 +319,7 @@ Note: Bitflow is only available on mainnet.`,
168
319
  .describe("Amount of input token. Default interpretation is human units (e.g. '100' = 100 LEO)."),
169
320
  amountUnit: z
170
321
  .enum(["human", "base"])
171
- .optional()
172
- .default("human")
173
- .describe("Amount units: 'human' (default, frontend-style) or 'base' (smallest units)."),
322
+ .describe("Required. Amount units: 'human' (frontend-style decimal, e.g. '2' for 2 STX) or 'base' (smallest integer units, e.g. '2000000' for 2 STX)."),
174
323
  },
175
324
  }, async ({ tokenX, tokenY, amountIn, amountUnit }) => {
176
325
  try {
@@ -181,7 +330,8 @@ Note: Bitflow is only available on mainnet.`,
181
330
  });
182
331
  }
183
332
  const bitflowService = getBitflowService(NETWORK);
184
- const normalizedAmountIn = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
333
+ const { normalizedAmountIn, amountMetadata } = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
334
+ await checkAmountScaling(bitflowService, tokenX, normalizedAmountIn, amountIn, amountUnit);
185
335
  const quote = await bitflowService.getSwapQuote(tokenX, tokenY, normalizedAmountIn);
186
336
  const priceImpact = quote.priceImpact;
187
337
  const highImpactWarning = priceImpact && priceImpact.combinedImpact > HIGH_IMPACT_THRESHOLD
@@ -196,6 +346,7 @@ Note: Bitflow is only available on mainnet.`,
196
346
  amountUnit,
197
347
  normalizedAmountIn,
198
348
  },
349
+ amountMetadata,
199
350
  quote,
200
351
  priceImpact,
201
352
  highImpactWarning,
@@ -261,9 +412,7 @@ Note: Bitflow is only available on mainnet.`,
261
412
  .describe("Amount of input token. Default interpretation is human units (e.g. '100' = 100 LEO)."),
262
413
  amountUnit: z
263
414
  .enum(["human", "base"])
264
- .optional()
265
- .default("human")
266
- .describe("Amount units: 'human' (default, frontend-style) or 'base' (smallest units)."),
415
+ .describe("Required. Amount units: 'human' (frontend-style decimal, e.g. '2' for 2 STX) or 'base' (smallest integer units, e.g. '2000000' for 2 STX)."),
267
416
  slippageTolerance: z
268
417
  .number()
269
418
  .optional()
@@ -288,7 +437,8 @@ Note: Bitflow is only available on mainnet.`,
288
437
  });
289
438
  }
290
439
  const bitflowService = getBitflowService(NETWORK);
291
- const normalizedAmountIn = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
440
+ const { normalizedAmountIn, amountMetadata } = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
441
+ await checkAmountScaling(bitflowService, tokenX, normalizedAmountIn, amountIn, amountUnit);
292
442
  // Safety check: require explicit confirmation for high-impact swaps
293
443
  const quote = await bitflowService.getSwapQuote(tokenX, tokenY, normalizedAmountIn);
294
444
  const impact = quote.priceImpact;
@@ -296,6 +446,7 @@ Note: Bitflow is only available on mainnet.`,
296
446
  return createJsonResponse({
297
447
  error: "High price impact swap requires explicit confirmation",
298
448
  message: `This swap has ${impact.combinedImpactPct} price impact (${impact.severity}). Set confirmHighImpact=true to proceed.`,
449
+ amountMetadata,
299
450
  quote,
300
451
  threshold: `${(HIGH_IMPACT_THRESHOLD * 100).toFixed(0)}%`,
301
452
  requiredParam: "confirmHighImpact",
@@ -316,6 +467,7 @@ Note: Bitflow is only available on mainnet.`,
316
467
  slippageTolerance: slippageTolerance || 0.01,
317
468
  priceImpact: impact,
318
469
  },
470
+ amountMetadata,
319
471
  network: NETWORK,
320
472
  explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
321
473
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bitflow.tools.js","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitflow.tools.js","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aibtc/mcp-server",
3
- "version": "1.30.2",
3
+ "version": "1.31.0",
4
4
  "description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
5
5
  "mcpName": "io.github.aibtcdev/mcp-server",
6
6
  "type": "module",
package/skill/SKILL.md CHANGED
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
4
4
  license: MIT
5
5
  metadata:
6
6
  author: aibtcdev
7
- version: 1.30.2 # x-release-please-version
7
+ version: 1.31.0 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---
@@ -100,6 +100,78 @@ Uses `sbtc_get_balance`.
100
100
  | `sbtc_transfer` | Send sBTC to address |
101
101
  | `sbtc_get_peg_info` | Get peg ratio and supply |
102
102
 
103
+ ## Units & Decimals (Bitflow / DeFi)
104
+
105
+ All Bitflow tools accept an `amountUnit` parameter that controls how `amountIn` is interpreted.
106
+
107
+ ### Quick Reference
108
+
109
+ | Token | Decimals | 1 human unit | Base units |
110
+ |-------|----------|-------------|------------|
111
+ | STX | 6 | `1` | `1000000` |
112
+ | sBTC | 8 | `1` | `100000000`|
113
+
114
+ **Default is `"human"` (frontend-style).** Pass `amountUnit: "base"` only when you already have a raw integer from on-chain data.
115
+
116
+ ### Human vs Base Examples
117
+
118
+ | What you want to swap | amountUnit | amountIn |
119
+ |----------------------|------------|--------------|
120
+ | 2 STX | `"human"` | `"2"` |
121
+ | 2 STX (base) | `"base"` | `"2000000"` |
122
+ | 0.00000794 sBTC | `"human"` | `"0.00000794"` |
123
+ | 794 sats of sBTC | `"base"` | `"794"` |
124
+
125
+ ### bitflow_get_quote Example
126
+
127
+ Get a quote for swapping 2 STX to sBTC:
128
+
129
+ ```
130
+ # Human units (default) — "2 STX"
131
+ bitflow_get_quote(tokenX="token-stx", tokenY="token-sbtc", amountIn="2")
132
+
133
+ # Equivalent in base units — "2000000 micro-STX"
134
+ bitflow_get_quote(tokenX="token-stx", tokenY="token-sbtc", amountIn="2000000", amountUnit="base")
135
+ ```
136
+
137
+ Both calls produce the same quote. The server converts base to human internally.
138
+
139
+ ### bitflow_swap Example
140
+
141
+ Swap 2 STX for sBTC:
142
+
143
+ ```
144
+ # Human units (default)
145
+ bitflow_swap(tokenX="token-stx", tokenY="token-sbtc", amountIn="2")
146
+
147
+ # Equivalent in base units
148
+ bitflow_swap(tokenX="token-stx", tokenY="token-sbtc", amountIn="2000000", amountUnit="base")
149
+ ```
150
+
151
+ ### WARNING: Double-Scaling Error
152
+
153
+ The most common mistake is passing a value that has already been scaled to base units while leaving `amountUnit` at the default `"human"`.
154
+
155
+ **Wrong — double-scaled:**
156
+ ```
157
+ # WRONG: "2000000" interpreted as 2,000,000 STX (human), which becomes
158
+ # 2,000,000,000,000 micro-STX internally — 1 million times too large!
159
+ bitflow_swap(tokenX="token-stx", tokenY="token-sbtc", amountIn="2000000")
160
+ ```
161
+
162
+ **Correct — either of these:**
163
+ ```
164
+ # Option A: pass the human amount directly
165
+ bitflow_swap(tokenX="token-stx", tokenY="token-sbtc", amountIn="2")
166
+
167
+ # Option B: pass base units with the flag
168
+ bitflow_swap(tokenX="token-stx", tokenY="token-sbtc", amountIn="2000000", amountUnit="base")
169
+ ```
170
+
171
+ **Rule of thumb:** If your number looks like a raw integer from a balance query or on-chain read, set `amountUnit: "base"`. If it looks like what a human would type (e.g. "2", "0.5"), use the default.
172
+
173
+ ---
174
+
103
175
  ## ALEX DEX (Mainnet Only)
104
176
 
105
177
  Decentralized exchange for token swaps on Stacks.
@@ -143,6 +215,43 @@ Uses `alex_swap` - handles routing, wrapping, and post-conditions automatically.
143
215
  | `alex_swap` | Execute token swap |
144
216
  | `alex_get_pool_info` | Get pool reserves |
145
217
 
218
+ ## Bitflow DEX (Mainnet Only)
219
+
220
+ DEX aggregator that routes trades across multiple liquidity sources on Stacks.
221
+
222
+ See [Units & Decimals](#units--decimals-bitflow--defi) above for amount handling.
223
+
224
+ ### Get Quote
225
+
226
+ Check expected output before swapping:
227
+
228
+ ```
229
+ "Get a Bitflow quote for 2 STX to sBTC"
230
+ ```
231
+
232
+ Uses `bitflow_get_quote` with token IDs (`token-stx`, `token-sbtc`, etc).
233
+
234
+ ### Execute Swap
235
+
236
+ Swap tokens:
237
+
238
+ ```
239
+ "Swap 2 STX for sBTC on Bitflow"
240
+ ```
241
+
242
+ Uses `bitflow_swap` — finds the best route automatically. Requires an unlocked wallet.
243
+
244
+ ### Bitflow Tool Reference
245
+
246
+ | Tool | Description |
247
+ |------|-------------|
248
+ | `bitflow_get_ticker` | Get market data (no API key needed) |
249
+ | `bitflow_get_tokens` | List available swap tokens |
250
+ | `bitflow_get_swap_targets` | Get possible output tokens for a given input |
251
+ | `bitflow_get_routes` | Get all routes between two tokens |
252
+ | `bitflow_get_quote` | Get swap quote with price impact |
253
+ | `bitflow_swap` | Execute token swap |
254
+
146
255
  ## Zest Protocol (Mainnet Only)
147
256
 
148
257
  Lending and borrowing protocol for earning yield on assets.