@aibtc/mcp-server 1.30.2 → 1.30.3

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;AAwLpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8jB5D"}
@@ -1,9 +1,28 @@
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%
8
+ /**
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
+ }
7
26
  /**
8
27
  * Resolve amountIn to the human-unit number the Bitflow SDK expects.
9
28
  * When amountUnit is "human" (default), validates and passes through.
@@ -31,6 +50,103 @@ async function resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit) {
31
50
  }
32
51
  return numeric;
33
52
  }
53
+ /**
54
+ * Preflight guardrail: detect likely base-unit / human-unit confusion.
55
+ *
56
+ * When amountUnit is "human" and the requested amount is more than
57
+ * AMOUNT_SCALE_SUSPICION_MULTIPLIER times the wallet's actual balance of that
58
+ * token, we reject the call early with a structured error that explains the
59
+ * mismatch and shows corrected examples.
60
+ *
61
+ * This prevents wasted retries and failed transactions caused by an agent (or
62
+ * human) passing micro-unit values (e.g. 1_000_000 micro-STX) when the API
63
+ * expects human units (e.g. 1 STX).
64
+ *
65
+ * The check is skipped (silently passes) when:
66
+ * - amountUnit is "base" — the caller already opted into explicit unit
67
+ * conversion via resolveAmountIn, so no confusion is expected.
68
+ * - The wallet address cannot be resolved (no active session / no mnemonic),
69
+ * because we cannot fetch the balance without an address.
70
+ * - The balance fetch itself fails — we treat network errors as non-fatal so
71
+ * that a temporary API outage does not block all swap traffic.
72
+ *
73
+ * @throws Error with code AMOUNT_UNIT_MISMATCH_SUSPECTED when suspicious.
74
+ */
75
+ async function checkAmountScaling(bitflowService, tokenX, humanAmount, amountIn, amountUnit) {
76
+ // Only guard the default "human" path — "base" users have already been
77
+ // explicit about their units.
78
+ if (amountUnit !== "human")
79
+ return;
80
+ let walletAddress;
81
+ try {
82
+ walletAddress = await getWalletAddress();
83
+ }
84
+ catch {
85
+ // No wallet unlocked / no mnemonic — skip the check rather than blocking.
86
+ return;
87
+ }
88
+ try {
89
+ // Look up the token's decimals from the Bitflow token list.
90
+ // Fall back to 6 (micro-STX standard) if the token is unknown.
91
+ // NOTE: getAvailableTokens() is inside this try/catch so that a Bitflow
92
+ // API outage does not propagate as an uncaught error and block all swaps.
93
+ const tokens = await bitflowService.getAvailableTokens();
94
+ const tokenMeta = tokens.find((t) => t.id === tokenX);
95
+ const decimals = tokenMeta?.decimals ?? 6;
96
+ // Fetch the wallet's balance for this token.
97
+ // STX is identified in Bitflow as "token-stx".
98
+ const hiroApi = getHiroApi(NETWORK);
99
+ let walletBalanceHuman;
100
+ const isStx = tokenX === "token-stx";
101
+ if (isStx) {
102
+ const stxInfo = await hiroApi.getStxBalance(walletAddress);
103
+ // balance is in micro-STX; convert to STX (6 decimals)
104
+ walletBalanceHuman = Number(stxInfo.balance) / 10 ** 6;
105
+ }
106
+ else {
107
+ const rawBalance = await hiroApi.getTokenBalance(walletAddress, tokenX);
108
+ walletBalanceHuman = Number(rawBalance) / 10 ** decimals;
109
+ }
110
+ // If the wallet has no balance at all, there is nothing to compare against.
111
+ if (walletBalanceHuman <= 0)
112
+ return;
113
+ const threshold = walletBalanceHuman * AMOUNT_SCALE_SUSPICION_MULTIPLIER;
114
+ if (humanAmount <= threshold)
115
+ return;
116
+ // The requested amount looks like it was supplied in base units.
117
+ // Build a helpful error with corrected examples.
118
+ const correctedHumanAmount = (humanAmount / 10 ** decimals).toFixed(decimals > 0 ? 6 : 0);
119
+ const baseEquivalent = Math.round(humanAmount * 10 ** decimals).toString();
120
+ throw new AmountUnitMismatchError(`AMOUNT_UNIT_MISMATCH_SUSPECTED: The requested amount (${humanAmount} in human units) is ` +
121
+ `${(humanAmount / walletBalanceHuman).toFixed(0)}x your wallet balance ` +
122
+ `(${walletBalanceHuman.toFixed(6)} ${tokenMeta?.symbol ?? tokenX}). ` +
123
+ `This strongly suggests you passed a base-unit value as a human-unit value. ` +
124
+ `To fix this, either:\n` +
125
+ ` 1. Pass amountUnit="base" with amountIn="${Math.round(humanAmount)}" ` +
126
+ ` (the SDK will convert ${Math.round(humanAmount)} base-units → ~${correctedHumanAmount} ${tokenMeta?.symbol ?? tokenX})\n` +
127
+ ` 2. Pass amountUnit="human" (default) with amountIn="${correctedHumanAmount}" ` +
128
+ ` (interpreted directly as ${correctedHumanAmount} ${tokenMeta?.symbol ?? tokenX})\n` +
129
+ ` 3. If you really do intend to swap ${humanAmount} ${tokenMeta?.symbol ?? tokenX}, ` +
130
+ ` first fund your wallet — it currently holds ${walletBalanceHuman.toFixed(6)} ${tokenMeta?.symbol ?? tokenX}.`, {
131
+ requestedAmountHuman: humanAmount,
132
+ requestedAmountInput: amountIn,
133
+ walletBalanceHuman,
134
+ tokenDecimals: decimals,
135
+ tokenSymbol: tokenMeta?.symbol ?? tokenX,
136
+ correctedHumanAmount: Number(correctedHumanAmount),
137
+ correctedBaseAmount: baseEquivalent,
138
+ suspicionMultiplier: AMOUNT_SCALE_SUSPICION_MULTIPLIER,
139
+ });
140
+ }
141
+ catch (err) {
142
+ // Re-throw only our own typed error — for anything else (Bitflow API down,
143
+ // balance lookup failed, network issue, unknown token, etc.) we silently
144
+ // skip the guard rather than blocking legitimate swaps.
145
+ if (err instanceof AmountUnitMismatchError)
146
+ throw err;
147
+ return;
148
+ }
149
+ }
34
150
  export function registerBitflowTools(server) {
35
151
  // ==========================================================================
36
152
  // Public API Tools (No API Key Required)
@@ -168,9 +284,7 @@ Note: Bitflow is only available on mainnet.`,
168
284
  .describe("Amount of input token. Default interpretation is human units (e.g. '100' = 100 LEO)."),
169
285
  amountUnit: z
170
286
  .enum(["human", "base"])
171
- .optional()
172
- .default("human")
173
- .describe("Amount units: 'human' (default, frontend-style) or 'base' (smallest units)."),
287
+ .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
288
  },
175
289
  }, async ({ tokenX, tokenY, amountIn, amountUnit }) => {
176
290
  try {
@@ -182,6 +296,7 @@ Note: Bitflow is only available on mainnet.`,
182
296
  }
