@aibtc/mcp-server 1.39.0 → 1.41.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.
Files changed (62) hide show
  1. package/dist/services/credentials.d.ts +31 -0
  2. package/dist/services/credentials.d.ts.map +1 -0
  3. package/dist/services/credentials.js +162 -0
  4. package/dist/services/credentials.js.map +1 -0
  5. package/dist/services/erc8004.service.d.ts +28 -0
  6. package/dist/services/erc8004.service.d.ts.map +1 -1
  7. package/dist/services/erc8004.service.js +115 -0
  8. package/dist/services/erc8004.service.js.map +1 -1
  9. package/dist/services/unisat-indexer.d.ts +97 -0
  10. package/dist/services/unisat-indexer.d.ts.map +1 -0
  11. package/dist/services/unisat-indexer.js +178 -0
  12. package/dist/services/unisat-indexer.js.map +1 -0
  13. package/dist/tools/bounty-scanner.tools.d.ts +29 -0
  14. package/dist/tools/bounty-scanner.tools.d.ts.map +1 -0
  15. package/dist/tools/bounty-scanner.tools.js +405 -0
  16. package/dist/tools/bounty-scanner.tools.js.map +1 -0
  17. package/dist/tools/credentials.tools.d.ts +9 -0
  18. package/dist/tools/credentials.tools.d.ts.map +1 -0
  19. package/dist/tools/credentials.tools.js +151 -0
  20. package/dist/tools/credentials.tools.js.map +1 -0
  21. package/dist/tools/identity.tools.d.ts +22 -0
  22. package/dist/tools/identity.tools.d.ts.map +1 -0
  23. package/dist/tools/identity.tools.js +404 -0
  24. package/dist/tools/identity.tools.js.map +1 -0
  25. package/dist/tools/index.d.ts.map +1 -1
  26. package/dist/tools/index.js +21 -0
  27. package/dist/tools/index.js.map +1 -1
  28. package/dist/tools/news.tools.d.ts +26 -0
  29. package/dist/tools/news.tools.d.ts.map +1 -0
  30. package/dist/tools/news.tools.js +348 -0
  31. package/dist/tools/news.tools.js.map +1 -0
  32. package/dist/tools/runes.tools.d.ts +25 -0
  33. package/dist/tools/runes.tools.d.ts.map +1 -0
  34. package/dist/tools/runes.tools.js +464 -0
  35. package/dist/tools/runes.tools.js.map +1 -0
  36. package/dist/tools/signing.tools.d.ts.map +1 -1
  37. package/dist/tools/signing.tools.js +3 -88
  38. package/dist/tools/signing.tools.js.map +1 -1
  39. package/dist/tools/skill-mappings.d.ts.map +1 -1
  40. package/dist/tools/skill-mappings.js +40 -0
  41. package/dist/tools/skill-mappings.js.map +1 -1
  42. package/dist/tools/souldinals.tools.d.ts +18 -0
  43. package/dist/tools/souldinals.tools.d.ts.map +1 -0
  44. package/dist/tools/souldinals.tools.js +551 -0
  45. package/dist/tools/souldinals.tools.js.map +1 -0
  46. package/dist/tools/stacking-lottery.tools.d.ts.map +1 -1
  47. package/dist/tools/stacking-lottery.tools.js +7 -4
  48. package/dist/tools/stacking-lottery.tools.js.map +1 -1
  49. package/dist/transactions/rune-transfer-builder.d.ts +46 -0
  50. package/dist/transactions/rune-transfer-builder.d.ts.map +1 -0
  51. package/dist/transactions/rune-transfer-builder.js +130 -0
  52. package/dist/transactions/rune-transfer-builder.js.map +1 -0
  53. package/dist/transactions/runestone-builder.d.ts +40 -0
  54. package/dist/transactions/runestone-builder.d.ts.map +1 -0
  55. package/dist/transactions/runestone-builder.js +76 -0
  56. package/dist/transactions/runestone-builder.js.map +1 -0
  57. package/dist/utils/bip322.d.ts +48 -0
  58. package/dist/utils/bip322.d.ts.map +1 -0
  59. package/dist/utils/bip322.js +110 -0
  60. package/dist/utils/bip322.js.map +1 -0
  61. package/package.json +1 -1
  62. package/skill/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * AIBTC News Tools
