@kaleidorg/mind 0.10.3 → 0.10.5

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.
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import type { ToolDef } from '../types.js';
21
21
  import type { ToolSource } from './source.js';
22
+ export declare function toolRequiresConfirmation(name: string, description: string): boolean;
22
23
  export type McpTransport = {
23
24
  kind: 'stdio';
24
25
  command: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc9C,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAiBpD;AAED,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAiB;IAE9B,YAAY,IAAI,EAAE,oBAAoB,EAGrC;IAED,+EAA+E;IACzE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC7B;IAED,SAAS,IAAI,OAAO,EAAE,CAErB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3E;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CACF"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CASnF;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAiBpD;AAED,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAiB;IAE9B,YAAY,IAAI,EAAE,oBAAoB,EAGrC;IAED,+EAA+E;IACzE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC7B;IAED,SAAS,IAAI,OAAO,EAAE,CAErB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAEK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3E;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CACF"}
package/dist/tools/mcp.js CHANGED
@@ -20,10 +20,12 @@
20
20
  import { isKaleidoswapSpendTool } from '../kaleidoswap/contract.js';
21
21
  import { isLsps1SpendTool } from '../lsps1/contract.js';
22
22
  import { isSpendTool } from '../wallet/contract.js';
23
- function toolRequiresConfirmation(name, description) {
23
+ export function toolRequiresConfirmation(name, description) {
24
24
  return (isSpendTool(name) ||
25
25
  isKaleidoswapSpendTool(name) ||
26
26
  isLsps1SpendTool(name) ||
27
+ // kaleido-mcp names the LSPS1 tools with a kaleidoswap_ prefix.
28
+ isLsps1SpendTool(name.replace(/^kaleidoswap_/, '')) ||
27
29
  /\bSPEND\b.*\bconfirm/i.test(description));
28
30
  }
29
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2DH,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CA+CzG"}
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2DH,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAwDzG"}
@@ -98,6 +98,15 @@ export function confirmReadback(call) {
98
98
  return ask(`Accept atomic swap ${shortRef(String(a.swapstring ?? ''))} on your node`);
99
99
  case 'execute_swap':
100
100
  return ask(`Swap ${asset(a.amount, a.from_asset)} for ${label(a.to_asset)}`);
101
+ // The order total is only known once the LSP creates the order; the
102
+ // payment that follows is confirmed separately with that amount.
103
+ case 'lsp_create_order':
104
+ case 'kaleidoswap_lsp_create_order': {
105
+ const pushed = num(a.client_balance_sat) ? `, ${sats(a.client_balance_sat)} pushed to you` : '';
106
+ return ask(`Order a Lightning channel from the LSP with ${sats(a.lsp_balance_sat)} inbound${pushed}. The order total is paid in a separate step`);
107
+ }
108
+ case 'kaleidoswap_lsp_create_asset_channel':
109
+ return ask(`Order a channel from the LSP with ${asset(a.asset_amount, a.asset)} inbound. The order total is paid in a separate step`);
101
110
  default:
102
111
  // Unknown but spend-flagged tool → a generic, still-honest readback.
103
112
  return getWalletTool(name)?.spend ? ask(`Confirm ${name.replace(/_/g, ' ')}`) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaleidorg/mind",
3
- "version": "0.10.3",
3
+ "version": "0.10.5",
4
4
  "description": "Local-first reasoning + function-calling engine for KaleidoSwap. QVAC-powered.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,38 +1,45 @@
1
1
  ---
2
2
  name: channel-manager
3
3
  description: "Lightning channels and liquidity for the RGB Lightning Node: node health, channel audit, inbound/outbound balance, buying a channel or asset channel from the KaleidoSwap LSP, opening and closing channels. Runs the scheduled heartbeat."
4
- tools: rln_get_node_info, rln_list_channels, rln_get_balances, rln_refresh_transfers, rln_connect_peer, rln_open_channel, rln_close_channel, rln_get_channel_id, rln_pay_invoice, kaleidoswap_lsp_get_info, kaleidoswap_lsp_estimate_fees, kaleidoswap_lsp_create_order, kaleidoswap_lsp_get_order, kaleidoswap_lsp_quote_asset_channel, kaleidoswap_lsp_create_asset_channel
4
+ tools: rln_get_node_info, rln_list_channels, rln_get_balances, rln_refresh_transfers, rln_connect_peer, rln_open_channel, rln_close_channel, rln_get_channel_id, rln_pay_invoice, rln_send_btc, kaleidoswap_lsp_get_info, kaleidoswap_lsp_estimate_fees, kaleidoswap_lsp_create_order, kaleidoswap_lsp_get_order, kaleidoswap_lsp_quote_asset_channel, kaleidoswap_lsp_create_asset_channel
5
5
  requires-tools: rln_list_channels
6
- triggers: channel, channels, liquidity, inbound, outbound, lsp, lsps1, capacity, rebalance channel, can't receive, open channel, close channel, channel order, heartbeat, health, stuck
6
+ triggers: channel, channels, liquidity, inbound, outbound, lsp, lsps1, capacity, rebalance channel, can't receive, open channel, close channel, channel order, buy a channel, no channel, heartbeat, health, stuck
7
7
  metadata:
8
8
  author: kaleidoswap
9
- version: "0.2.0"
9
+ version: "0.3.0"
10
10
  ---
11
11
  # Channel manager
12
12
 
13
13
  Read state first: `rln_get_node_info`, `rln_list_channels`, `rln_get_balances`.
14
14
  Outbound = what the node can send; inbound = what it can receive. Report
15
- numbers from this turn's results only.
15
+ numbers from this turn's results only. All `*_sat` fields are sats.
16
16
 
17
17
  ## Do
18
18
  - Health: count usable channels, total outbound vs inbound, channels with
19
19
  `is_usable: false`; `rln_refresh_transfers {}` flushes pending RGB transfers.
20
- - Can't receive → buy inbound: `kaleidoswap_lsp_get_info` (limits and
21
- `lsp_connection_url`), `rln_connect_peer`, `kaleidoswap_lsp_estimate_fees`
22
- (show `total_fee`), then `kaleidoswap_lsp_create_order` with `client_pubkey`
23
- from `rln_get_node_info`, pay its invoice with `rln_pay_invoice`, poll
24
- `kaleidoswap_lsp_get_order` until `COMPLETED`.
25
- - Wants an asset (USDT/XAUT) but has no channel →
20
+ - Buy a channel from the LSP (also the step before a first swap):
21
+ 1. `kaleidoswap_lsp_get_info` → `lsp_connection_url`, limits, asset ids.
22
+ 2. `rln_connect_peer` with `lsp_connection_url`.
23
+ 3. `kaleidoswap_lsp_estimate_fees`, show `total_fee`.
24
+ 4. `kaleidoswap_lsp_create_order` with `client_pubkey` from `rln_get_node_info`.
25
+ `lsp_balance_sat` (min 50,000) is inbound; `client_balance_sat` is your
26
+ outbound, paid by you. For a BTC→asset swap add `asset_id` (the `rgb:` id)
27
+ and `lsp_asset_amount` in raw units (USDT: 10 USDT = 10000000).
28
+ 5. Pay `amount_due_sat` (fee + `client_balance_sat`), never `fee_sat`.
29
+ With no channel, pay on-chain: `rln_send_btc` to `payment.onchain.address`.
30
+ 6. Poll `kaleidoswap_lsp_get_order` with `order_id` + `access_token`, then
31
+ `rln_list_channels` until `is_usable`. Fees: `references/lsp.md`.
32
+ - Wants to hold an asset (USDT/XAUT) bought with the channel →
26
33
  `kaleidoswap_lsp_quote_asset_channel` then
27
34
  `kaleidoswap_lsp_create_asset_channel` with the fresh `rfq_id`.
28
- - Can't send → open a channel with spare on-chain BTC (`rln_open_channel`).
35
+ - Can't send → `rln_open_channel` with spare on-chain BTC.
29
36
  - Every order, open, close and payment is confirm-gated; recommend first,
30
37
  execute only on an explicit request. With `dry_run` true, describe only.
31
38
  - Heartbeat runs: `action` is `ok`, `flush`, `buy_capacity` or `alert`.
32
39
 
33
40
  ## Examples
34
41
  - "How healthy is my node?" → `rln_list_channels {}`
35
- - "Fee for 500k sats inbound?" → `kaleidoswap_lsp_estimate_fees {"lsp_balance_sat":500000,"client_balance_sat":0,"channel_expiry_blocks":4320}`
36
42
  - "Buy 500k inbound" → `rln_get_node_info {}` then `kaleidoswap_lsp_create_order {"client_pubkey":"<pubkey>","lsp_balance_sat":500000,"client_balance_sat":0,"channel_expiry_blocks":4320}`
43
+ - "A channel to swap BTC for USDT" → `kaleidoswap_lsp_estimate_fees {"lsp_balance_sat":50000,"client_balance_sat":4000,"channel_expiry_blocks":4320,"asset_id":"<USDT rgb id>","lsp_asset_amount":10000000}`
44
+ - "Pay the order on-chain" → `rln_send_btc {"address":"<payment.onchain.address>","amount_sat":6972}`
37
45
  - "A channel holding 100 USDT" → `kaleidoswap_lsp_quote_asset_channel {"asset":"USDT","asset_amount":100}`
38
- - "Did order 7a1b open?" → `kaleidoswap_lsp_get_order {"order_id":"7a1b"}`
@@ -0,0 +1,52 @@
1
+ # Buying a channel from the KaleidoSwap LSP (LSPS1)
2
+
3
+ Verified on signet against a node with 10,000 sats on-chain and no channels.
4
+ Field names are kaleido-mcp 0.4.2.
5
+
6
+ ## Which channel to buy
7
+
8
+ - Receive only: `lsp_balance_sat` = inbound you want, `client_balance_sat` 0.
9
+ - Swap BTC → USDT/XAUT over Lightning: you send BTC and receive the asset, so
10
+ the channel needs BTC outbound (`client_balance_sat`) and asset inbound
11
+ (`asset_id` + `lsp_asset_amount`, raw units = display × 10^precision).
12
+ An RGB Lightning payment carries at least 3,000 sats, and outbound is about
13
+ 1,000 sats less than `client_balance_sat`, so use at least 4,000.
14
+ - Swap USDT/XAUT → BTC: you need the asset on your side; buy it with
15
+ `kaleidoswap_lsp_quote_asset_channel` → `kaleidoswap_lsp_create_asset_channel`.
16
+
17
+ ## Steps
18
+
19
+ 1. `kaleidoswap_lsp_get_info {}`: `lsp_connection_url`, `min_channel_balance_sat`
20
+ (50,000 on signet), `max_channel_expiry_blocks`, and the asset ids.
21
+ 2. `rln_connect_peer {"peer_pubkey_and_addr":"<lsp_connection_url>"}`
22
+ 3. `kaleidoswap_lsp_estimate_fees {"lsp_balance_sat":50000,"client_balance_sat":4000,"channel_expiry_blocks":4320,"asset_id":"<rgb:… USDT id>","lsp_asset_amount":10000000}`
23
+ → `total_fee` 2,972.
24
+ 4. Confirm the ORDER with the user, showing the order total (the estimate's
25
+ `total_fee` + `client_balance_sat`). `kaleidoswap_lsp_create_order` is
26
+ confirmation-gated on MCP hosts.
27
+ `kaleidoswap_lsp_create_order {"client_pubkey":"<pubkey>","lsp_balance_sat":50000,"client_balance_sat":4000,"channel_expiry_blocks":4320,"asset_id":"<rgb:… USDT id>","lsp_asset_amount":10000000}`
28
+ → `order_id`, `access_token`, `amount_due_sat` 6,972 (fee + `client_balance_sat`),
29
+ `fee_sat` 2,972, and `payment.bolt11` / `payment.onchain`, each with
30
+ `amount_sat` = `amount_due_sat`. Keep `order_id` and `access_token`. The
31
+ order expires after 10 minutes.
32
+ 5. Confirm the PAYMENT with the user, then pay `amount_due_sat`, never `fee_sat`.
33
+ Without a channel only on-chain works:
34
+ `rln_send_btc {"address":"<payment.onchain.address>","amount_sat":6972,"fee_rate":2}`.
35
+ 6. Poll `kaleidoswap_lsp_get_order {"order_id":"<order_id>","access_token":"<access_token>"}`
36
+ until `COMPLETED`. The LSP opens the channel about 30 s after it sees the
37
+ payment (0-conf); `rln_list_channels {}` shows it as `Opening`, then
38
+ `is_usable: true` after the funding transaction confirms (about 4 minutes
39
+ on signet).
40
+
41
+ For an asset channel, `kaleidoswap_lsp_quote_asset_channel` returns
42
+ `btc_amount_sat` (asset price) + `channel_fee_sat` = `total_sat`, all in sats;
43
+ `kaleidoswap_lsp_create_asset_channel` returns the same order shape, so pay its
44
+ `amount_due_sat`.
45
+
46
+ ## Fees (signet, 2026-10)
47
+
48
+ setup 1,000 + capacity about 1% of the channel + duration about 0.1 sat per
49
+ block, plus 1,000 for asset inbound (`lsp_asset_amount`) or 5,000 + 1% of the
50
+ price for an asset you buy (`client_asset_amount`); an order costs at least 2,000.
51
+ Examples: 50,000 inbound for 4,320 blocks = 2,000; the USDT channel above =
52
+ 2,972. Add the on-chain fee of the payment (about 300 sats at 2 sat/vB).
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: kaleido-trading
3
3
  description: "Quote and run KaleidoSwap atomic swaps between BTC and RGB assets (USDT, XAUT): pairs, assets, quotes, swap execution and swap status."
4
- tools: kaleidoswap_get_pairs, kaleidoswap_get_assets, kaleidoswap_get_quote, kaleidoswap_atomic_init, rln_atomic_taker, rln_get_node_info, kaleidoswap_atomic_execute, kaleidoswap_atomic_status, rln_refresh_transfers
4
+ tools: kaleidoswap_get_pairs, kaleidoswap_get_assets, kaleidoswap_get_quote, kaleidoswap_atomic_init, rln_atomic_taker, rln_get_node_info, kaleidoswap_atomic_execute, kaleidoswap_atomic_status, rln_refresh_transfers, rln_list_channels
5
5
  requires-tools: kaleidoswap_get_quote
6
6
  triggers: quote, swap, trade, pair, pairs, usdt, xaut, kaleidoswap, rfq, atomic, swap status
7
7
  metadata:
8
8
  author: kaleidoswap
9
- version: "0.6.0"
9
+ version: "0.7.0"
10
10
  ---
11
11
  # KaleidoSwap trading
12
12
 
@@ -14,6 +14,10 @@ Amounts in `kaleidoswap_get_quote` are **display units**: `from_amount: 0.0005`
14
14
  means 0.0005 BTC (50,000 sats; 1 BTC = 100,000,000 sats). Asset ids accept a
15
15
  ticker (`BTC`, `USDT`, `XAUT`) or an `rgb:…` id.
16
16
 
17
+ A swap runs over Lightning: it needs a channel with enough outbound in the
18
+ asset you send and enough inbound in the asset you receive. If
19
+ `rln_list_channels` shows none, buy one first (see `channel-manager`).
20
+
17
21
  ## Do
18
22
  - Quote with exactly one amount: `from_amount` to sell a fixed input,
19
23
  `to_amount` to buy a fixed output. No amount given → ask for one.
@@ -197,6 +197,7 @@ describe('skill selection by surface', () => {
197
197
  ['Create a Lightning invoice for 5000 sats.', 'rgb-lightning-node'],
198
198
  ["what's my balance?", 'rgb-lightning-node'],
199
199
  ['buy 500k sats of inbound liquidity', 'channel-manager'],
200
+ ['I want to swap BTC for USDT but I have no channel. Buy me a channel from the KaleidoSwap LSP.', 'channel-manager'],
200
201
  ['unlock my node', 'kaleido-node'],
201
202
  ['pay lntbs10u1pexample with L-USDT', 'submarine-swaps'],
202
203
  ])('kaleido-mcp: %s → %s', (query, expected) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "source": "kaleido-mcp",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "tools": {
5
5
  "get_market_data": {
6
6
  "required": [
@@ -393,7 +393,7 @@
393
393
  "number",
394
394
  "null"
395
395
  ],
396
- "description": "Internal: total cost in sats (from the quote). Do not set."
396
+ "description": "Internal: estimated total cost in sats (from the quote). Do not set."
397
397
  },
398
398
  "btc_amount_sat": {
399
399
  "type": [
@@ -428,15 +428,15 @@
428
428
  "properties": {
429
429
  "client_pubkey": {
430
430
  "type": "string",
431
- "description": ""
431
+ "description": "Your node pubkey (rln_get_node_info)"
432
432
  },
433
433
  "lsp_balance_sat": {
434
434
  "type": "integer",
435
- "description": ""
435
+ "description": "Inbound liquidity the LSP puts on its side, in sats"
436
436
  },
437
437
  "client_balance_sat": {
438
438
  "type": "integer",
439
- "description": ""
439
+ "description": "Outbound liquidity pushed to you, in sats; you pay for it on top of the fee"
440
440
  },
441
441
  "required_channel_confirmations": {
442
442
  "type": "integer",
@@ -448,27 +448,31 @@
448
448
  },
449
449
  "channel_expiry_blocks": {
450
450
  "type": "integer",
451
- "description": ""
451
+ "description": "Channel lease in blocks (max: kaleidoswap_lsp_get_info options.max_channel_expiry_blocks)"
452
452
  },
453
453
  "announce_channel": {
454
454
  "type": "boolean",
455
455
  "description": "default false (private)"
456
456
  },
457
+ "refund_onchain_address": {
458
+ "type": "string",
459
+ "description": "BTC address for refunds if the order fails after an on-chain payment"
460
+ },
457
461
  "asset_id": {
458
462
  "type": "string",
459
- "description": ""
463
+ "description": "RGB asset id for an asset channel"
460
464
  },
461
465
  "lsp_asset_amount": {
462
466
  "type": "number",
463
- "description": ""
467
+ "description": "Asset on the LSP side, raw units (display amount x 10^precision)"
464
468
  },
465
469
  "client_asset_amount": {
466
470
  "type": "number",
467
- "description": ""
471
+ "description": "Asset pushed to you, raw units; requires rfq_id"
468
472
  },
469
473
  "rfq_id": {
470
474
  "type": "string",
471
- "description": ""
475
+ "description": "Fresh rfq_id from kaleidoswap_get_quote when client_asset_amount > 0"
472
476
  }
473
477
  }
474
478
  },
@@ -485,11 +489,11 @@
485
489
  },
486
490
  "lsp_balance_sat": {
487
491
  "type": "integer",
488
- "description": ""
492
+ "description": "Inbound liquidity on the LSP side, in sats"
489
493
  },
490
494
  "client_balance_sat": {
491
495
  "type": "integer",
492
- "description": ""
496
+ "description": "Outbound liquidity pushed to you, in sats"
493
497
  },
494
498
  "channel_expiry_blocks": {
495
499
  "type": "integer",
@@ -505,15 +509,19 @@
505
509
  },
506
510
  "asset_id": {
507
511
  "type": "string",
508
- "description": ""
512
+ "description": "RGB asset id for an asset channel"
509
513
  },
510
514
  "lsp_asset_amount": {
511
515
  "type": "number",
512
- "description": ""
516
+ "description": "Asset on the LSP side, raw units"
517
+ },
518
+ "client_asset_amount": {
519
+ "type": "number",
520
+ "description": "Asset pushed to you, raw units; requires rfq_id"
513
521
  },
514
522
  "rfq_id": {
515
523
  "type": "string",
516
- "description": ""
524
+ "description": "Fresh rfq_id from kaleidoswap_get_quote when client_asset_amount > 0"
517
525
  }
518
526
  }
519
527
  },
@@ -523,12 +531,17 @@
523
531
  },