183
297
  const bitflowService = getBitflowService(NETWORK);
184
298
  const normalizedAmountIn = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
299
+ await checkAmountScaling(bitflowService, tokenX, normalizedAmountIn, amountIn, amountUnit);
185
300
  const quote = await bitflowService.getSwapQuote(tokenX, tokenY, normalizedAmountIn);
186
301
  const priceImpact = quote.priceImpact;
187
302
  const highImpactWarning = priceImpact && priceImpact.combinedImpact > HIGH_IMPACT_THRESHOLD
@@ -261,9 +376,7 @@ Note: Bitflow is only available on mainnet.`,
261
376
  .describe("Amount of input token. Default interpretation is human units (e.g. '100' = 100 LEO)."),
262
377
  amountUnit: z
263
378
  .enum(["human", "base"])
264
- .optional()
265
- .default("human")
266
- .describe("Amount units: 'human' (default, frontend-style) or 'base' (smallest units)."),
379
+ .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
380
  slippageTolerance: z
268
381
  .number()
269
382
  .optional()
@@ -289,6 +402,7 @@ Note: Bitflow is only available on mainnet.`,
289
402
  }
290
403
  const bitflowService = getBitflowService(NETWORK);
291
404
  const normalizedAmountIn = await resolveAmountIn(bitflowService, tokenX, amountIn, amountUnit);
405
+ await checkAmountScaling(bitflowService, tokenX, normalizedAmountIn, amountIn, amountUnit);
292
406
  // Safety check: require explicit confirmation for high-impact swaps
293
407
  const quote = await bitflowService.getSwapQuote(tokenX, tokenY, normalizedAmountIn);
294
408
  const impact = quote.priceImpact;
@@ -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.30.3",
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.30.3 # 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.