@aibtc/mcp-server 1.7.0 → 1.13.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 +84 -9
- package/dist/config/bitcoin-constants.d.ts +32 -0
- package/dist/config/bitcoin-constants.d.ts.map +1 -0
- package/dist/config/bitcoin-constants.js +32 -0
- package/dist/config/bitcoin-constants.js.map +1 -0
- package/dist/config/contracts.d.ts +12 -3
- package/dist/config/contracts.d.ts.map +1 -1
- package/dist/config/contracts.js +7 -1
- package/dist/config/contracts.js.map +1 -1
- package/dist/endpoints/registry.d.ts +3 -3
- package/dist/endpoints/registry.d.ts.map +1 -1
- package/dist/endpoints/registry.js +187 -3
- package/dist/endpoints/registry.js.map +1 -1
- package/dist/services/bitflow.service.d.ts +2 -1
- package/dist/services/bitflow.service.d.ts.map +1 -1
- package/dist/services/bitflow.service.js +3 -1
- package/dist/services/bitflow.service.js.map +1 -1
- package/dist/services/bns.service.d.ts +21 -5
- package/dist/services/bns.service.d.ts.map +1 -1
- package/dist/services/bns.service.js +145 -51
- package/dist/services/bns.service.js.map +1 -1
- package/dist/services/defi.service.d.ts +16 -6
- package/dist/services/defi.service.d.ts.map +1 -1
- package/dist/services/defi.service.js +99 -27
- package/dist/services/defi.service.js.map +1 -1
- package/dist/services/hiro-api.d.ts +26 -0
- package/dist/services/hiro-api.d.ts.map +1 -1
- package/dist/services/hiro-api.js +8 -0
- package/dist/services/hiro-api.js.map +1 -1
- package/dist/services/inscription-parser.d.ts +122 -0
- package/dist/services/inscription-parser.d.ts.map +1 -0
- package/dist/services/inscription-parser.js +163 -0
- package/dist/services/inscription-parser.js.map +1 -0
- package/dist/services/nft.service.d.ts +2 -1
- package/dist/services/nft.service.d.ts.map +1 -1
- package/dist/services/nft.service.js +3 -1
- package/dist/services/nft.service.js.map +1 -1
- package/dist/services/ordinal-indexer.d.ts +128 -0
- package/dist/services/ordinal-indexer.d.ts.map +1 -0
- package/dist/services/ordinal-indexer.js +128 -0
- package/dist/services/ordinal-indexer.js.map +1 -0
- package/dist/services/sbtc.service.d.ts +2 -1
- package/dist/services/sbtc.service.d.ts.map +1 -1
- package/dist/services/sbtc.service.js +3 -1
- package/dist/services/sbtc.service.js.map +1 -1
- package/dist/services/tokens.service.d.ts +2 -1
- package/dist/services/tokens.service.d.ts.map +1 -1
- package/dist/services/tokens.service.js +3 -1
- package/dist/services/tokens.service.js.map +1 -1
- package/dist/services/wallet-manager.d.ts +20 -12
- package/dist/services/wallet-manager.d.ts.map +1 -1
- package/dist/services/wallet-manager.js +41 -62
- package/dist/services/wallet-manager.js.map +1 -1
- package/dist/tools/bitcoin.tools.d.ts.map +1 -1
- package/dist/tools/bitcoin.tools.js +214 -34
- package/dist/tools/bitcoin.tools.js.map +1 -1
- package/dist/tools/bitflow.tools.d.ts.map +1 -1
- package/dist/tools/bitflow.tools.js +8 -3
- package/dist/tools/bitflow.tools.js.map +1 -1
- package/dist/tools/bns.tools.d.ts.map +1 -1
- package/dist/tools/bns.tools.js +87 -7
- package/dist/tools/bns.tools.js.map +1 -1
- package/dist/tools/contract.tools.d.ts.map +1 -1
- package/dist/tools/contract.tools.js +19 -4
- package/dist/tools/contract.tools.js.map +1 -1
- package/dist/tools/defi.tools.d.ts.map +1 -1
- package/dist/tools/defi.tools.js +43 -0
- package/dist/tools/defi.tools.js.map +1 -1
- package/dist/tools/index.d.ts +8 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +49 -32
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/nft.tools.d.ts.map +1 -1
- package/dist/tools/nft.tools.js +8 -3
- package/dist/tools/nft.tools.js.map +1 -1
- package/dist/tools/ordinals.tools.d.ts +15 -0
- package/dist/tools/ordinals.tools.d.ts.map +1 -0
- package/dist/tools/ordinals.tools.js +401 -0
- package/dist/tools/ordinals.tools.js.map +1 -0
- package/dist/tools/query.tools.d.ts.map +1 -1
- package/dist/tools/query.tools.js +71 -0
- package/dist/tools/query.tools.js.map +1 -1
- package/dist/tools/sbtc.tools.d.ts.map +1 -1
- package/dist/tools/sbtc.tools.js +8 -3
- package/dist/tools/sbtc.tools.js.map +1 -1
- package/dist/tools/signing.tools.d.ts +25 -0
- package/dist/tools/signing.tools.d.ts.map +1 -0
- package/dist/tools/signing.tools.js +776 -0
- package/dist/tools/signing.tools.js.map +1 -0
- package/dist/tools/tokens.tools.d.ts.map +1 -1
- package/dist/tools/tokens.tools.js +8 -3
- package/dist/tools/tokens.tools.js.map +1 -1
- package/dist/tools/transfer.tools.d.ts.map +1 -1
- package/dist/tools/transfer.tools.js +8 -3
- package/dist/tools/transfer.tools.js.map +1 -1
- package/dist/tools/wallet-management.tools.d.ts.map +1 -1
- package/dist/tools/wallet-management.tools.js +36 -11
- package/dist/tools/wallet-management.tools.js.map +1 -1
- package/dist/tools/wallet.tools.d.ts.map +1 -1
- package/dist/tools/wallet.tools.js +23 -8
- package/dist/tools/wallet.tools.js.map +1 -1
- package/dist/tools/yield-hunter.tools.d.ts.map +1 -1
- package/dist/tools/yield-hunter.tools.js +53 -48
- package/dist/tools/yield-hunter.tools.js.map +1 -1
- package/dist/transactions/bitcoin-builder.d.ts.map +1 -1
- package/dist/transactions/bitcoin-builder.js +1 -16
- package/dist/transactions/bitcoin-builder.js.map +1 -1
- package/dist/transactions/builder.d.ts +9 -5
- package/dist/transactions/builder.d.ts.map +1 -1
- package/dist/transactions/builder.js +8 -2
- package/dist/transactions/builder.js.map +1 -1
- package/dist/transactions/inscription-builder.d.ts +183 -0
- package/dist/transactions/inscription-builder.d.ts.map +1 -0
- package/dist/transactions/inscription-builder.js +230 -0
- package/dist/transactions/inscription-builder.js.map +1 -0
- package/dist/utils/bitcoin.d.ts +38 -0
- package/dist/utils/bitcoin.d.ts.map +1 -1
- package/dist/utils/bitcoin.js +59 -0
- package/dist/utils/bitcoin.js.map +1 -1
- package/dist/utils/fee.d.ts +41 -0
- package/dist/utils/fee.d.ts.map +1 -0
- package/dist/utils/fee.js +69 -0
- package/dist/utils/fee.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/storage.d.ts +12 -4
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/tokens.d.ts +13 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +24 -0
- package/dist/utils/tokens.js.map +1 -0
- package/dist/yield-hunter/index.d.ts.map +1 -1
- package/dist/yield-hunter/index.js +10 -15
- package/dist/yield-hunter/index.js.map +1 -1
- package/package.json +7 -3
- package/skill/README.md +108 -0
- package/skill/SKILL.md +187 -0
- package/skill/references/pillar-wallet.md +213 -0
- package/skill/references/stacks-defi.md +258 -0
- package/skill/references/troubleshooting.md +211 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordinals tools
|
|
3
|
+
*
|
|
4
|
+
* These tools provide Bitcoin ordinals operations:
|
|
5
|
+
* - get_inscription: Fetch and parse inscription content from a reveal transaction
|
|
6
|
+
* - inscribe: Create a new inscription (broadcasts commit tx, returns immediately)
|
|
7
|
+
* - inscribe_reveal: Complete inscription by broadcasting reveal tx after commit confirms
|
|
8
|
+
* - estimate_inscription_fee: Calculate total cost for an inscription
|
|
9
|
+
* - get_taproot_address: Get wallet's Taproot address for receiving inscriptions
|
|
10
|
+
*
|
|
11
|
+
* Uses micro-ordinals library to parse and create inscriptions.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import { NETWORK } from "../config/networks.js";
|
|
15
|
+
import { P2WPKH_INPUT_VBYTES, P2WPKH_OUTPUT_VBYTES, P2TR_OUTPUT_VBYTES, TX_OVERHEAD_VBYTES, DUST_THRESHOLD, P2TR_INPUT_BASE_VBYTES, } from "../config/bitcoin-constants.js";
|
|
16
|
+
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
17
|
+
import { InscriptionParser, } from "../services/inscription-parser.js";
|
|
18
|
+
import { MempoolApi, getMempoolTxUrl } from "../services/mempool-api.js";
|
|
19
|
+
import { getWalletManager } from "../services/wallet-manager.js";
|
|
20
|
+
import { buildCommitTransaction, buildRevealTransaction, } from "../transactions/inscription-builder.js";
|
|
21
|
+
import { signBtcTransaction } from "../transactions/bitcoin-builder.js";
|
|
22
|
+
/**
|
|
23
|
+
* Format inscription data for display
|
|
24
|
+
*/
|
|
25
|
+
function formatInscription(inscription, index) {
|
|
26
|
+
return {
|
|
27
|
+
index,
|
|
28
|
+
contentType: inscription.contentType || "unknown",
|
|
29
|
+
size: inscription.body.length,
|
|
30
|
+
bodyBase64: inscription.bodyBase64,
|
|
31
|
+
bodyText: inscription.bodyText && inscription.bodyText.length <= 1000
|
|
32
|
+
? inscription.bodyText
|
|
33
|
+
: inscription.bodyText
|
|
34
|
+
? `${inscription.bodyText.slice(0, 1000)}... (truncated)`
|
|
35
|
+
: undefined,
|
|
36
|
+
cursed: inscription.cursed || false,
|
|
37
|
+
metadata: {
|
|
38
|
+
pointer: inscription.pointer?.toString(),
|
|
39
|
+
metaprotocol: inscription.metaprotocol,
|
|
40
|
+
contentEncoding: inscription.contentEncoding,
|
|
41
|
+
rune: inscription.rune?.toString(),
|
|
42
|
+
note: inscription.note,
|
|
43
|
+
hasMetadata: !!inscription.metadata,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function registerOrdinalsTools(server) {
|
|
48
|
+
// Get Taproot address for receiving inscriptions
|
|
49
|
+
server.registerTool("get_taproot_address", {
|
|
50
|
+
description: "Get the wallet's Taproot (P2TR) address for receiving inscriptions. " +
|
|
51
|
+
"This address follows BIP86 derivation (m/86'/0'/0'/0/0) and uses bc1p... (mainnet) or tb1p... (testnet) prefix.",
|
|
52
|
+
}, async () => {
|
|
53
|
+
try {
|
|
54
|
+
const walletManager = getWalletManager();
|
|
55
|
+
const sessionInfo = walletManager.getSessionInfo();
|
|
56
|
+
if (!sessionInfo?.taprootAddress) {
|
|
57
|
+
return createErrorResponse(new Error("Wallet not unlocked or doesn't have a Taproot address. Use wallet_unlock first."));
|
|
58
|
+
}
|
|
59
|
+
return createJsonResponse({
|
|
60
|
+
address: sessionInfo.taprootAddress,
|
|
61
|
+
network: NETWORK,
|
|
62
|
+
purpose: "receive_inscriptions",
|
|
63
|
+
derivationPath: NETWORK === "mainnet" ? "m/86'/0'/0'/0/0" : "m/86'/1'/0'/0/0",
|
|
64
|
+
note: "Use this address to receive inscriptions created by the inscribe tool",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return createErrorResponse(error);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
// Estimate inscription fee
|
|
72
|
+
server.registerTool("estimate_inscription_fee", {
|
|
73
|
+
description: "Calculate the total cost (in satoshis) for creating an inscription. " +
|
|
74
|
+
"Returns breakdown of commit fee, reveal fee, and total cost. " +
|
|
75
|
+
"Content should be provided as base64-encoded string.",
|
|
76
|
+
inputSchema: {
|
|
77
|
+
contentType: z
|
|
78
|
+
.string()
|
|
79
|
+
.describe("MIME type (e.g., 'text/plain', 'image/png')"),
|
|
80
|
+
contentBase64: z
|
|
81
|
+
.string()
|
|
82
|
+
.describe("Content as base64-encoded string"),
|
|
83
|
+
feeRate: z
|
|
84
|
+
.number()
|
|
85
|
+
.positive()
|
|
86
|
+
.optional()
|
|
87
|
+
.describe("Fee rate in sat/vB (optional, defaults to current medium fee)"),
|
|
88
|
+
},
|
|
89
|
+
}, async ({ contentType, contentBase64, feeRate }) => {
|
|
90
|
+
try {
|
|
91
|
+
// Decode base64 content
|
|
92
|
+
const body = Buffer.from(contentBase64, "base64");
|
|
93
|
+
// Get current fee estimate if not provided
|
|
94
|
+
let actualFeeRate = feeRate;
|
|
95
|
+
if (!actualFeeRate) {
|
|
96
|
+
const mempoolApi = new MempoolApi(NETWORK);
|
|
97
|
+
const fees = await mempoolApi.getFeeEstimates();
|
|
98
|
+
actualFeeRate = fees.halfHourFee;
|
|
99
|
+
}
|
|
100
|
+
// Commit tx size (assuming 1-2 inputs for simplicity)
|
|
101
|
+
const commitInputs = 2;
|
|
102
|
+
const commitSize = TX_OVERHEAD_VBYTES +
|
|
103
|
+
commitInputs * P2WPKH_INPUT_VBYTES +
|
|
104
|
+
P2TR_OUTPUT_VBYTES +
|
|
105
|
+
P2WPKH_OUTPUT_VBYTES;
|
|
106
|
+
const commitFee = Math.ceil(commitSize * actualFeeRate);
|
|
107
|
+
// Reveal tx size (1 input with inscription witness + 1 output)
|
|
108
|
+
// Include overhead for control block, script, and protocol framing
|
|
109
|
+
const WITNESS_OVERHEAD_VBYTES = 80;
|
|
110
|
+
const revealWitnessSize = Math.ceil((body.length / 4) * 1.25) + WITNESS_OVERHEAD_VBYTES;
|
|
111
|
+
const revealSize = TX_OVERHEAD_VBYTES +
|
|
112
|
+
P2TR_INPUT_BASE_VBYTES +
|
|
113
|
+
revealWitnessSize +
|
|
114
|
+
P2TR_OUTPUT_VBYTES;
|
|
115
|
+
const revealFee = Math.ceil(revealSize * actualFeeRate);
|
|
116
|
+
// Amount locked in reveal output
|
|
117
|
+
const revealAmount = revealFee + DUST_THRESHOLD + 1000;
|
|
118
|
+
// Total cost
|
|
119
|
+
const totalCost = commitFee + revealAmount;
|
|
120
|
+
return createJsonResponse({
|
|
121
|
+
contentType,
|
|
122
|
+
contentSize: body.length,
|
|
123
|
+
feeRate: actualFeeRate,
|
|
124
|
+
fees: {
|
|
125
|
+
commitFee,
|
|
126
|
+
revealFee,
|
|
127
|
+
revealAmount,
|
|
128
|
+
totalCost,
|
|
129
|
+
},
|
|
130
|
+
breakdown: `Commit tx: ${commitFee} sats | Reveal amount: ${revealAmount} sats (includes ${revealFee} reveal fee) | Total: ${totalCost} sats`,
|
|
131
|
+
note: "This is an estimate. Actual fees may vary based on UTXO selection.",
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
return createErrorResponse(error);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Create inscription - Step 1: Commit (non-blocking)
|
|
139
|
+
server.registerTool("inscribe", {
|
|
140
|
+
description: "Create a Bitcoin inscription - STEP 1: Broadcast commit transaction.\n\n" +
|
|
141
|
+
"This tool broadcasts the commit tx and returns immediately. It does NOT wait for confirmation.\n\n" +
|
|
142
|
+
"After the commit confirms (typically 10-60 min), use `inscribe_reveal` with the same " +
|
|
143
|
+
"contentType and contentBase64 to complete the inscription.\n\n" +
|
|
144
|
+
"Returns: commitTxid, revealAddress, revealAmount, and feeRate (save these for inscribe_reveal)",
|
|
145
|
+
inputSchema: {
|
|
146
|
+
contentType: z
|
|
147
|
+
.string()
|
|
148
|
+
.describe("MIME type (e.g., 'text/plain', 'image/png', 'text/html')"),
|
|
149
|
+
contentBase64: z
|
|
150
|
+
.string()
|
|
151
|
+
.describe("Content as base64-encoded string"),
|
|
152
|
+
feeRate: z
|
|
153
|
+
.union([z.enum(["fast", "medium", "slow"]), z.number().positive()])
|
|
154
|
+
.optional()
|
|
155
|
+
.describe("Fee rate: 'fast' (~10 min), 'medium' (~30 min), 'slow' (~1 hr), or number in sat/vB (default: medium)"),
|
|
156
|
+
},
|
|
157
|
+
}, async ({ contentType, contentBase64, feeRate }) => {
|
|
158
|
+
try {
|
|
159
|
+
// Check wallet session
|
|
160
|
+
const walletManager = getWalletManager();
|
|
161
|
+
const sessionInfo = walletManager.getSessionInfo();
|
|
162
|
+
if (!sessionInfo) {
|
|
163
|
+
return createErrorResponse(new Error("Wallet not unlocked. Use wallet_unlock first."));
|
|
164
|
+
}
|
|
165
|
+
if (!sessionInfo.btcAddress || !sessionInfo.taprootAddress) {
|
|
166
|
+
return createErrorResponse(new Error("Wallet doesn't have Bitcoin addresses. Use a managed wallet."));
|
|
167
|
+
}
|
|
168
|
+
// Get account with keys
|
|
169
|
+
const account = walletManager.getAccount();
|
|
170
|
+
if (!account || !account.btcPrivateKey || !account.btcPublicKey) {
|
|
171
|
+
return createErrorResponse(new Error("Bitcoin keys not available. Wallet may not be unlocked."));
|
|
172
|
+
}
|
|
173
|
+
// Decode content
|
|
174
|
+
const body = Buffer.from(contentBase64, "base64");
|
|
175
|
+
const inscription = {
|
|
176
|
+
contentType,
|
|
177
|
+
body,
|
|
178
|
+
};
|
|
179
|
+
// Get fee rate
|
|
180
|
+
const mempoolApi = new MempoolApi(NETWORK);
|
|
181
|
+
let actualFeeRate;
|
|
182
|
+
if (typeof feeRate === "string") {
|
|
183
|
+
const fees = await mempoolApi.getFeeEstimates();
|
|
184
|
+
switch (feeRate) {
|
|
185
|
+
case "fast":
|
|
186
|
+
actualFeeRate = fees.fastestFee;
|
|
187
|
+
break;
|
|
188
|
+
case "slow":
|
|
189
|
+
actualFeeRate = fees.hourFee;
|
|
190
|
+
break;
|
|
191
|
+
default:
|
|
192
|
+
actualFeeRate = fees.halfHourFee;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
actualFeeRate = feeRate || (await mempoolApi.getFeeEstimates()).halfHourFee;
|
|
197
|
+
}
|
|
198
|
+
// Get UTXOs for funding
|
|
199
|
+
const utxos = await mempoolApi.getUtxos(sessionInfo.btcAddress);
|
|
200
|
+
if (utxos.length === 0) {
|
|
201
|
+
return createErrorResponse(new Error(`No UTXOs available for address ${sessionInfo.btcAddress}. Send some BTC first.`));
|
|
202
|
+
}
|
|
203
|
+
// Build and broadcast commit transaction
|
|
204
|
+
const commitResult = buildCommitTransaction({
|
|
205
|
+
utxos,
|
|
206
|
+
inscription,
|
|
207
|
+
feeRate: actualFeeRate,
|
|
208
|
+
senderPubKey: account.btcPublicKey,
|
|
209
|
+
senderAddress: sessionInfo.btcAddress,
|
|
210
|
+
network: NETWORK,
|
|
211
|
+
});
|
|
212
|
+
const commitSigned = signBtcTransaction(commitResult.tx, account.btcPrivateKey);
|
|
213
|
+
const commitTxid = await mempoolApi.broadcastTransaction(commitSigned.txHex);
|
|
214
|
+
const commitExplorerUrl = getMempoolTxUrl(commitTxid, NETWORK);
|
|
215
|
+
// Return immediately with commit info
|
|
216
|
+
return createJsonResponse({
|
|
217
|
+
status: "commit_broadcast",
|
|
218
|
+
message: "Commit transaction broadcast successfully. " +
|
|
219
|
+
"Wait for confirmation (typically 10-60 min), then call inscribe_reveal to complete.",
|
|
220
|
+
commitTxid,
|
|
221
|
+
commitExplorerUrl,
|
|
222
|
+
revealAddress: commitResult.revealAddress,
|
|
223
|
+
revealAmount: commitResult.revealAmount,
|
|
224
|
+
commitFee: commitResult.fee,
|
|
225
|
+
feeRate: actualFeeRate,
|
|
226
|
+
contentType,
|
|
227
|
+
contentSize: body.length,
|
|
228
|
+
nextStep: "After commit confirms, call inscribe_reveal with the same contentType, contentBase64, " +
|
|
229
|
+
"plus commitTxid and revealAmount from this response.",
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
return createErrorResponse(error);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
// Complete inscription - Step 2: Reveal (after commit confirms)
|
|
237
|
+
server.registerTool("inscribe_reveal", {
|
|
238
|
+
description: "Complete a Bitcoin inscription - STEP 2: Broadcast reveal transaction.\n\n" +
|
|
239
|
+
"Call this AFTER the commit transaction from `inscribe` has confirmed.\n" +
|
|
240
|
+
"You must provide the same contentType and contentBase64 used in the commit step.\n\n" +
|
|
241
|
+
"Returns: inscriptionId (revealTxid:0) on success",
|
|
242
|
+
inputSchema: {
|
|
243
|
+
commitTxid: z
|
|
244
|
+
.string()
|
|
245
|
+
.length(64)
|
|
246
|
+
.describe("Transaction ID of the confirmed commit transaction"),
|
|
247
|
+
revealAmount: z
|
|
248
|
+
.number()
|
|
249
|
+
.positive()
|
|
250
|
+
.describe("Amount in the commit output (from inscribe response)"),
|
|
251
|
+
contentType: z
|
|
252
|
+
.string()
|
|
253
|
+
.describe("MIME type (must match the commit step)"),
|
|
254
|
+
contentBase64: z
|
|
255
|
+
.string()
|
|
256
|
+
.describe("Content as base64-encoded string (must match the commit step)"),
|
|
257
|
+
feeRate: z
|
|
258
|
+
.union([z.enum(["fast", "medium", "slow"]), z.number().positive()])
|
|
259
|
+
.optional()
|
|
260
|
+
.describe("Fee rate for reveal tx (default: medium)"),
|
|
261
|
+
},
|
|
262
|
+
}, async ({ commitTxid, revealAmount, contentType, contentBase64, feeRate }) => {
|
|
263
|
+
try {
|
|
264
|
+
// Check wallet session
|
|
265
|
+
const walletManager = getWalletManager();
|
|
266
|
+
const sessionInfo = walletManager.getSessionInfo();
|
|
267
|
+
if (!sessionInfo) {
|
|
268
|
+
return createErrorResponse(new Error("Wallet not unlocked. Use wallet_unlock first."));
|
|
269
|
+
}
|
|
270
|
+
if (!sessionInfo.taprootAddress) {
|
|
271
|
+
return createErrorResponse(new Error("Wallet doesn't have Taproot address. Use a managed wallet."));
|
|
272
|
+
}
|
|
273
|
+
// Get account with keys
|
|
274
|
+
const account = walletManager.getAccount();
|
|
275
|
+
if (!account || !account.btcPrivateKey || !account.btcPublicKey) {
|
|
276
|
+
return createErrorResponse(new Error("Bitcoin keys not available. Wallet may not be unlocked."));
|
|
277
|
+
}
|
|
278
|
+
// Verify commit is confirmed
|
|
279
|
+
const mempoolApi = new MempoolApi(NETWORK);
|
|
280
|
+
// Reconstruct the inscription and reveal script
|
|
281
|
+
const body = Buffer.from(contentBase64, "base64");
|
|
282
|
+
const inscription = {
|
|
283
|
+
contentType,
|
|
284
|
+
body,
|
|
285
|
+
};
|
|
286
|
+
// We need to rebuild the commit to get the reveal script
|
|
287
|
+
// Use a dummy UTXO list since we only need the reveal script derivation
|
|
288
|
+
const dummyUtxos = [{
|
|
289
|
+
txid: commitTxid,
|
|
290
|
+
vout: 0,
|
|
291
|
+
value: revealAmount,
|
|
292
|
+
status: { confirmed: true, block_height: 0, block_hash: "", block_time: 0 },
|
|
293
|
+
}];
|
|
294
|
+
// Get fee rate
|
|
295
|
+
let actualFeeRate;
|
|
296
|
+
if (typeof feeRate === "string") {
|
|
297
|
+
const fees = await mempoolApi.getFeeEstimates();
|
|
298
|
+
switch (feeRate) {
|
|
299
|
+
case "fast":
|
|
300
|
+
actualFeeRate = fees.fastestFee;
|
|
301
|
+
break;
|
|
302
|
+
case "slow":
|
|
303
|
+
actualFeeRate = fees.hourFee;
|
|
304
|
+
break;
|
|
305
|
+
default:
|
|
306
|
+
actualFeeRate = fees.halfHourFee;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
actualFeeRate = feeRate || (await mempoolApi.getFeeEstimates()).halfHourFee;
|
|
311
|
+
}
|
|
312
|
+
// Rebuild commit to get reveal script (we need the same script derivation)
|
|
313
|
+
const commitResult = buildCommitTransaction({
|
|
314
|
+
utxos: dummyUtxos,
|
|
315
|
+
inscription,
|
|
316
|
+
feeRate: actualFeeRate,
|
|
317
|
+
senderPubKey: account.btcPublicKey,
|
|
318
|
+
senderAddress: sessionInfo.btcAddress || "",
|
|
319
|
+
network: NETWORK,
|
|
320
|
+
});
|
|
321
|
+
// Build reveal transaction
|
|
322
|
+
const revealResult = buildRevealTransaction({
|
|
323
|
+
commitTxid,
|
|
324
|
+
commitVout: 0,
|
|
325
|
+
commitAmount: revealAmount,
|
|
326
|
+
revealScript: commitResult.revealScript,
|
|
327
|
+
recipientAddress: sessionInfo.taprootAddress,
|
|
328
|
+
feeRate: actualFeeRate,
|
|
329
|
+
network: NETWORK,
|
|
330
|
+
});
|
|
331
|
+
const revealSigned = signBtcTransaction(revealResult.tx, account.btcPrivateKey);
|
|
332
|
+
const revealTxid = await mempoolApi.broadcastTransaction(revealSigned.txHex);
|
|
333
|
+
// Inscription ID is reveal txid + output index (always 0 for first inscription)
|
|
334
|
+
const inscriptionId = `${revealTxid}i0`;
|
|
335
|
+
const revealExplorerUrl = getMempoolTxUrl(revealTxid, NETWORK);
|
|
336
|
+
const commitExplorerUrl = getMempoolTxUrl(commitTxid, NETWORK);
|
|
337
|
+
return createJsonResponse({
|
|
338
|
+
status: "success",
|
|
339
|
+
message: "Inscription created successfully!",
|
|
340
|
+
inscriptionId,
|
|
341
|
+
contentType,
|
|
342
|
+
contentSize: body.length,
|
|
343
|
+
commit: {
|
|
344
|
+
txid: commitTxid,
|
|
345
|
+
explorerUrl: commitExplorerUrl,
|
|
346
|
+
},
|
|
347
|
+
reveal: {
|
|
348
|
+
txid: revealTxid,
|
|
349
|
+
fee: revealResult.fee,
|
|
350
|
+
explorerUrl: revealExplorerUrl,
|
|
351
|
+
},
|
|
352
|
+
recipientAddress: sessionInfo.taprootAddress,
|
|
353
|
+
note: "Inscription will appear at the recipient address once the reveal transaction confirms.",
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
return createErrorResponse(error);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
// Get inscription from transaction
|
|
361
|
+
server.registerTool("get_inscription", {
|
|
362
|
+
description: "Get inscription content from a Bitcoin reveal transaction. " +
|
|
363
|
+
"Fetches the transaction from mempool.space and parses inscription data from the witness. " +
|
|
364
|
+
"Returns content type, body (as base64 and text if applicable), and metadata tags.",
|
|
365
|
+
inputSchema: {
|
|
366
|
+
txid: z
|
|
367
|
+
.string()
|
|
368
|
+
.length(64)
|
|
369
|
+
.describe("Transaction ID of the reveal transaction containing the inscription"),
|
|
370
|
+
},
|
|
371
|
+
}, async ({ txid }) => {
|
|
372
|
+
try {
|
|
373
|
+
const parser = new InscriptionParser(NETWORK);
|
|
374
|
+
const inscriptions = await parser.getInscriptionsFromTx(txid);
|
|
375
|
+
if (!inscriptions || inscriptions.length === 0) {
|
|
376
|
+
return createJsonResponse({
|
|
377
|
+
txid,
|
|
378
|
+
network: NETWORK,
|
|
379
|
+
explorerUrl: getMempoolTxUrl(txid, NETWORK),
|
|
380
|
+
found: false,
|
|
381
|
+
message: "No inscriptions found in this transaction",
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
return createJsonResponse({
|
|
385
|
+
txid,
|
|
386
|
+
network: NETWORK,
|
|
387
|
+
explorerUrl: getMempoolTxUrl(txid, NETWORK),
|
|
388
|
+
found: true,
|
|
389
|
+
count: inscriptions.length,
|
|
390
|
+
inscriptions: inscriptions.map((ins, idx) => formatInscription(ins, idx)),
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
if (error instanceof Error) {
|
|
395
|
+
return createErrorResponse(`Failed to get inscription: ${error.message}`);
|
|
396
|
+
}
|
|
397
|
+
return createErrorResponse(`Failed to get inscription: ${String(error)}`);
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=ordinals.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinals.tools.js","sourceRoot":"","sources":["../../src/tools/ordinals.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.tools.d.ts","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"query.tools.d.ts","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2S1D"}
|
|
@@ -3,7 +3,78 @@ import { getWalletAddress, NETWORK } from "../services/x402.service.js";
|
|
|
3
3
|
import { getHiroApi } from "../services/hiro-api.js";
|
|
4
4
|
import { getExplorerAddressUrl } from "../config/networks.js";
|
|
5
5
|
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Format micro-STX to STX with appropriate decimal places.
|
|
8
|
+
* Uses BigInt arithmetic to avoid floating-point precision loss.
|
|
9
|
+
*/
|
|
10
|
+
function formatStx(microStx) {
|
|
11
|
+
const micro = typeof microStx === "bigint" ? microStx : BigInt(Math.round(microStx));
|
|
12
|
+
const whole = micro / 1000000n;
|
|
13
|
+
const fraction = micro % 1000000n;
|
|
14
|
+
// Convert fractional micro-STX to a 6-digit decimal part, then trim trailing zeros
|
|
15
|
+
const rawFractionStr = fraction.toString().padStart(6, "0");
|
|
16
|
+
const trimmedFractionStr = rawFractionStr.replace(/0+$/, "");
|
|
17
|
+
const stxStr = trimmedFractionStr.length > 0
|
|
18
|
+
? `${whole.toString()}.${trimmedFractionStr}`
|
|
19
|
+
: whole.toString();
|
|
20
|
+
return stxStr + " STX";
|
|
21
|
+
}
|
|
6
22
|
export function registerQueryTools(server) {
|
|
23
|
+
// Get STX fee estimates
|
|
24
|
+
server.registerTool("get_stx_fees", {
|
|
25
|
+
description: "Get current STX fee estimates for different priority levels. " +
|
|
26
|
+
"Returns low, medium, and high fee tiers in micro-STX, based on mempool analysis.",
|
|
27
|
+
}, async () => {
|
|
28
|
+
try {
|
|
29
|
+
const hiro = getHiroApi(NETWORK);
|
|
30
|
+
const fees = await hiro.getMempoolFees();
|
|
31
|
+
// Use token_transfer fees as the default since they're most common
|
|
32
|
+
// and provide a good baseline for STX operations
|
|
33
|
+
const transferFees = fees.token_transfer;
|
|
34
|
+
return createJsonResponse({
|
|
35
|
+
network: NETWORK,
|
|
36
|
+
fees: {
|
|
37
|
+
low: {
|
|
38
|
+
microStx: transferFees.low_priority,
|
|
39
|
+
stx: formatStx(transferFees.low_priority),
|
|
40
|
+
description: "Lower fee, may take longer to confirm",
|
|
41
|
+
},
|
|
42
|
+
medium: {
|
|
43
|
+
microStx: transferFees.medium_priority,
|
|
44
|
+
stx: formatStx(transferFees.medium_priority),
|
|
45
|
+
description: "Standard fee, typical confirmation time",
|
|
46
|
+
},
|
|
47
|
+
high: {
|
|
48
|
+
microStx: transferFees.high_priority,
|
|
49
|
+
stx: formatStx(transferFees.high_priority),
|
|
50
|
+
description: "Higher fee, faster confirmation",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
byTransactionType: {
|
|
54
|
+
tokenTransfer: {
|
|
55
|
+
low: transferFees.low_priority,
|
|
56
|
+
medium: transferFees.medium_priority,
|
|
57
|
+
high: transferFees.high_priority,
|
|
58
|
+
},
|
|
59
|
+
contractCall: {
|
|
60
|
+
low: fees.contract_call.low_priority,
|
|
61
|
+
medium: fees.contract_call.medium_priority,
|
|
62
|
+
high: fees.contract_call.high_priority,
|
|
63
|
+
},
|
|
64
|
+
smartContract: {
|
|
65
|
+
low: fees.smart_contract.low_priority,
|
|
66
|
+
medium: fees.smart_contract.medium_priority,
|
|
67
|
+
high: fees.smart_contract.high_priority,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
unit: "micro-STX",
|
|
71
|
+
note: "1 STX = 1,000,000 micro-STX. Fees are estimates based on current mempool conditions.",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return createErrorResponse(error);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
7
78
|
// Get account info
|
|
8
79
|
server.registerTool("get_account_info", {
|
|
9
80
|
description: "Get detailed account information including nonce and balance.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.tools.js","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.tools.js","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbtc.tools.d.ts","sourceRoot":"","sources":["../../src/tools/sbtc.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sbtc.tools.d.ts","sourceRoot":"","sources":["../../src/tools/sbtc.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0HzD"}
|
package/dist/tools/sbtc.tools.js
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { getAccount, getWalletAddress, NETWORK } from "../services/x402.service.js";
|
|
3
3
|
import { getSbtcService } from "../services/sbtc.service.js";
|
|
4
4
|
import { getExplorerTxUrl } from "../config/networks.js";
|
|
5
|
-
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
5
|
+
import { createJsonResponse, createErrorResponse, resolveFee } from "../utils/index.js";
|
|
6
6
|
export function registerSbtcTools(server) {
|
|
7
7
|
// Get sBTC balance
|
|
8
8
|
server.registerTool("sbtc_get_balance", {
|
|
@@ -41,12 +41,17 @@ Example: To send 0.001 sBTC, use amount "100000" (satoshis).`,
|
|
|
41
41
|
recipient: z.string().describe("The recipient's Stacks address"),
|
|
42
42
|
amount: z.string().describe("Amount in satoshis (0.00000001 sBTC). Example: '100000' for 0.001 sBTC"),
|
|
43
43
|
memo: z.string().optional().describe("Optional memo message"),
|
|
44
|
+
fee: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Optional fee: 'low' | 'medium' | 'high' preset or micro-STX amount. If omitted, auto-estimated."),
|
|
44
48
|
},
|
|
45
|
-
}, async ({ recipient, amount, memo }) => {
|
|
49
|
+
}, async ({ recipient, amount, memo, fee }) => {
|
|
46
50
|
try {
|
|
47
51
|
const sbtcService = getSbtcService(NETWORK);
|
|
48
52
|
const account = await getAccount();
|
|
49
|
-
const
|
|
53
|
+
const resolvedFee = await resolveFee(fee, NETWORK, "contract_call");
|
|
54
|
+
const result = await sbtcService.transfer(account, recipient, BigInt(amount), memo, resolvedFee);
|
|
50
55
|
const btcAmount = (BigInt(amount) / BigInt(100_000_000)).toString();
|
|
51
56
|
return createJsonResponse({
|
|
52
57
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbtc.tools.js","sourceRoot":"","sources":["../../src/tools/sbtc.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"sbtc.tools.js","sourceRoot":"","sources":["../../src/tools/sbtc.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kEAAkE,CAAC;SAChF;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE5D,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO,CAAC,WAAW;oBACzB,GAAG,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO;iBAClC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE;;;6DAG0C;QACvD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YACrG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC7D,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iGAAiG,CAAC;SAC/G;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAEjG,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEpE,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,SAAS;gBACT,MAAM,EAAE,SAAS,GAAG,OAAO;gBAC3B,UAAU,EAAE,MAAM;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE,2DAA2D;KACzE,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;YAEvD,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,OAAO;gBAChB,GAAG,WAAW;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EAAE,gEAAgE;KAC9E,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;YAE/C,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE;oBACX,IAAI,EAAE,OAAO,CAAC,eAAe;oBAC7B,GAAG,EAAE,OAAO,CAAC,cAAc,GAAG,OAAO;iBACtC;gBACD,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;AAEJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Signing Tools
|
|
3
|
+
*
|
|
4
|
+
* These tools provide message signing capabilities for agent identity and authentication:
|
|
5
|
+
*
|
|
6
|
+
* SIP-018 (Structured Data Signing):
|
|
7
|
+
* - sip018_sign: Sign structured Clarity data (SIP-018 standard)
|
|
8
|
+
* - sip018_verify: Verify SIP-018 signature and recover signer
|
|
9
|
+
* - sip018_hash: Compute SIP-018 message hash without signing
|
|
10
|
+
*
|
|
11
|
+
* Stacks Message Signing (SIWS-Compatible):
|
|
12
|
+
* - stacks_sign_message: Sign plain text messages with Stacks prefix
|
|
13
|
+
* - stacks_verify_message: Verify message signature and recover signer
|
|
14
|
+
*
|
|
15
|
+
* Bitcoin Message Signing (BIP-137):
|
|
16
|
+
* - btc_sign_message: Sign messages with Bitcoin private key (BIP-137 format)
|
|
17
|
+
* - btc_verify_message: Verify Bitcoin message signatures
|
|
18
|
+
*
|
|
19
|
+
* SIP-018 signatures can be verified both off-chain and on-chain by smart contracts.
|
|
20
|
+
* Stacks message signatures are SIWS-compatible for web authentication flows.
|
|
21
|
+
* Bitcoin signatures use BIP-137 format compatible with most Bitcoin wallets.
|
|
22
|
+
*/
|
|
23
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
24
|
+
export declare function registerSigningTools(server: McpServer): void;
|
|
25
|
+
//# sourceMappingURL=signing.tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.tools.d.ts","sourceRoot":"","sources":["../../src/tools/signing.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuUpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqlB5D"}
|