524
532
  "kaleidoswap_lsp_get_order": {
525
533
  "required": [
526
- "order_id"
534
+ "order_id",
535
+ "access_token"
527
536
  ],
528
537
  "properties": {
529
538
  "order_id": {
530
539
  "type": "string",
531
540
  "description": ""
541
+ },
542
+ "access_token": {
543
+ "type": "string",
544
+ "description": "Per-order token from kaleidoswap_lsp_create_order / kaleidoswap_lsp_create_asset_channel"
532
545
  }
533
546
  }
534
547
  },
@@ -35,3 +35,13 @@ describe('parseMcpResult', () => {
35
35
  expect(parseMcpResult(res)).toEqual({ a: 1, b: 2 });
36
36
  });
37
37
  });
38
+
39
+ describe('MCP spend gating', () => {
40
+ it('gates the LSPS1 order on kaleido-mcp (kaleidoswap_ prefix) like the in-app tool', async () => {
41
+ const { toolRequiresConfirmation } = await import('./mcp.js');
42
+ expect(toolRequiresConfirmation('kaleidoswap_lsp_create_order', '')).toBe(true);
43
+ expect(toolRequiresConfirmation('lsp_create_order', '')).toBe(true);
44
+ expect(toolRequiresConfirmation('kaleidoswap_lsp_get_order', '')).toBe(false);
45
+ expect(toolRequiresConfirmation('kaleidoswap_lsp_quote_asset_channel', '')).toBe(false);
46
+ });
47
+ });
package/src/tools/mcp.ts CHANGED
@@ -24,11 +24,13 @@ import { isKaleidoswapSpendTool } from '../kaleidoswap/contract.js';
24
24
  import { isLsps1SpendTool } from '../lsps1/contract.js';