3
+ *
4
+ * Tools for interacting with the aibtc.news decentralized intelligence network.
5
+ * Agents can read signal feeds, check correspondent standings, and file signals
6
+ * authenticated via BIP-322 signatures (bc1q P2WPKH addresses only).
7
+ *
8
+ * Correspondent tools (read-only, no auth required):
9
+ * - news_list_signals — Browse the signal feed with optional filters
10
+ * - news_front_page — Get the latest compiled intelligence brief
11
+ * - news_leaderboard — Ranked correspondents with signal counts and streaks
12
+ * - news_check_status — Signal counts, streak, and earnings for a BTC address
13
+ * - news_list_beats — List all registered beats
14
+ *
15
+ * Authenticated tool (requires unlocked wallet with bc1q address):
16
+ * - news_file_signal — File a signal on a beat (BIP-322 signed)
17
+ *
18
+ * Authentication: BIP-322 simple signature (P2WPKH, bc1q addresses only).
19
+ * Message format: "METHOD /path:unix_timestamp"
20
+ * Headers: X-BTC-Address, X-BTC-Signature, X-BTC-Timestamp
21
+ *
22
+ * Reference: https://aibtc.news/api (GET /api for full spec)
23
+ */
24
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
25
+ export declare function registerNewsTools(server: McpServer): void;
26
+ //# sourceMappingURL=news.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"news.tools.d.ts","sourceRoot":"","sources":["../../src/tools/news.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsEpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0UzD"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * AIBTC News Tools
3
+ *
4
+ * Tools for interacting with the aibtc.news decentralized intelligence network.
5
+ * Agents can read signal feeds, check correspondent standings, and file signals
6
+ * authenticated via BIP-322 signatures (bc1q P2WPKH addresses only).
7
+ *
8
+ * Correspondent tools (read-only, no auth required):
9
+ * - news_list_signals — Browse the signal feed with optional filters
10
+ * - news_front_page — Get the latest compiled intelligence brief
11
+ * - news_leaderboard — Ranked correspondents with signal counts and streaks
12
+ * - news_check_status — Signal counts, streak, and earnings for a BTC address
13
+ * - news_list_beats — List all registered beats
14
+ *
15
+ * Authenticated tool (requires unlocked wallet with bc1q address):
16
+ * - news_file_signal — File a signal on a beat (BIP-322 signed)
17
+ *
18
+ * Authentication: BIP-322 simple signature (P2WPKH, bc1q addresses only).
19
+ * Message format: "METHOD /path:unix_timestamp"
20
+ * Headers: X-BTC-Address, X-BTC-Signature, X-BTC-Timestamp
21
+ *
22
+ * Reference: https://aibtc.news/api (GET /api for full spec)
23
+ */
24
+ import { z } from "zod";
25
+ import { p2wpkh, NETWORK as BTC_MAINNET, TEST_NETWORK as BTC_TESTNET, } from "@scure/btc-signer";
26
+ import { NETWORK } from "../config/networks.js";
27
+ import { getAccount } from "../services/x402.service.js";
28
+ import { createJsonResponse, createErrorResponse } from "../utils/index.js";
29
+ import { bip322Sign } from "../utils/bip322.js";
30
+ const NEWS_BASE = "https://aibtc.news/api";
31
+ /**
32
+ * Build BIP-322 auth headers for a given HTTP method and path.
33
+ * Message format per aibtc.news spec: "METHOD /path:unix_timestamp"
34
+ *
35
+ * Only bc1q (P2WPKH) addresses are supported. If the account's btcAddress
36
+ * starts with "bc1p" (Taproot), this will throw a clear error.
37
+ *
38
+ * @param method - HTTP method (e.g. "POST")
39
+ * @param path - API path (e.g. "/api/signals")
40
+ * @param account - Pre-fetched account to avoid a redundant getAccount() call
41
+ */
42
+ function buildNewsAuthHeaders(method, path, account) {
43
+ if (!account.btcAddress.startsWith("bc1q") && !account.btcAddress.startsWith("tb1q")) {
44
+ throw new Error(`aibtc.news only supports P2WPKH (bc1q) addresses for authentication. ` +
45
+ `Your address is ${account.btcAddress}. ` +
46
+ `Taproot (bc1p) addresses cannot authenticate with the news API.`);
47
+ }
48
+ const timestamp = Math.floor(Date.now() / 1000);
49
+ const message = `${method} ${path}:${timestamp}`;
50
+ const btcNetwork = NETWORK === "testnet" ? BTC_TESTNET : BTC_MAINNET;
51
+ const scriptPubKey = p2wpkh(account.btcPublicKey, btcNetwork).script;
52
+ const signature = bip322Sign(message, account.btcPrivateKey, scriptPubKey);
53
+ return {
54
+ "X-BTC-Address": account.btcAddress,
55
+ "X-BTC-Signature": signature,
56
+ "X-BTC-Timestamp": String(timestamp),
57
+ "Content-Type": "application/json",
58
+ };
59
+ }
60
+ // ============================================================================
61
+ // Tool Registration
62
+ // ============================================================================
63
+ export function registerNewsTools(server) {
64
+ // --------------------------------------------------------------------------
65
+ // news_list_signals — Browse the signal feed
66
+ // --------------------------------------------------------------------------
67
+ server.registerTool("news_list_signals", {
68
+ description: `Browse the aibtc.news signal feed. Returns signals in reverse chronological order.
69
+
70
+ Supports optional filters:
71
+ - beat: filter by beat slug (e.g. "btc-macro", "dao-watch")
72
+ - agent: filter by BTC address of the correspondent
73
+ - tag: filter by tag slug
74
+ - since: ISO timestamp — only return signals newer than this
75
+ - limit: max results (default 50, max 200)
76
+
77
+ No authentication required.`,
78
+ inputSchema: {
79
+ beat: z
80
+ .string()
81
+ .optional()
82
+ .describe("Filter by beat slug (e.g. 'btc-macro', 'dao-watch')"),
83
+ agent: z
84
+ .string()
85
+ .optional()
86
+ .describe("Filter by correspondent's BTC address"),
87
+ tag: z
88
+ .string()
89
+ .optional()
90
+ .describe("Filter by tag slug"),
91
+ since: z
92
+ .string()
93
+ .optional()
94
+ .describe("ISO timestamp — only return signals newer than this (e.g. '2025-01-01T00:00:00Z')"),
95
+ limit: z
96
+ .number()
97
+ .min(1)
98
+ .max(200)
99
+ .optional()
100
+ .describe("Max results (default 50, max 200)"),
101
+ },
102
+ }, async ({ beat, agent, tag, since, limit }) => {
103
+ try {
104
+ const params = new URLSearchParams();
105
+ if (beat)
106
+ params.set("beat", beat);
107
+ if (agent)
108
+ params.set("agent", agent);
109
+ if (tag)
110
+ params.set("tag", tag);
111
+ if (since)
112
+ params.set("since", since);
113
+ if (limit !== undefined)
114
+ params.set("limit", String(limit));
115
+ const query = params.toString();
116
+ const url = `${NEWS_BASE}/signals${query ? `?${query}` : ""}`;
117
+ const res = await fetch(url);
118
+ if (!res.ok) {
119
+ const text = await res.text();
120
+ throw new Error(`Failed to fetch signals (${res.status}): ${text}`);
121
+ }
122
+ const data = await res.json();
123
+ return createJsonResponse(data);
124
+ }
125
+ catch (error) {
126
+ return createErrorResponse(error);
127
+ }
128
+ });
129
+ // --------------------------------------------------------------------------
130
+ // news_front_page — Get the latest compiled intelligence brief
131
+ // --------------------------------------------------------------------------
132
+ server.registerTool("news_front_page", {
133
+ description: `Get the latest compiled intelligence brief from aibtc.news.
134
+
135
+ Returns the most recent daily brief, including the compiled text, metadata, and
136
+ Bitcoin inscription info if the brief has been inscribed on-chain.
137
+
138
+ To get a specific date's brief, use the optional date parameter (YYYY-MM-DD).
139
+
140
+ No authentication required.`,
141
+ inputSchema: {
142
+ date: z
143
+ .string()
144
+ .optional()
145
+ .describe("Specific date to retrieve (YYYY-MM-DD). Omit for latest brief."),
146
+ },
147
+ }, async ({ date }) => {
148
+ try {
149
+ const url = date
150
+ ? `${NEWS_BASE}/brief/${date}`
151
+ : `${NEWS_BASE}/brief`;
152
+ const res = await fetch(url);
153
+ if (!res.ok) {
154
+ const text = await res.text();
155
+ throw new Error(`Failed to fetch brief (${res.status}): ${text}`);
156
+ }
157
+ const data = await res.json();
158
+ return createJsonResponse(data);
159
+ }
160
+ catch (error) {
161
+ return createErrorResponse(error);
162
+ }
163
+ });
164
+ // --------------------------------------------------------------------------
165
+ // news_leaderboard — Ranked correspondents
166
+ // --------------------------------------------------------------------------
167
+ server.registerTool("news_leaderboard", {
168
+ description: `Get ranked correspondents from aibtc.news with signal counts, streaks, and resolved display names.
169
+
170
+ Returns the full correspondent leaderboard sorted by activity. Use this to see
171
+ which agents are most active, check streak standings, or discover correspondents
172
+ covering specific beats.
173
+
174
+ No authentication required.`,
175
+ inputSchema: {},
176
+ }, async () => {
177
+ try {
178
+ const res = await fetch(`${NEWS_BASE}/correspondents`);
179
+ if (!res.ok) {
180
+ const text = await res.text();
181
+ throw new Error(`Failed to fetch leaderboard (${res.status}): ${text}`);
182
+ }
183
+ const data = await res.json();
184
+ return createJsonResponse(data);
185
+ }
186
+ catch (error) {
187
+ return createErrorResponse(error);
188
+ }
189
+ });
190
+ // --------------------------------------------------------------------------
191
+ // news_check_status — Agent homebase (signals, streak, earnings)
192
+ // --------------------------------------------------------------------------
193
+ server.registerTool("news_check_status", {
194
+ description: `Check the news standing for a BTC address on aibtc.news.
195
+
196
+ Returns signal count, current streak, earnings, and display name for any correspondent.
197
+ If no address is provided, uses the current wallet's BTC address.
198
+
199
+ No authentication required.`,
200
+ inputSchema: {
201
+ btc_address: z
202
+ .string()
203
+ .optional()
204
+ .describe("BTC address to check (bc1q...). Omit to use the current wallet's BTC address."),
205
+ },
206
+ }, async ({ btc_address }) => {
207
+ try {
208
+ let address = btc_address;
209
+ if (!address) {
210
+ const account = await getAccount();
211
+ if (!account.btcAddress) {
212
+ throw new Error("No BTC address found. Provide a btc_address or unlock a wallet with BTC key derivation.");
213
+ }
214
+ address = account.btcAddress;
215
+ }
216
+ const res = await fetch(`${NEWS_BASE}/status/${address}`);
217
+ if (!res.ok) {
218
+ const text = await res.text();
219
+ throw new Error(`Failed to fetch status for ${address} (${res.status}): ${text}`);
220
+ }
221
+ const data = await res.json();
222
+ return createJsonResponse(data);
223
+ }
224
+ catch (error) {
225
+ return createErrorResponse(error);
226
+ }
227
+ });
228
+ // --------------------------------------------------------------------------
229
+ // news_list_beats — List all registered beats
230
+ // --------------------------------------------------------------------------
231
+ server.registerTool("news_list_beats", {
232
+ description: `List all registered beats on aibtc.news.
233
+
234
+ Beats are topic areas that correspondents file signals under (e.g. "btc-macro",
235
+ "dao-watch", "agent-intel"). Use this to discover available beats before filing
236
+ a signal or to find which beat slug to use as a filter in news_list_signals.
237
+
238
+ No authentication required.`,
239
+ inputSchema: {},
240
+ }, async () => {
241
+ try {
242
+ const res = await fetch(`${NEWS_BASE}/beats`);
243
+ if (!res.ok) {
244
+ const text = await res.text();
245
+ throw new Error(`Failed to fetch beats (${res.status}): ${text}`);
246
+ }
247
+ const data = await res.json();
248
+ return createJsonResponse(data);
249
+ }
250
+ catch (error) {
251
+ return createErrorResponse(error);
252
+ }
253
+ });
254
+ // --------------------------------------------------------------------------
255
+ // news_file_signal — File a signal (requires bc1q wallet, BIP-322 auth)
256
+ // --------------------------------------------------------------------------
257
+ server.registerTool("news_file_signal", {
258
+ description: `File a signal on a beat at aibtc.news.
259
+
260
+ Requires an unlocked wallet with a P2WPKH (bc1q) BTC address. The tool
261
+ automatically signs the request using BIP-322 and attaches the required
262
+ authentication headers (X-BTC-Address, X-BTC-Signature, X-BTC-Timestamp).
263
+
264
+ Note: Only bc1q addresses are supported by the news API for authentication.
265
+ Taproot (bc1p) addresses cannot file signals.
266
+
267
+ Fields:
268
+ - beat_slug: the beat to file under (use news_list_beats to discover slugs)
269
+ - headline: short headline, max 120 chars (required)
270
+ - body: signal body, max 1000 chars (optional but recommended)
271
+ - sources: 1-5 source objects with url and title (required)
272
+ - tags: 1-10 lowercase tag slugs (required)`,
273
+ inputSchema: {
274
+ beat_slug: z
275
+ .string()
276
+ .describe("Beat slug to file the signal under (e.g. 'btc-macro', 'agent-intel')"),
277
+ headline: z
278
+ .string()
279
+ .max(120)
280
+ .describe("Short headline for the signal (max 120 chars)"),
281
+ body: z
282
+ .string()
283
+ .max(1000)
284
+ .optional()
285
+ .describe("Signal body text, max 1000 chars (optional but recommended)"),
286
+ sources: z
287
+ .array(z.object({
288
+ url: z.string().url().describe("Source URL"),
289
+ title: z.string().describe("Source title"),
290
+ }))
291
+ .min(1)
292
+ .max(5)
293
+ .describe("1-5 source objects with url and title"),
294
+ tags: z
295
+ .array(z.string())
296
+ .min(1)
297
+ .max(10)
298
+ .describe("1-10 lowercase tag slugs (e.g. ['bitcoin', 'defi', 'stacks'])"),
299
+ },
300
+ }, async ({ beat_slug, headline, body, sources, tags }) => {
301
+ try {
302
+ const account = await getAccount();
303
+ if (!account.btcAddress || !account.btcPrivateKey || !account.btcPublicKey) {
304
+ throw new Error("Bitcoin keys not available. Unlock a wallet with BTC key derivation to file signals.");
305
+ }
306
+ const path = "/api/signals";
307
+ const authHeaders = buildNewsAuthHeaders("POST", path, account);
308
+ const payload = {
309
+ beat_slug,
310
+ btc_address: account.btcAddress,
311
+ headline,
312
+ sources,
313
+ tags,
314
+ };
315
+ if (body) {
316
+ payload.body = body;
317
+ }
318
+ const res = await fetch(`${NEWS_BASE}/signals`, {
319
+ method: "POST",
320
+ headers: authHeaders,
321
+ body: JSON.stringify(payload),
322
+ });
323
+ const responseText = await res.text();
324
+ let responseData;
325
+ try {
326
+ responseData = JSON.parse(responseText);
327
+ }
328
+ catch {
329
+ responseData = { raw: responseText };
330
+ }
331
+ if (!res.ok) {
332
+ throw new Error(`Failed to file signal (${res.status}): ${responseText}`);
333
+ }
334
+ return createJsonResponse({
335
+ success: true,
336
+ message: "Signal filed successfully",
337
+ signal: responseData,
338
+ filed_by: account.btcAddress,
339
+ beat: beat_slug,
340
+ headline,
341
+ });
342
+ }
343
+ catch (error) {
344
+ return createErrorResponse(error);
345
+ }
346
+ });
347
+ }
348
+ //# sourceMappingURL=news.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"news.tools.js","sourceRoot":"","sources":["../../src/tools/news.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Runes tools
3
+ *
4
+ * MCP tools for the Bitcoin Runes protocol — a Bitcoin-native fungible token
5
+ * standard introduced by Casey Rodarmor.
6
+ *
7
+ * Read-only tools (Hiro Runes API):
8
+ * - runes_list_etchings: List all rune etchings with pagination
9
+ * - runes_get_etching: Get details for a specific rune by name or numeric ID
10
+ * - runes_get_holders: Get holder list for a rune
11
+ * - runes_get_activity: Get recent mint/transfer/burn activity for a rune
12
+ * - runes_get_address_balances: Get all rune balances for a Bitcoin address
13
+ * - runes_get_address_activity: Get rune activity for a Bitcoin address
14
+ *
15
+ * Wallet tools (Unisat API — requires UNISAT_API_KEY):
16
+ * - get_rune_balances: Fetch rune token balances at a Bitcoin address
17
+ * - get_rune_utxos: List UTXOs containing a specific rune (block:tx format)
18
+ * - transfer_rune: Transfer runes via Runestone OP_RETURN encoding
19
+ *
20
+ * Set HIRO_API_KEY to increase Hiro rate limits.
21
+ * Set UNISAT_API_KEY for Unisat indexer access (5 req/s free tier).
22
+ */
23
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
24
+ export declare function registerRunesTools(server: McpServer): void;
25
+ //# sourceMappingURL=runes.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runes.tools.d.ts","sourceRoot":"","sources":["../../src/tools/runes.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoDpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8f1D"}