@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.
- package/dist/services/credentials.d.ts +31 -0
- package/dist/services/credentials.d.ts.map +1 -0
- package/dist/services/credentials.js +162 -0
- package/dist/services/credentials.js.map +1 -0
- package/dist/services/erc8004.service.d.ts +28 -0
- package/dist/services/erc8004.service.d.ts.map +1 -1
- package/dist/services/erc8004.service.js +115 -0
- package/dist/services/erc8004.service.js.map +1 -1
- package/dist/services/unisat-indexer.d.ts +97 -0
- package/dist/services/unisat-indexer.d.ts.map +1 -0
- package/dist/services/unisat-indexer.js +178 -0
- package/dist/services/unisat-indexer.js.map +1 -0
- package/dist/tools/bounty-scanner.tools.d.ts +29 -0
- package/dist/tools/bounty-scanner.tools.d.ts.map +1 -0
- package/dist/tools/bounty-scanner.tools.js +405 -0
- package/dist/tools/bounty-scanner.tools.js.map +1 -0
- package/dist/tools/credentials.tools.d.ts +9 -0
- package/dist/tools/credentials.tools.d.ts.map +1 -0
- package/dist/tools/credentials.tools.js +151 -0
- package/dist/tools/credentials.tools.js.map +1 -0
- package/dist/tools/identity.tools.d.ts +22 -0
- package/dist/tools/identity.tools.d.ts.map +1 -0
- package/dist/tools/identity.tools.js +404 -0
- package/dist/tools/identity.tools.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +21 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/news.tools.d.ts +26 -0
- package/dist/tools/news.tools.d.ts.map +1 -0
- package/dist/tools/news.tools.js +348 -0
- package/dist/tools/news.tools.js.map +1 -0
- package/dist/tools/runes.tools.d.ts +25 -0
- package/dist/tools/runes.tools.d.ts.map +1 -0
- package/dist/tools/runes.tools.js +464 -0
- package/dist/tools/runes.tools.js.map +1 -0
- package/dist/tools/signing.tools.d.ts.map +1 -1
- package/dist/tools/signing.tools.js +3 -88
- package/dist/tools/signing.tools.js.map +1 -1
- package/dist/tools/skill-mappings.d.ts.map +1 -1
- package/dist/tools/skill-mappings.js +40 -0
- package/dist/tools/skill-mappings.js.map +1 -1
- package/dist/tools/souldinals.tools.d.ts +18 -0
- package/dist/tools/souldinals.tools.d.ts.map +1 -0
- package/dist/tools/souldinals.tools.js +551 -0
- package/dist/tools/souldinals.tools.js.map +1 -0
- package/dist/tools/stacking-lottery.tools.d.ts.map +1 -1
- package/dist/tools/stacking-lottery.tools.js +7 -4
- package/dist/tools/stacking-lottery.tools.js.map +1 -1
- package/dist/transactions/rune-transfer-builder.d.ts +46 -0
- package/dist/transactions/rune-transfer-builder.d.ts.map +1 -0
- package/dist/transactions/rune-transfer-builder.js +130 -0
- package/dist/transactions/rune-transfer-builder.js.map +1 -0
- package/dist/transactions/runestone-builder.d.ts +40 -0
- package/dist/transactions/runestone-builder.d.ts.map +1 -0
- package/dist/transactions/runestone-builder.js +76 -0
- package/dist/transactions/runestone-builder.js.map +1 -0
- package/dist/utils/bip322.d.ts +48 -0
- package/dist/utils/bip322.d.ts.map +1 -0
- package/dist/utils/bip322.js +110 -0
- package/dist/utils/bip322.js.map +1 -0
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
package/dist/tools/index.js.map
CHANGED
|
@@ -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"}
|