25
25
  import { isSpendTool } from '../wallet/contract.js';
26
26
 
27
- function toolRequiresConfirmation(name: string, description: string): boolean {
27
+ export function toolRequiresConfirmation(name: string, description: string): boolean {
28
28
  return (
29
29
  isSpendTool(name) ||
30
30
  isKaleidoswapSpendTool(name) ||
31
31
  isLsps1SpendTool(name) ||
32
+ // kaleido-mcp names the LSPS1 tools with a kaleidoswap_ prefix.
33
+ isLsps1SpendTool(name.replace(/^kaleidoswap_/, '')) ||
32
34
  /\bSPEND\b.*\bconfirm/i.test(description)
33
35
  );
34
36
  }
@@ -79,3 +79,14 @@ describe('confirmReadback', () => {
79
79
  .toBe('Send 100 sats to mum over Arkade. Confirm?');
80
80
  });
81
81
  });
82
+
83
+ describe('confirmReadback: LSP orders', () => {
84
+ it('says what is ordered and that the total is paid separately', () => {
85
+ expect(
86
+ confirmReadback({ name: 'kaleidoswap_lsp_create_order', arguments: { client_pubkey: '02ab', lsp_balance_sat: 50000, client_balance_sat: 0, channel_expiry_blocks: 4320 } }),
87
+ ).toBe('Order a Lightning channel from the LSP with 50,000 sats inbound. The order total is paid in a separate step. Confirm?');
88
+ expect(
89
+ confirmReadback({ name: 'kaleidoswap_lsp_create_asset_channel', arguments: { asset: 'USDT', asset_amount: 10, rfq_id: 'r' } }),
90
+ ).toBe('Order a channel from the LSP with 10 USDT inbound. The order total is paid in a separate step. Confirm?');
91
+ });
92
+ });
@@ -106,6 +106,15 @@ export function confirmReadback(call: { name: string; arguments: Record<string,
106
106
  return ask(`Accept atomic swap ${shortRef(String(a.swapstring ?? ''))} on your node`);
107
107
  case 'execute_swap':
108
108
  return ask(`Swap ${asset(a.amount, a.from_asset)} for ${label(a.to_asset)}`);
109
+ // The order total is only known once the LSP creates the order; the
110
+ // payment that follows is confirmed separately with that amount.
111
+ case 'lsp_create_order':
112
+ case 'kaleidoswap_lsp_create_order': {
113
+ const pushed = num(a.client_balance_sat) ? `, ${sats(a.client_balance_sat)} pushed to you` : '';
114
+ return ask(`Order a Lightning channel from the LSP with ${sats(a.lsp_balance_sat)} inbound${pushed}. The order total is paid in a separate step`);
115
+ }
116
+ case 'kaleidoswap_lsp_create_asset_channel':
117
+ return ask(`Order a channel from the LSP with ${asset(a.asset_amount, a.asset)} inbound. The order total is paid in a separate step`);
109
118
  default:
110
119
  // Unknown but spend-flagged tool → a generic, still-honest readback.
111
120
  return getWalletTool(name)?.spend ? ask(`Confirm ${name.replace(/_/g, ' ')}`) : null;