@aibtc/mcp-server 1.37.0 → 1.39.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.
@@ -0,0 +1,449 @@
1
+ /**
2
+ * Reputation Tools (ERC-8004)
3
+ *
4
+ * Dedicated MCP tools for on-chain agent reputation management via the
5
+ * ERC-8004 reputation registry. Covers the full feedback lifecycle:
6
+ *
7
+ * Read Tools (no wallet required):
8
+ * - reputation_get_summary - Aggregated reputation score for an agent
9
+ * - reputation_read_feedback - Specific feedback entry by agent + index
10
+ * - reputation_read_all_feedback - Paginated all-feedback with tag filtering
11
+ * - reputation_get_clients - Paginated list of clients who gave feedback
12
+ * - reputation_get_feedback_count - Total feedback count for an agent
13
+ * - reputation_get_approved_limit - Approved index limit for a client
14
+ * - reputation_get_last_index - Last feedback index for a client
15
+ *
16
+ * Write Tools (wallet required):
17
+ * - reputation_give_feedback - Submit feedback for an agent
18
+ * - reputation_revoke_feedback - Revoke own feedback by index
19
+ * - reputation_append_response - Append a response to received feedback
20
+ * - reputation_approve_client - Approve a client with index limit
21
+ */
22
+ import { z } from "zod";
23
+ import { NETWORK, getExplorerTxUrl } from "../config/networks.js";
24
+ import { createJsonResponse, createErrorResponse } from "../utils/index.js";
25
+ import { getWalletManager } from "../services/wallet-manager.js";
26
+ import { Erc8004Service } from "../services/erc8004.service.js";
27
+ import { resolveFee } from "../utils/fee.js";
28
+ import { sponsoredSchema } from "./schemas.js";
29
+ import { normalizeHex, getCallerAddress } from "../utils/erc8004-helpers.js";
30
+ /** Zod schema for a Stacks principal address (mainnet SP... or testnet ST...) */
31
+ const stacksAddressSchema = z
32
+ .string()
33
+ .regex(/^S[PT][0-9A-Z]{38,39}$/)
34
+ .describe("Stacks address of the client (SP... mainnet or ST... testnet)");
35
+ export function registerReputationTools(server) {
36
+ const service = new Erc8004Service(NETWORK);
37
+ // ==========================================================================
38
+ // Read Tools — no wallet required
39
+ // ==========================================================================
40
+ // reputation_get_summary
41
+ server.registerTool("reputation_get_summary", {
42
+ description: "Get aggregated reputation summary for an agent from the ERC-8004 reputation registry. " +
43
+ "Returns average rating as a WAD string (18 decimals) and total feedback count. " +
44
+ "No wallet required.",
45
+ inputSchema: {
46
+ agentId: z.number().int().min(0).describe("Agent ID to get reputation summary for"),
47
+ },
48
+ }, async ({ agentId }) => {
49
+ try {
50
+ const callerAddress = getCallerAddress();
51
+ const reputation = await service.getReputation(agentId, callerAddress);
52
+ if (reputation.totalFeedback === 0) {
53
+ return createJsonResponse({
54
+ success: true,
55
+ agentId,
56
+ totalFeedback: 0,
57
+ summaryValue: "0",
58
+ summaryValueDecimals: 0,
59
+ message: "No feedback yet for this agent",
60
+ network: NETWORK,
61
+ });
62
+ }
63
+ return createJsonResponse({
64
+ success: true,
65
+ agentId: reputation.agentId,
66
+ totalFeedback: reputation.totalFeedback,
67
+ summaryValue: reputation.summaryValue,
68
+ summaryValueDecimals: reputation.summaryValueDecimals,
69
+ network: NETWORK,
70
+ });
71
+ }
72
+ catch (error) {
73
+ return createErrorResponse(error);
74
+ }
75
+ });
76
+ // reputation_read_feedback
77
+ server.registerTool("reputation_read_feedback", {
78
+ description: "Read a specific feedback entry for an agent by index from the ERC-8004 reputation registry. " +
79
+ "Returns client address, value, decimals, tags, and timestamp. " +
80
+ "No wallet required.",
81
+ inputSchema: {
82
+ agentId: z.number().int().min(0).describe("Agent ID to read feedback for"),
83
+ index: z.number().int().min(0).describe("Feedback index to read"),
84
+ },
85
+ }, async ({ agentId, index }) => {
86
+ try {
87
+ const callerAddress = getCallerAddress();
88
+ const feedback = await service.getFeedback(agentId, index, callerAddress);
89
+ if (!feedback) {
90
+ return createJsonResponse({
91
+ success: false,
92
+ agentId,
93
+ index,
94
+ message: "Feedback entry not found",
95
+ network: NETWORK,
96
+ });
97
+ }
98
+ return createJsonResponse({
99
+ success: true,
100
+ agentId,
101
+ index,
102
+ client: feedback.client,
103
+ value: feedback.value,
104
+ valueDecimals: feedback.valueDecimals,
105
+ wadValue: feedback.wadValue,
106
+ tag1: feedback.tag1 || "(none)",
107
+ tag2: feedback.tag2 || "(none)",
108
+ timestamp: feedback.timestamp,
109
+ network: NETWORK,
110
+ });
111
+ }
112
+ catch (error) {
113
+ return createErrorResponse(error);
114
+ }
115
+ });
116
+ // reputation_read_all_feedback
117
+ server.registerTool("reputation_read_all_feedback", {
118
+ description: "Read all feedback entries for an agent with optional tag filtering and pagination. " +
119
+ "Returns up to 20 entries per page. Pass nextCursor from the previous response to page. " +
120
+ "WARNING: Uses one RPC call per entry (N+1 pattern) — avoid calling for agents with " +
121
+ "large feedback sets without using cursor-based pagination. " +
122
+ "No wallet required.",
123
+ inputSchema: {
124
+ agentId: z.number().int().min(0).describe("Agent ID to read all feedback for"),
125
+ tag1: z.string().optional().describe("Filter by tag1 (exact match). Optional."),
126
+ tag2: z.string().optional().describe("Filter by tag2 (exact match). Optional."),
127
+ includeRevoked: z
128
+ .boolean()
129
+ .optional()
130
+ .default(false)
131
+ .describe("Include revoked feedback entries. Default false."),
132
+ cursor: z
133
+ .number()
134
+ .int()
135
+ .min(0)
136
+ .optional()
137
+ .default(0)
138
+ .describe("Pagination cursor (index to start from). Default 0."),
139
+ },
140
+ }, async ({ agentId, tag1, tag2, includeRevoked, cursor }) => {
141
+ try {
142
+ const callerAddress = getCallerAddress();
143
+ const page = await service.readAllFeedback(agentId, callerAddress, tag1, tag2, includeRevoked ?? false, cursor ?? 0);
144
+ return createJsonResponse({
145
+ success: true,
146
+ agentId,
147
+ count: page.entries.length,
148
+ entries: page.entries,
149
+ nextCursor: page.nextCursor ?? null,
150
+ hasMore: page.nextCursor !== undefined,
151
+ network: NETWORK,
152
+ });
153
+ }
154
+ catch (error) {
155
+ return createErrorResponse(error);
156
+ }
157
+ });
158
+ // reputation_get_clients
159
+ server.registerTool("reputation_get_clients", {
160
+ description: "Get a paginated list of clients who gave feedback to an agent. " +
161
+ "Returns client addresses and a nextCursor for pagination. " +
162
+ "No wallet required.",
163
+ inputSchema: {
164
+ agentId: z.number().int().min(0).describe("Agent ID to get clients for"),
165
+ cursor: z
166
+ .number()
167
+ .int()
168
+ .min(0)
169
+ .optional()
170
+ .default(0)
171
+ .describe("Pagination cursor. Default 0."),
172
+ },
173
+ }, async ({ agentId, cursor }) => {
174
+ try {
175
+ const callerAddress = getCallerAddress();
176
+ const page = await service.getClients(agentId, callerAddress, cursor ?? 0);
177
+ return createJsonResponse({
178
+ success: true,
179
+ agentId,
180
+ count: page.clients.length,
181
+ clients: page.clients,
182
+ nextCursor: page.nextCursor ?? null,
183
+ hasMore: page.nextCursor !== undefined,
184
+ network: NETWORK,
185
+ });
186
+ }
187
+ catch (error) {
188
+ return createErrorResponse(error);
189
+ }
190
+ });
191
+ // reputation_get_feedback_count
192
+ server.registerTool("reputation_get_feedback_count", {
193
+ description: "Get the total number of feedback entries for an agent from the ERC-8004 reputation registry. " +
194
+ "No wallet required.",
195
+ inputSchema: {
196
+ agentId: z.number().int().min(0).describe("Agent ID to get feedback count for"),
197
+ },
198
+ }, async ({ agentId }) => {
199
+ try {
200
+ const callerAddress = getCallerAddress();
201
+ const count = await service.getFeedbackCount(agentId, callerAddress);
202
+ return createJsonResponse({
203
+ success: true,
204
+ agentId,
205
+ feedbackCount: count,
206
+ network: NETWORK,
207
+ });
208
+ }
209
+ catch (error) {
210
+ return createErrorResponse(error);
211
+ }
212
+ });
213
+ // reputation_get_approved_limit
214
+ server.registerTool("reputation_get_approved_limit", {
215
+ description: "Get the approved feedback index limit for a specific client of an agent. " +
216
+ "Returns the maximum index up to which the client is approved to submit feedback. " +
217
+ "No wallet required.",
218
+ inputSchema: {
219
+ agentId: z.number().int().min(0).describe("Agent ID"),
220
+ client: stacksAddressSchema,
221
+ },
222
+ }, async ({ agentId, client }) => {
223
+ try {
224
+ const callerAddress = getCallerAddress();
225
+ const limit = await service.getApprovedLimit(agentId, client, callerAddress);
226
+ return createJsonResponse({
227
+ success: true,
228
+ agentId,
229
+ client,
230
+ approvedLimit: limit,
231
+ notFound: limit === null,
232
+ network: NETWORK,
233
+ });
234
+ }
235
+ catch (error) {
236
+ return createErrorResponse(error);
237
+ }
238
+ });
239
+ // reputation_get_last_index
240
+ server.registerTool("reputation_get_last_index", {
241
+ description: "Get the last feedback index submitted by a specific client for an agent. " +
242
+ "No wallet required.",
243
+ inputSchema: {
244
+ agentId: z.number().int().min(0).describe("Agent ID"),
245
+ client: stacksAddressSchema,
246
+ },
247
+ }, async ({ agentId, client }) => {
248
+ try {
249
+ const callerAddress = getCallerAddress();
250
+ const lastIndex = await service.getLastIndex(agentId, client, callerAddress);
251
+ return createJsonResponse({
252
+ success: true,
253
+ agentId,
254
+ client,
255
+ lastIndex,
256
+ notFound: lastIndex === null,
257
+ network: NETWORK,
258
+ });
259
+ }
260
+ catch (error) {
261
+ return createErrorResponse(error);
262
+ }
263
+ });
264
+ // ==========================================================================
265
+ // Write Tools — wallet required
266
+ // ==========================================================================
267
+ // reputation_give_feedback
268
+ server.registerTool("reputation_give_feedback", {
269
+ description: "Submit feedback for an agent using the ERC-8004 reputation registry. " +
270
+ "Value is normalized to 18 decimals (WAD) internally for aggregation. " +
271
+ "Requires an unlocked wallet.",
272
+ inputSchema: {
273
+ agentId: z.number().int().min(0).describe("Agent ID to give feedback for"),
274
+ value: z
275
+ .number()
276
+ .int()
277
+ .min(0)
278
+ .describe("Feedback value (e.g., 5 for a 5-star rating)"),
279
+ valueDecimals: z
280
+ .number()
281
+ .int()
282
+ .min(0)
283
+ .max(18)
284
+ .describe("Decimals for the value (e.g., 0 for integer ratings)"),
285
+ tag1: z.string().max(64).optional().describe("Optional tag 1 (max 64 chars)"),
286
+ tag2: z.string().max(64).optional().describe("Optional tag 2 (max 64 chars)"),
287
+ endpoint: z.string().optional().describe("Optional endpoint URL"),
288
+ feedbackUri: z.string().optional().describe("Optional URI pointing to off-chain feedback details"),
289
+ feedbackHash: z
290
+ .string()
291
+ .optional()
292
+ .describe("Optional feedback hash as hex string (32 bytes)"),
293
+ fee: z
294
+ .string()
295
+ .optional()
296
+ .describe('Fee preset ("low", "medium", "high") or micro-STX amount. Optional.'),
297
+ sponsored: sponsoredSchema,
298
+ },
299
+ }, async ({ agentId, value, valueDecimals, tag1, tag2, endpoint, feedbackUri, feedbackHash, fee, sponsored }) => {
300
+ try {
301
+ const walletManager = getWalletManager();
302
+ const account = walletManager.getActiveAccount();
303
+ if (!account) {
304
+ throw new Error("No active wallet. Please unlock your wallet first.");
305
+ }
306
+ const hashBuffer = feedbackHash
307
+ ? Buffer.from(normalizeHex(feedbackHash, "feedbackHash", 32), "hex")
308
+ : undefined;
309
+ const feeAmount = fee ? await resolveFee(fee, NETWORK, "contract_call") : undefined;
310
+ const result = await service.giveFeedback(account, agentId, value, valueDecimals, tag1, tag2, endpoint, feedbackUri, hashBuffer, feeAmount, sponsored);
311
+ return createJsonResponse({
312
+ success: true,
313
+ txid: result.txid,
314
+ message: "Feedback submitted successfully",
315
+ agentId,
316
+ value,
317
+ valueDecimals,
318
+ network: NETWORK,
319
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
320
+ });
321
+ }
322
+ catch (error) {
323
+ return createErrorResponse(error);
324
+ }
325
+ });
326
+ // reputation_revoke_feedback
327
+ server.registerTool("reputation_revoke_feedback", {
328
+ description: "Revoke a previously submitted feedback entry by index. " +
329
+ "Only the original submitter can revoke their feedback. " +
330
+ "Requires an unlocked wallet.",
331
+ inputSchema: {
332
+ agentId: z.number().int().min(0).describe("Agent ID the feedback was given for"),
333
+ index: z.number().int().min(0).describe("Feedback index to revoke"),
334
+ fee: z
335
+ .string()
336
+ .optional()
337
+ .describe('Fee preset ("low", "medium", "high") or micro-STX amount. Optional.'),
338
+ sponsored: sponsoredSchema,
339
+ },
340
+ }, async ({ agentId, index, fee, sponsored }) => {
341
+ try {
342
+ const walletManager = getWalletManager();
343
+ const account = walletManager.getActiveAccount();
344
+ if (!account) {
345
+ throw new Error("No active wallet. Please unlock your wallet first.");
346
+ }
347
+ const feeAmount = fee ? await resolveFee(fee, NETWORK, "contract_call") : undefined;
348
+ const result = await service.revokeFeedback(account, agentId, index, feeAmount, sponsored);
349
+ return createJsonResponse({
350
+ success: true,
351
+ txid: result.txid,
352
+ message: "Feedback revocation submitted successfully",
353
+ agentId,
354
+ index,
355
+ network: NETWORK,
356
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
357
+ });
358
+ }
359
+ catch (error) {
360
+ return createErrorResponse(error);
361
+ }
362
+ });
363
+ // reputation_append_response
364
+ server.registerTool("reputation_append_response", {
365
+ description: "Append a response to feedback received from a client. " +
366
+ "Must be called by the agent that received the feedback. " +
367
+ "Requires an unlocked wallet.",
368
+ inputSchema: {
369
+ agentId: z.number().int().min(0).describe("Agent ID that received the feedback"),
370
+ client: stacksAddressSchema,
371
+ index: z.number().int().min(0).describe("Feedback index to respond to"),
372
+ responseUri: z.string().describe("URI pointing to the response content"),
373
+ responseHash: z.string().describe("Response hash as hex string (32 bytes)"),
374
+ fee: z
375
+ .string()
376
+ .optional()
377
+ .describe('Fee preset ("low", "medium", "high") or micro-STX amount. Optional.'),
378
+ sponsored: sponsoredSchema,
379
+ },
380
+ }, async ({ agentId, client, index, responseUri, responseHash, fee, sponsored }) => {
381
+ try {
382
+ const walletManager = getWalletManager();
383
+ const account = walletManager.getActiveAccount();
384
+ if (!account) {
385
+ throw new Error("No active wallet. Please unlock your wallet first.");
386
+ }
387
+ const hashBuffer = Buffer.from(normalizeHex(responseHash, "responseHash", 32), "hex");
388
+ const feeAmount = fee ? await resolveFee(fee, NETWORK, "contract_call") : undefined;
389
+ const result = await service.appendResponse(account, agentId, client, index, responseUri, hashBuffer, feeAmount, sponsored);
390
+ return createJsonResponse({
391
+ success: true,
392
+ txid: result.txid,
393
+ message: "Response appended successfully",
394
+ agentId,
395
+ client,
396
+ index,
397
+ network: NETWORK,
398
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
399
+ });
400
+ }
401
+ catch (error) {
402
+ return createErrorResponse(error);
403
+ }
404
+ });
405
+ // reputation_approve_client
406
+ server.registerTool("reputation_approve_client", {
407
+ description: "Approve a client to submit feedback up to a specified index limit. " +
408
+ "Must be called by the agent owner. " +
409
+ "Requires an unlocked wallet.",
410
+ inputSchema: {
411
+ agentId: z.number().int().min(0).describe("Agent ID to approve a client for"),
412
+ client: stacksAddressSchema,
413
+ indexLimit: z
414
+ .number()
415
+ .int()
416
+ .min(0)
417
+ .describe("Maximum feedback index the client is approved for"),
418
+ fee: z
419
+ .string()
420
+ .optional()
421
+ .describe('Fee preset ("low", "medium", "high") or micro-STX amount. Optional.'),
422
+ sponsored: sponsoredSchema,
423
+ },
424
+ }, async ({ agentId, client, indexLimit, fee, sponsored }) => {
425
+ try {
426
+ const walletManager = getWalletManager();
427
+ const account = walletManager.getActiveAccount();
428
+ if (!account) {
429
+ throw new Error("No active wallet. Please unlock your wallet first.");
430
+ }
431
+ const feeAmount = fee ? await resolveFee(fee, NETWORK, "contract_call") : undefined;
432
+ const result = await service.approveClient(account, agentId, client, indexLimit, feeAmount, sponsored);
433
+ return createJsonResponse({
434
+ success: true,
435
+ txid: result.txid,
436
+ message: "Client approved successfully",
437
+ agentId,
438
+ client,
439
+ indexLimit,
440
+ network: NETWORK,
441
+ explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
442
+ });
443
+ }
444
+ catch (error) {
445
+ return createErrorResponse(error);
446
+ }
447
+ });
448
+ }
449
+ //# sourceMappingURL=reputation.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.tools.js","sourceRoot":"","sources":["../../src/tools/reputation.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-mappings.d.ts","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+PjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
1
+ {"version":3,"file":"skill-mappings.d.ts","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuRjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
@@ -193,6 +193,12 @@ export const TOOL_SKILL_MAP = {
193
193
  inscribe_child: "ordinals",
194
194
  inscribe_child_reveal: "ordinals",
195
195
  estimate_child_inscription_fee: "ordinals",
196
+ // ordinals-marketplace skill — Magic Eden marketplace: browse listings, list/buy/cancel
197
+ ordinals_get_listings: "ordinals-marketplace",
198
+ ordinals_list_for_sale: "ordinals-marketplace",
199
+ ordinals_list_for_sale_submit: "ordinals-marketplace",
200
+ ordinals_buy: "ordinals-marketplace",
201
+ ordinals_cancel_listing: "ordinals-marketplace",
196
202
  // ordinals-p2p skill — peer-to-peer ordinals trading via PSBT, trade ledger, and Taproot multisig
197
203
  psbt_decode: "ordinals-p2p",
198
204
  psbt_sign: "ordinals-p2p",
@@ -239,6 +245,22 @@ export const TOOL_SKILL_MAP = {
239
245
  bitflow_get_order: "bitflow",
240
246
  bitflow_cancel_order: "bitflow",
241
247
  bitflow_get_keeper_user: "bitflow",
248
+ // jingswap skill — blind batch auction for sBTC
249
+ jingswap_get_cycle_state: "jingswap",
250
+ jingswap_get_depositors: "jingswap",
251
+ jingswap_get_user_deposit: "jingswap",
252
+ jingswap_get_settlement: "jingswap",
253
+ jingswap_get_cycles_history: "jingswap",
254
+ jingswap_get_user_activity: "jingswap",
255
+ jingswap_get_prices: "jingswap",
256
+ jingswap_deposit_stx: "jingswap",
257
+ jingswap_deposit_sbtc: "jingswap",
258
+ jingswap_cancel_stx: "jingswap",
259
+ jingswap_cancel_sbtc: "jingswap",
260
+ jingswap_close_deposits: "jingswap",
261
+ jingswap_settle: "jingswap",
262
+ jingswap_settle_with_refresh: "jingswap",
263
+ jingswap_cancel_cycle: "jingswap",
242
264
  };
243
265
  /**
244
266
  * Returns the skill name for a given MCP tool name, or undefined if no mapping exists.
@@ -1 +1 @@
1
- {"version":3,"file":"skill-mappings.js","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-mappings.js","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared helpers for ERC-8004 tool files.
3
+ *
4
+ * Extracted to avoid duplication between erc8004.tools.ts and reputation.tools.ts.
5
+ */
6
+ /** Default read-only caller address per network (boot addresses) */
7
+ export declare const DEFAULT_CALLER: Record<string, string>;
8
+ /**
9
+ * Strip optional 0x prefix and validate a hex string.
10
+ * Optionally enforce an exact byte length.
11
+ */
12
+ export declare function normalizeHex(hex: string, label: string, exactBytes?: number): string;
13
+ /**
14
+ * Return the active wallet's Stacks address, or fall back to the network boot address
15
+ * when no wallet session is open. Used for read-only contract calls.
16
+ */
17
+ export declare function getCallerAddress(): string;
18
+ //# sourceMappingURL=erc8004-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc8004-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/erc8004-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oEAAoE;AACpE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAYpF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared helpers for ERC-8004 tool files.
3
+ *
4
+ * Extracted to avoid duplication between erc8004.tools.ts and reputation.tools.ts.
5
+ */
6
+ import { NETWORK } from "../config/networks.js";
7
+ import { getWalletManager } from "../services/wallet-manager.js";
8
+ /** Default read-only caller address per network (boot addresses) */
9
+ export const DEFAULT_CALLER = {
10
+ mainnet: "SP000000000000000000002Q6VF78",
11
+ testnet: "ST000000000000000000002AMW42H",
12
+ };
13
+ /**
14
+ * Strip optional 0x prefix and validate a hex string.
15
+ * Optionally enforce an exact byte length.
16
+ */
17
+ export function normalizeHex(hex, label, exactBytes) {
18
+ let normalized = hex;
19
+ if (normalized.startsWith("0x") || normalized.startsWith("0X")) {
20
+ normalized = normalized.slice(2);
21
+ }
22
+ if (normalized.length === 0 || normalized.length % 2 !== 0 || !/^[0-9a-fA-F]+$/.test(normalized)) {
23
+ throw new Error(`${label} must be a non-empty, even-length hex string`);
24
+ }
25
+ if (exactBytes !== undefined && normalized.length !== exactBytes * 2) {
26
+ throw new Error(`${label} must be exactly ${exactBytes} bytes (${exactBytes * 2} hex characters)`);
27
+ }
28
+ return normalized;
29
+ }
30
+ /**
31
+ * Return the active wallet's Stacks address, or fall back to the network boot address
32
+ * when no wallet session is open. Used for read-only contract calls.
33
+ */
34
+ export function getCallerAddress() {
35
+ const walletManager = getWalletManager();
36
+ const sessionInfo = walletManager.getSessionInfo();
37
+ return sessionInfo?.address || DEFAULT_CALLER[NETWORK] || DEFAULT_CALLER.testnet;
38
+ }
39
+ //# sourceMappingURL=erc8004-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc8004-helpers.js","sourceRoot":"","sources":["../../src/utils/erc8004-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,OAAO,EAAE,+BAA+B;IACxC,OAAO,EAAE,+BAA+B;CACzC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,UAAmB;IAC1E,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,UAAU,WAAW,UAAU,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;IACnD,OAAO,WAAW,EAAE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC;AACnF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aibtc/mcp-server",
3
- "version": "1.37.0",
3
+ "version": "1.39.0",
4
4
  "description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
5
5
  "mcpName": "io.github.aibtcdev/mcp-server",
6
6
  "type": "module",
package/skill/SKILL.md CHANGED
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
4
4
  license: MIT
5
5
  metadata:
6
6
  author: aibtcdev
7
- version: 1.37.0 # x-release-please-version
7
+ version: 1.39.0 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---