@aibtc/mcp-server 1.36.0 → 1.37.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/dist/services/defi.service.d.ts.map +1 -1
- package/dist/services/defi.service.js +4 -17
- package/dist/services/defi.service.js.map +1 -1
- package/dist/services/wallet-manager.d.ts.map +1 -1
- package/dist/services/wallet-manager.js +7 -0
- package/dist/services/wallet-manager.js.map +1 -1
- package/dist/tools/contract.tools.d.ts.map +1 -1
- package/dist/tools/contract.tools.js +3 -2
- package/dist/tools/contract.tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jingswap.tools.d.ts +3 -0
- package/dist/tools/jingswap.tools.d.ts.map +1 -0
- package/dist/tools/jingswap.tools.js +471 -0
- package/dist/tools/jingswap.tools.js.map +1 -0
- package/dist/tools/nostr.tools.d.ts +3 -0
- package/dist/tools/nostr.tools.d.ts.map +1 -0
- package/dist/tools/nostr.tools.js +409 -0
- package/dist/tools/nostr.tools.js.map +1 -0
- package/dist/tools/ordinals-p2p.tools.d.ts +21 -0
- package/dist/tools/ordinals-p2p.tools.d.ts.map +1 -0
- package/dist/tools/ordinals-p2p.tools.js +621 -0
- package/dist/tools/ordinals-p2p.tools.js.map +1 -0
- package/dist/tools/relay-diagnostic.tools.d.ts.map +1 -1
- package/dist/tools/relay-diagnostic.tools.js +27 -4
- package/dist/tools/relay-diagnostic.tools.js.map +1 -1
- package/dist/tools/skill-mappings.d.ts.map +1 -1
- package/dist/tools/skill-mappings.js +13 -1
- package/dist/tools/skill-mappings.js.map +1 -1
- package/dist/tools/stacks-market.tools.d.ts +22 -0
- package/dist/tools/stacks-market.tools.d.ts.map +1 -0
- package/dist/tools/stacks-market.tools.js +630 -0
- package/dist/tools/stacks-market.tools.js.map +1 -0
- package/dist/tools/taproot-multisig.tools.d.ts +17 -0
- package/dist/tools/taproot-multisig.tools.d.ts.map +1 -0
- package/dist/tools/taproot-multisig.tools.js +236 -0
- package/dist/tools/taproot-multisig.tools.js.map +1 -0
- package/dist/tools/transfer.tools.js +1 -1
- package/dist/tools/transfer.tools.js.map +1 -1
- package/dist/transactions/builder.d.ts +35 -1
- package/dist/transactions/builder.d.ts.map +1 -1
- package/dist/transactions/builder.js +153 -4
- package/dist/transactions/builder.js.map +1 -1
- package/dist/utils/fee.d.ts +15 -0
- package/dist/utils/fee.d.ts.map +1 -1
- package/dist/utils/fee.js +36 -4
- package/dist/utils/fee.js.map +1 -1
- package/package.json +4 -1
- package/skill/SKILL.md +1 -1
|
@@ -0,0 +1,621 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordinals P2P Trading Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for peer-to-peer ordinals trading via the public trade ledger at ledger.drx4.xyz.
|
|
5
|
+
* Supports listing trades, creating offers, countering, transferring, cancelling, and
|
|
6
|
+
* recording PSBT atomic swaps. All write operations are authenticated with BIP-137 signatures.
|
|
7
|
+
*
|
|
8
|
+
* Tools:
|
|
9
|
+
* - ordinals_p2p_list_trades: Browse trade ledger with optional filters
|
|
10
|
+
* - ordinals_p2p_get_trade: Fetch full details for a single trade
|
|
11
|
+
* - ordinals_p2p_my_trades: List trades for the active wallet's BTC address
|
|
12
|
+
* - ordinals_p2p_agents: List active agents on the ledger
|
|
13
|
+
* - ordinals_p2p_create_offer: Post a new inscription offer (BIP-137 signed)
|
|
14
|
+
* - ordinals_p2p_counter: Counter an existing offer (BIP-137 signed)
|
|
15
|
+
* - ordinals_p2p_transfer: Record a completed transfer (BIP-137 signed)
|
|
16
|
+
* - ordinals_p2p_cancel: Cancel an open offer or counter (BIP-137 signed)
|
|
17
|
+
* - ordinals_p2p_psbt_swap: Record a completed PSBT atomic swap (BIP-137 signed)
|
|
18
|
+
*/
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
21
|
+
import { sha256 } from "@noble/hashes/sha256";
|
|
22
|
+
import { hexToBytes } from "@noble/hashes/utils";
|
|
23
|
+
import { NETWORK } from "../config/networks.js";
|
|
24
|
+
import { getWalletManager } from "../services/wallet-manager.js";
|
|
25
|
+
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Config
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
const LEDGER_BASE = NETWORK === "testnet"
|
|
30
|
+
? "https://ledger-test.drx4.xyz"
|
|
31
|
+
: "https://ledger.drx4.xyz";
|
|
32
|
+
const BITCOIN_MSG_PREFIX = "\x18Bitcoin Signed Message:\n";
|
|
33
|
+
// BIP-137 header bytes by address type
|
|
34
|
+
const BIP137_HEADER_BASE = {
|
|
35
|
+
P2PKH_COMPRESSED: 31,
|
|
36
|
+
P2SH_P2WPKH: 35,
|
|
37
|
+
P2WPKH: 39,
|
|
38
|
+
};
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// BIP-137 signing helpers
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
function encodeVarInt(n) {
|
|
43
|
+
if (n < 0xfd)
|
|
44
|
+
return new Uint8Array([n]);
|
|
45
|
+
if (n <= 0xffff) {
|
|
46
|
+
const b = new Uint8Array(3);
|
|
47
|
+
b[0] = 0xfd;
|
|
48
|
+
b[1] = n & 0xff;
|
|
49
|
+
b[2] = (n >> 8) & 0xff;
|
|
50
|
+
return b;
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`VarInt too large: ${n}`);
|
|
53
|
+
}
|
|
54
|
+
function formatBitcoinMessage(message) {
|
|
55
|
+
const prefixBytes = new TextEncoder().encode(BITCOIN_MSG_PREFIX);
|
|
56
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
57
|
+
const lengthBytes = encodeVarInt(messageBytes.length);
|
|
58
|
+
const result = new Uint8Array(prefixBytes.length + lengthBytes.length + messageBytes.length);
|
|
59
|
+
result.set(prefixBytes, 0);
|
|
60
|
+
result.set(lengthBytes, prefixBytes.length);
|
|
61
|
+
result.set(messageBytes, prefixBytes.length + lengthBytes.length);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
function doubleSha256(data) {
|
|
65
|
+
return sha256(sha256(data));
|
|
66
|
+
}
|
|
67
|
+
function ensureBytes(key) {
|
|
68
|
+
if (typeof key === "string")
|
|
69
|
+
return hexToBytes(key);
|
|
70
|
+
return key;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Sign a message with BIP-137 and return a base64-encoded signature.
|
|
74
|
+
* The header byte encodes both the address type and the recovery ID.
|
|
75
|
+
*
|
|
76
|
+
* Uses `format: "recovered"` which returns a flat 65-byte Uint8Array:
|
|
77
|
+
* [recoveryId (1 byte), r (32 bytes), s (32 bytes)]
|
|
78
|
+
*/
|
|
79
|
+
function signBip137(message, privateKey, btcAddress) {
|
|
80
|
+
const formatted = formatBitcoinMessage(message);
|
|
81
|
+
const msgHash = doubleSha256(formatted);
|
|
82
|
+
// format: "recovered" returns Uint8Array [recoveryId, r(32), s(32)]
|
|
83
|
+
const sigWithRecovery = secp256k1.sign(msgHash, privateKey, {
|
|
84
|
+
prehash: false,
|
|
85
|
+
lowS: true,
|
|
86
|
+
format: "recovered",
|
|
87
|
+
});
|
|
88
|
+
const recoveryId = sigWithRecovery[0];
|
|
89
|
+
const rBytes = sigWithRecovery.slice(1, 33);
|
|
90
|
+
const sBytes = sigWithRecovery.slice(33, 65);
|
|
91
|
+
const prefix = btcAddress[0];
|
|
92
|
+
let headerBase;
|
|
93
|
+
if (prefix === "1" || prefix === "m" || prefix === "n") {
|
|
94
|
+
headerBase = BIP137_HEADER_BASE.P2PKH_COMPRESSED;
|
|
95
|
+
}
|
|
96
|
+
else if (prefix === "3" || prefix === "2") {
|
|
97
|
+
headerBase = BIP137_HEADER_BASE.P2SH_P2WPKH;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// bc1q (P2WPKH) or bc1p (P2TR) — both use the P2WPKH header per BIP-137 convention
|
|
101
|
+
headerBase = BIP137_HEADER_BASE.P2WPKH;
|
|
102
|
+
}
|
|
103
|
+
const bip137Sig = new Uint8Array(65);
|
|
104
|
+
bip137Sig[0] = headerBase + recoveryId;
|
|
105
|
+
bip137Sig.set(rBytes, 1);
|
|
106
|
+
bip137Sig.set(sBytes, 33);
|
|
107
|
+
return Buffer.from(bip137Sig).toString("base64");
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// Ledger API helpers
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
async function ledgerGet(path) {
|
|
113
|
+
const res = await fetch(`${LEDGER_BASE}${path}`);
|
|
114
|
+
if (!res.ok) {
|
|
115
|
+
const body = await res.text();
|
|
116
|
+
throw new Error(`Ledger API ${res.status}: ${body}`);
|
|
117
|
+
}
|
|
118
|
+
return res.json();
|
|
119
|
+
}
|
|
120
|
+
async function ledgerPost(path, body) {
|
|
121
|
+
const res = await fetch(`${LEDGER_BASE}${path}`, {
|
|
122
|
+
method: "POST",
|
|
123
|
+
headers: { "Content-Type": "application/json" },
|
|
124
|
+
body: JSON.stringify(body),
|
|
125
|
+
});
|
|
126
|
+
const data = await res.json();
|
|
127
|
+
if (!res.ok) {
|
|
128
|
+
throw new Error(`Ledger API ${res.status}: ${data.error ?? JSON.stringify(data)}`);
|
|
129
|
+
}
|
|
130
|
+
return data;
|
|
131
|
+
}
|
|
132
|
+
function getSignedAccount() {
|
|
133
|
+
const walletManager = getWalletManager();
|
|
134
|
+
const account = walletManager.getActiveAccount();
|
|
135
|
+
if (!account)
|
|
136
|
+
throw new Error("Wallet is not unlocked. Use wallet_unlock first.");
|
|
137
|
+
if (!account.btcAddress || !account.btcPrivateKey) {
|
|
138
|
+
throw new Error("Bitcoin keys not available. Unlock your wallet first.");
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
btcAddress: account.btcAddress,
|
|
142
|
+
address: account.address,
|
|
143
|
+
btcPrivateKey: ensureBytes(account.btcPrivateKey),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Build the authentication fields required for all ledger write operations.
|
|
148
|
+
* Message format: "ordinals-ledger | <type> | <btcAddress> | <inscriptionId> | <timestamp>"
|
|
149
|
+
*/
|
|
150
|
+
function buildAuthFields(type, inscriptionId, account) {
|
|
151
|
+
const timestamp = new Date().toISOString().replace(/\.\d{3}Z$/, ".000Z");
|
|
152
|
+
const message = `ordinals-ledger | ${type} | ${account.btcAddress} | ${inscriptionId} | ${timestamp}`;
|
|
153
|
+
const signature = signBip137(message, account.btcPrivateKey, account.btcAddress);
|
|
154
|
+
return {
|
|
155
|
+
from_agent: account.btcAddress,
|
|
156
|
+
from_stx_address: account.address,
|
|
157
|
+
signature,
|
|
158
|
+
timestamp,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
// Tool registration
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
export function registerOrdinalsP2PTools(server) {
|
|
165
|
+
// ==========================================================================
|
|
166
|
+
// ordinals_p2p_list_trades — public read
|
|
167
|
+
// ==========================================================================
|
|
168
|
+
server.registerTool("ordinals_p2p_list_trades", {
|
|
169
|
+
description: `Browse the public ordinals P2P trade ledger at ledger.drx4.xyz.
|
|
170
|
+
|
|
171
|
+
Returns a paginated list of trades with optional filters. Useful for discovering
|
|
172
|
+
open offers, reviewing recent activity, or searching for a specific inscription.
|
|
173
|
+
|
|
174
|
+
No wallet required.`,
|
|
175
|
+
inputSchema: {
|
|
176
|
+
status: z
|
|
177
|
+
.enum(["open", "completed", "cancelled", "countered"])
|
|
178
|
+
.optional()
|
|
179
|
+
.describe("Filter by trade status"),
|
|
180
|
+
agent: z
|
|
181
|
+
.string()
|
|
182
|
+
.optional()
|
|
183
|
+
.describe("Filter by agent BTC address"),
|
|
184
|
+
inscription_id: z
|
|
185
|
+
.string()
|
|
186
|
+
.optional()
|
|
187
|
+
.describe("Filter by inscription ID (txid + 'i' + index, e.g. abc123i0)"),
|
|
188
|
+
type: z
|
|
189
|
+
.enum(["offer", "counter", "transfer", "cancel", "psbt_swap"])
|
|
190
|
+
.optional()
|
|
191
|
+
.describe("Filter by trade type"),
|
|
192
|
+
limit: z
|
|
193
|
+
.number()
|
|
194
|
+
.int()
|
|
195
|
+
.positive()
|
|
196
|
+
.optional()
|
|
197
|
+
.default(50)
|
|
198
|
+
.describe("Results per page (default 50)"),
|
|
199
|
+
offset: z
|
|
200
|
+
.number()
|
|
201
|
+
.int()
|
|
202
|
+
.nonnegative()
|
|
203
|
+
.optional()
|
|
204
|
+
.default(0)
|
|
205
|
+
.describe("Pagination offset (default 0)"),
|
|
206
|
+
},
|
|
207
|
+
}, async ({ status, agent, inscription_id, type, limit, offset }) => {
|
|
208
|
+
try {
|
|
209
|
+
const params = new URLSearchParams();
|
|
210
|
+
if (status)
|
|
211
|
+
params.set("status", status);
|
|
212
|
+
if (agent)
|
|
213
|
+
params.set("agent", agent);
|
|
214
|
+
if (inscription_id)
|
|
215
|
+
params.set("inscription", inscription_id);
|
|
216
|
+
if (type)
|
|
217
|
+
params.set("type", type);
|
|
218
|
+
params.set("limit", String(limit ?? 50));
|
|
219
|
+
params.set("offset", String(offset ?? 0));
|
|
220
|
+
const data = await ledgerGet(`/api/trades?${params}`);
|
|
221
|
+
return createJsonResponse(data);
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
return createErrorResponse(error);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
// ==========================================================================
|
|
228
|
+
// ordinals_p2p_get_trade — public read
|
|
229
|
+
// ==========================================================================
|
|
230
|
+
server.registerTool("ordinals_p2p_get_trade", {
|
|
231
|
+
description: `Fetch full details for a single trade from the ordinals P2P ledger.
|
|
232
|
+
|
|
233
|
+
Returns the trade record including all counters, transfer history, and current status.
|
|
234
|
+
|
|
235
|
+
No wallet required.`,
|
|
236
|
+
inputSchema: {
|
|
237
|
+
trade_id: z
|
|
238
|
+
.number()
|
|
239
|
+
.int()
|
|
240
|
+
.positive()
|
|
241
|
+
.describe("Numeric trade ID"),
|
|
242
|
+
},
|
|
243
|
+
}, async ({ trade_id }) => {
|
|
244
|
+
try {
|
|
245
|
+
const data = await ledgerGet(`/api/trades/${trade_id}`);
|
|
246
|
+
return createJsonResponse(data);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
return createErrorResponse(error);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
// ==========================================================================
|
|
253
|
+
// ordinals_p2p_my_trades — requires wallet (to get BTC address)
|
|
254
|
+
// ==========================================================================
|
|
255
|
+
server.registerTool("ordinals_p2p_my_trades", {
|
|
256
|
+
description: `List all trades involving the active wallet's BTC address.
|
|
257
|
+
|
|
258
|
+
Queries the ledger for trades where the active wallet is either the buyer or seller.
|
|
259
|
+
Requires an unlocked wallet so the BTC address can be resolved automatically.
|
|
260
|
+
|
|
261
|
+
You can optionally filter by status.`,
|
|
262
|
+
inputSchema: {
|
|
263
|
+
status: z
|
|
264
|
+
.enum(["open", "completed", "cancelled", "countered"])
|
|
265
|
+
.optional()
|
|
266
|
+
.describe("Filter by trade status"),
|
|
267
|
+
limit: z
|
|
268
|
+
.number()
|
|
269
|
+
.int()
|
|
270
|
+
.positive()
|
|
271
|
+
.optional()
|
|
272
|
+
.default(50)
|
|
273
|
+
.describe("Results per page (default 50)"),
|
|
274
|
+
offset: z
|
|
275
|
+
.number()
|
|
276
|
+
.int()
|
|
277
|
+
.nonnegative()
|
|
278
|
+
.optional()
|
|
279
|
+
.default(0)
|
|
280
|
+
.describe("Pagination offset (default 0)"),
|
|
281
|
+
},
|
|
282
|
+
}, async ({ status, limit, offset }) => {
|
|
283
|
+
try {
|
|
284
|
+
const walletManager = getWalletManager();
|
|
285
|
+
const account = walletManager.getActiveAccount();
|
|
286
|
+
if (!account)
|
|
287
|
+
throw new Error("Wallet is not unlocked. Use wallet_unlock first.");
|
|
288
|
+
if (!account.btcAddress)
|
|
289
|
+
throw new Error("Bitcoin address not available.");
|
|
290
|
+
const btcAddress = account.btcAddress;
|
|
291
|
+
const params = new URLSearchParams();
|
|
292
|
+
params.set("agent", btcAddress);
|
|
293
|
+
if (status)
|
|
294
|
+
params.set("status", status);
|
|
295
|
+
params.set("limit", String(limit ?? 50));
|
|
296
|
+
params.set("offset", String(offset ?? 0));
|
|
297
|
+
const data = await ledgerGet(`/api/trades?${params}`);
|
|
298
|
+
return createJsonResponse({
|
|
299
|
+
btcAddress,
|
|
300
|
+
...data,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
return createErrorResponse(error);
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
// ==========================================================================
|
|
308
|
+
// ordinals_p2p_agents — public read
|
|
309
|
+
// ==========================================================================
|
|
310
|
+
server.registerTool("ordinals_p2p_agents", {
|
|
311
|
+
description: `List active agents registered on the ordinals P2P trade ledger.
|
|
312
|
+
|
|
313
|
+
Returns agents that have participated in trades, along with their trade counts
|
|
314
|
+
and last activity. Useful for discovering counterparties.
|
|
315
|
+
|
|
316
|
+
No wallet required.`,
|
|
317
|
+
inputSchema: {
|
|
318
|
+
limit: z
|
|
319
|
+
.number()
|
|
320
|
+
.int()
|
|
321
|
+
.positive()
|
|
322
|
+
.optional()
|
|
323
|
+
.default(50)
|
|
324
|
+
.describe("Results per page (default 50)"),
|
|
325
|
+
},
|
|
326
|
+
}, async ({ limit }) => {
|
|
327
|
+
try {
|
|
328
|
+
const data = await ledgerGet(`/api/agents?limit=${limit ?? 50}`);
|
|
329
|
+
return createJsonResponse(data);
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
return createErrorResponse(error);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
// ==========================================================================
|
|
336
|
+
// ordinals_p2p_create_offer — requires wallet (BIP-137 signed)
|
|
337
|
+
// ==========================================================================
|
|
338
|
+
server.registerTool("ordinals_p2p_create_offer", {
|
|
339
|
+
description: `List an inscription for sale on the P2P trade ledger.
|
|
340
|
+
|
|
341
|
+
Creates a new offer entry authenticated with a BIP-137 signature from the active
|
|
342
|
+
wallet's BTC address. The inscription must be in the wallet or otherwise owned
|
|
343
|
+
by the signing address for the trade to be verifiable by counterparties.
|
|
344
|
+
|
|
345
|
+
Requires an unlocked wallet with Bitcoin keys.`,
|
|
346
|
+
inputSchema: {
|
|
347
|
+
inscription_id: z
|
|
348
|
+
.string()
|
|
349
|
+
.describe("Inscription ID in txid+index format, e.g. abc123...i0"),
|
|
350
|
+
asking_price_sats: z
|
|
351
|
+
.number()
|
|
352
|
+
.int()
|
|
353
|
+
.positive()
|
|
354
|
+
.optional()
|
|
355
|
+
.describe("Asking price in satoshis (omit for open price negotiation)"),
|
|
356
|
+
to_agent: z
|
|
357
|
+
.string()
|
|
358
|
+
.optional()
|
|
359
|
+
.describe("Target buyer BTC address (omit for public listing)"),
|
|
360
|
+
metadata: z
|
|
361
|
+
.string()
|
|
362
|
+
.optional()
|
|
363
|
+
.describe("Optional freeform metadata (e.g. description, terms)"),
|
|
364
|
+
},
|
|
365
|
+
}, async ({ inscription_id, asking_price_sats, to_agent, metadata }) => {
|
|
366
|
+
try {
|
|
367
|
+
if (inscription_id && !/^[0-9a-f]{64}i\d+$/.test(inscription_id)) {
|
|
368
|
+
throw new Error("inscription_id must be in format: <64-char-hex-txid>i<index> e.g. abc123...i0");
|
|
369
|
+
}
|
|
370
|
+
const account = getSignedAccount();
|
|
371
|
+
const auth = buildAuthFields("offer", inscription_id, account);
|
|
372
|
+
const body = {
|
|
373
|
+
type: "offer",
|
|
374
|
+
...auth,
|
|
375
|
+
inscription_id,
|
|
376
|
+
};
|
|
377
|
+
if (asking_price_sats !== undefined)
|
|
378
|
+
body.amount_sats = asking_price_sats;
|
|
379
|
+
if (to_agent)
|
|
380
|
+
body.to_agent = to_agent;
|
|
381
|
+
if (metadata)
|
|
382
|
+
body.metadata = metadata;
|
|
383
|
+
const data = await ledgerPost("/api/trades", body);
|
|
384
|
+
return createJsonResponse({ success: true, ...data });
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
return createErrorResponse(error);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
// ==========================================================================
|
|
391
|
+
// ordinals_p2p_counter — requires wallet (BIP-137 signed)
|
|
392
|
+
// ==========================================================================
|
|
393
|
+
server.registerTool("ordinals_p2p_counter", {
|
|
394
|
+
description: `Counter an existing offer with a new proposed price.
|
|
395
|
+
|
|
396
|
+
Submits a counter-offer linked to a parent trade. The active wallet signs the
|
|
397
|
+
counter with BIP-137 to prove identity. Either party in a trade may counter.
|
|
398
|
+
|
|
399
|
+
Requires an unlocked wallet with Bitcoin keys.`,
|
|
400
|
+
inputSchema: {
|
|
401
|
+
parent_trade_id: z
|
|
402
|
+
.number()
|
|
403
|
+
.int()
|
|
404
|
+
.positive()
|
|
405
|
+
.describe("ID of the trade being countered"),
|
|
406
|
+
inscription_id: z
|
|
407
|
+
.string()
|
|
408
|
+
.describe("Inscription ID (must match the parent trade)"),
|
|
409
|
+
amount_sats: z
|
|
410
|
+
.number()
|
|
411
|
+
.int()
|
|
412
|
+
.positive()
|
|
413
|
+
.describe("Counter-offer price in satoshis"),
|
|
414
|
+
metadata: z
|
|
415
|
+
.string()
|
|
416
|
+
.optional()
|
|
417
|
+
.describe("Optional freeform metadata"),
|
|
418
|
+
},
|
|
419
|
+
}, async ({ parent_trade_id, inscription_id, amount_sats, metadata }) => {
|
|
420
|
+
try {
|
|
421
|
+
if (inscription_id && !/^[0-9a-f]{64}i\d+$/.test(inscription_id)) {
|
|
422
|
+
throw new Error("inscription_id must be in format: <64-char-hex-txid>i<index> e.g. abc123...i0");
|
|
423
|
+
}
|
|
424
|
+
const account = getSignedAccount();
|
|
425
|
+
const auth = buildAuthFields("counter", inscription_id, account);
|
|
426
|
+
const body = {
|
|
427
|
+
type: "counter",
|
|
428
|
+
...auth,
|
|
429
|
+
inscription_id,
|
|
430
|
+
parent_trade_id,
|
|
431
|
+
amount_sats,
|
|
432
|
+
};
|
|
433
|
+
if (metadata)
|
|
434
|
+
body.metadata = metadata;
|
|
435
|
+
const data = await ledgerPost("/api/trades", body);
|
|
436
|
+
return createJsonResponse({ success: true, ...data });
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
return createErrorResponse(error);
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
// ==========================================================================
|
|
443
|
+
// ordinals_p2p_transfer — requires wallet (BIP-137 signed)
|
|
444
|
+
// ==========================================================================
|
|
445
|
+
server.registerTool("ordinals_p2p_transfer", {
|
|
446
|
+
description: `Record a completed inscription transfer on the trade ledger.
|
|
447
|
+
|
|
448
|
+
Marks a trade as closed by recording the on-chain (or off-chain sBTC) transfer.
|
|
449
|
+
The active wallet signs the record with BIP-137 to prove the transfer was
|
|
450
|
+
authorized by the sending party.
|
|
451
|
+
|
|
452
|
+
Requires an unlocked wallet with Bitcoin keys.`,
|
|
453
|
+
inputSchema: {
|
|
454
|
+
inscription_id: z
|
|
455
|
+
.string()
|
|
456
|
+
.describe("Inscription ID being transferred"),
|
|
457
|
+
to_agent: z
|
|
458
|
+
.string()
|
|
459
|
+
.describe("Recipient BTC address"),
|
|
460
|
+
tx_hash: z
|
|
461
|
+
.string()
|
|
462
|
+
.optional()
|
|
463
|
+
.describe("On-chain transaction hash (optional for sBTC/off-chain transfers)"),
|
|
464
|
+
parent_trade_id: z
|
|
465
|
+
.number()
|
|
466
|
+
.int()
|
|
467
|
+
.positive()
|
|
468
|
+
.optional()
|
|
469
|
+
.describe("Parent trade ID being fulfilled (if closing an open offer)"),
|
|
470
|
+
amount_sats: z
|
|
471
|
+
.number()
|
|
472
|
+
.int()
|
|
473
|
+
.positive()
|
|
474
|
+
.optional()
|
|
475
|
+
.describe("Transfer amount in satoshis"),
|
|
476
|
+
metadata: z
|
|
477
|
+
.string()
|
|
478
|
+
.optional()
|
|
479
|
+
.describe("Optional freeform metadata"),
|
|
480
|
+
},
|
|
481
|
+
}, async ({ inscription_id, to_agent, tx_hash, parent_trade_id, amount_sats, metadata }) => {
|
|
482
|
+
try {
|
|
483
|
+
if (!/^[0-9a-f]{64}i\d+$/.test(inscription_id)) {
|
|
484
|
+
throw new Error("inscription_id must be in format: <64-char-hex-txid>i<index> e.g. abc123...i0");
|
|
485
|
+
}
|
|
486
|
+
const account = getSignedAccount();
|
|
487
|
+
const auth = buildAuthFields("transfer", inscription_id, account);
|
|
488
|
+
const body = {
|
|
489
|
+
type: "transfer",
|
|
490
|
+
...auth,
|
|
491
|
+
inscription_id,
|
|
492
|
+
to_agent,
|
|
493
|
+
};
|
|
494
|
+
if (tx_hash)
|
|
495
|
+
body.tx_hash = tx_hash;
|
|
496
|
+
if (parent_trade_id !== undefined)
|
|
497
|
+
body.parent_trade_id = parent_trade_id;
|
|
498
|
+
if (amount_sats !== undefined)
|
|
499
|
+
body.amount_sats = amount_sats;
|
|
500
|
+
if (metadata)
|
|
501
|
+
body.metadata = metadata;
|
|
502
|
+
const data = await ledgerPost("/api/trades", body);
|
|
503
|
+
return createJsonResponse({ success: true, ...data });
|
|
504
|
+
}
|
|
505
|
+
catch (error) {
|
|
506
|
+
return createErrorResponse(error);
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
// ==========================================================================
|
|
510
|
+
// ordinals_p2p_cancel — requires wallet (BIP-137 signed)
|
|
511
|
+
// ==========================================================================
|
|
512
|
+
server.registerTool("ordinals_p2p_cancel", {
|
|
513
|
+
description: `Cancel an open offer or counter on the trade ledger.
|
|
514
|
+
|
|
515
|
+
Only the parties involved in a trade may cancel it. The active wallet signs
|
|
516
|
+
the cancellation with BIP-137 to prove authorization.
|
|
517
|
+
|
|
518
|
+
Requires an unlocked wallet with Bitcoin keys.`,
|
|
519
|
+
inputSchema: {
|
|
520
|
+
parent_trade_id: z
|
|
521
|
+
.number()
|
|
522
|
+
.int()
|
|
523
|
+
.positive()
|
|
524
|
+
.describe("Trade ID to cancel"),
|
|
525
|
+
inscription_id: z
|
|
526
|
+
.string()
|
|
527
|
+
.describe("Inscription ID (must match the trade being cancelled)"),
|
|
528
|
+
metadata: z
|
|
529
|
+
.string()
|
|
530
|
+
.optional()
|
|
531
|
+
.describe("Optional reason or metadata"),
|
|
532
|
+
},
|
|
533
|
+
}, async ({ parent_trade_id, inscription_id, metadata }) => {
|
|
534
|
+
try {
|
|
535
|
+
if (!/^[0-9a-f]{64}i\d+$/.test(inscription_id)) {
|
|
536
|
+
throw new Error("inscription_id must be in format: <64-char-hex-txid>i<index> e.g. abc123...i0");
|
|
537
|
+
}
|
|
538
|
+
const account = getSignedAccount();
|
|
539
|
+
const auth = buildAuthFields("cancel", inscription_id, account);
|
|
540
|
+
const body = {
|
|
541
|
+
type: "cancel",
|
|
542
|
+
...auth,
|
|
543
|
+
inscription_id,
|
|
544
|
+
parent_trade_id,
|
|
545
|
+
};
|
|
546
|
+
if (metadata)
|
|
547
|
+
body.metadata = metadata;
|
|
548
|
+
const data = await ledgerPost("/api/trades", body);
|
|
549
|
+
return createJsonResponse({ success: true, ...data });
|
|
550
|
+
}
|
|
551
|
+
catch (error) {
|
|
552
|
+
return createErrorResponse(error);
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
// ==========================================================================
|
|
556
|
+
// ordinals_p2p_psbt_swap — requires wallet (BIP-137 signed)
|
|
557
|
+
// ==========================================================================
|
|
558
|
+
server.registerTool("ordinals_p2p_psbt_swap", {
|
|
559
|
+
description: `Record a completed PSBT atomic swap on the trade ledger.
|
|
560
|
+
|
|
561
|
+
After both parties have signed a PSBT and the transaction is broadcast, use this
|
|
562
|
+
tool to record the completed swap. The active wallet signs the record with BIP-137.
|
|
563
|
+
|
|
564
|
+
To construct and sign the PSBT itself, use psbt_create_ordinal_buy, psbt_sign,
|
|
565
|
+
and psbt_broadcast first, then call this tool with the resulting txid.
|
|
566
|
+
|
|
567
|
+
Requires an unlocked wallet with Bitcoin keys.`,
|
|
568
|
+
inputSchema: {
|
|
569
|
+
inscription_id: z
|
|
570
|
+
.string()
|
|
571
|
+
.describe("Inscription ID swapped"),
|
|
572
|
+
to_agent: z
|
|
573
|
+
.string()
|
|
574
|
+
.describe("Counterparty BTC address (new owner of the inscription)"),
|
|
575
|
+
amount_sats: z
|
|
576
|
+
.number()
|
|
577
|
+
.int()
|
|
578
|
+
.positive()
|
|
579
|
+
.describe("Swap amount in satoshis"),
|
|
580
|
+
tx_hash: z
|
|
581
|
+
.string()
|
|
582
|
+
.describe("Broadcast atomic swap transaction hash"),
|
|
583
|
+
parent_trade_id: z
|
|
584
|
+
.number()
|
|
585
|
+
.int()
|
|
586
|
+
.positive()
|
|
587
|
+
.optional()
|
|
588
|
+
.describe("Parent trade ID being fulfilled (if closing an existing offer)"),
|
|
589
|
+
metadata: z
|
|
590
|
+
.string()
|
|
591
|
+
.optional()
|
|
592
|
+
.describe("Optional freeform metadata"),
|
|
593
|
+
},
|
|
594
|
+
}, async ({ inscription_id, to_agent, amount_sats, tx_hash, parent_trade_id, metadata }) => {
|
|
595
|
+
try {
|
|
596
|
+
if (!/^[0-9a-f]{64}i\d+$/.test(inscription_id)) {
|
|
597
|
+
throw new Error("inscription_id must be in format: <64-char-hex-txid>i<index> e.g. abc123...i0");
|
|
598
|
+
}
|
|
599
|
+
const account = getSignedAccount();
|
|
600
|
+
const auth = buildAuthFields("psbt_swap", inscription_id, account);
|
|
601
|
+
const body = {
|
|
602
|
+
type: "psbt_swap",
|
|
603
|
+
...auth,
|
|
604
|
+
inscription_id,
|
|
605
|
+
to_agent,
|
|
606
|
+
amount_sats,
|
|
607
|
+
tx_hash,
|
|
608
|
+
};
|
|
609
|
+
if (parent_trade_id !== undefined)
|
|
610
|
+
body.parent_trade_id = parent_trade_id;
|
|
611
|
+
if (metadata)
|
|
612
|
+
body.metadata = metadata;
|
|
613
|
+
const data = await ledgerPost("/api/trades", body);
|
|
614
|
+
return createJsonResponse({ success: true, ...data });
|
|
615
|
+
}
|
|
616
|
+
catch (error) {
|
|
617
|
+
return createErrorResponse(error);
|
|
618
|
+
}
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
//# sourceMappingURL=ordinals-p2p.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinals-p2p.tools.js","sourceRoot":"","sources":["../../src/tools/ordinals-p2p.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-diagnostic.tools.d.ts","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"relay-diagnostic.tools.d.ts","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8HpE"}
|