@unclick/mcp-server 0.1.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 +139 -0
- package/dist/amazon-tool.d.ts +5 -0
- package/dist/amazon-tool.d.ts.map +1 -0
- package/dist/amazon-tool.js +307 -0
- package/dist/amazon-tool.js.map +1 -0
- package/dist/bluesky-tool.d.ts +2 -0
- package/dist/bluesky-tool.d.ts.map +1 -0
- package/dist/bluesky-tool.js +368 -0
- package/dist/bluesky-tool.js.map +1 -0
- package/dist/catalog.d.ts +28 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +1865 -0
- package/dist/catalog.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +73 -0
- package/dist/client.js.map +1 -0
- package/dist/converter-tools.d.ts +50 -0
- package/dist/converter-tools.d.ts.map +1 -0
- package/dist/converter-tools.js +137 -0
- package/dist/converter-tools.js.map +1 -0
- package/dist/csuite-tool.d.ts +35 -0
- package/dist/csuite-tool.d.ts.map +1 -0
- package/dist/csuite-tool.js +791 -0
- package/dist/csuite-tool.js.map +1 -0
- package/dist/discord-tool.d.ts +8 -0
- package/dist/discord-tool.d.ts.map +1 -0
- package/dist/discord-tool.js +195 -0
- package/dist/discord-tool.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/local-tools.d.ts +72 -0
- package/dist/local-tools.d.ts.map +1 -0
- package/dist/local-tools.js +563 -0
- package/dist/local-tools.js.map +1 -0
- package/dist/mastodon-tool.d.ts +2 -0
- package/dist/mastodon-tool.d.ts.map +1 -0
- package/dist/mastodon-tool.js +372 -0
- package/dist/mastodon-tool.js.map +1 -0
- package/dist/reddit-tool.d.ts +59 -0
- package/dist/reddit-tool.d.ts.map +1 -0
- package/dist/reddit-tool.js +348 -0
- package/dist/reddit-tool.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2337 -0
- package/dist/server.js.map +1 -0
- package/dist/shopify-tool.d.ts +8 -0
- package/dist/shopify-tool.d.ts.map +1 -0
- package/dist/shopify-tool.js +305 -0
- package/dist/shopify-tool.js.map +1 -0
- package/dist/slack-tool.d.ts +2 -0
- package/dist/slack-tool.d.ts.map +1 -0
- package/dist/slack-tool.js +316 -0
- package/dist/slack-tool.js.map +1 -0
- package/dist/telegram-tool.d.ts +7 -0
- package/dist/telegram-tool.d.ts.map +1 -0
- package/dist/telegram-tool.js +297 -0
- package/dist/telegram-tool.js.map +1 -0
- package/dist/vault-tool.d.ts +2 -0
- package/dist/vault-tool.d.ts.map +1 -0
- package/dist/vault-tool.js +395 -0
- package/dist/vault-tool.js.map +1 -0
- package/dist/xero-tool.d.ts +9 -0
- package/dist/xero-tool.d.ts.map +1 -0
- package/dist/xero-tool.js +330 -0
- package/dist/xero-tool.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
// ─── Bluesky / AT Protocol Tool ───────────────────────────────────────────────
|
|
2
|
+
// Connects to the Bluesky social network via the AT Protocol XRPC API.
|
|
3
|
+
// Each call authenticates fresh via createSession (no token persistence).
|
|
4
|
+
// No external dependencies - Node.js built-in fetch only.
|
|
5
|
+
const BSKY_HOST = "https://bsky.social";
|
|
6
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
7
|
+
async function createSession(identifier, password) {
|
|
8
|
+
const res = await fetch(`${BSKY_HOST}/xrpc/com.atproto.server.createSession`, {
|
|
9
|
+
method: "POST",
|
|
10
|
+
headers: { "Content-Type": "application/json" },
|
|
11
|
+
body: JSON.stringify({ identifier, password }),
|
|
12
|
+
});
|
|
13
|
+
if (!res.ok) {
|
|
14
|
+
const body = await res.text();
|
|
15
|
+
throw new Error(`Auth failed (${res.status}): ${body}`);
|
|
16
|
+
}
|
|
17
|
+
return res.json();
|
|
18
|
+
}
|
|
19
|
+
async function xrpcGet(lexicon, token, params = {}) {
|
|
20
|
+
const qs = new URLSearchParams();
|
|
21
|
+
for (const [k, v] of Object.entries(params)) {
|
|
22
|
+
if (v !== undefined && v !== null) {
|
|
23
|
+
if (Array.isArray(v)) {
|
|
24
|
+
for (const item of v)
|
|
25
|
+
qs.append(k, String(item));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
qs.set(k, String(v));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const url = `${BSKY_HOST}/xrpc/${lexicon}${qs.toString() ? `?${qs}` : ""}`;
|
|
33
|
+
const res = await fetch(url, {
|
|
34
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
35
|
+
});
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
const body = await res.text();
|
|
38
|
+
throw new Error(`${lexicon} failed (${res.status}): ${body}`);
|
|
39
|
+
}
|
|
40
|
+
return res.json();
|
|
41
|
+
}
|
|
42
|
+
async function xrpcPost(lexicon, token, body) {
|
|
43
|
+
const res = await fetch(`${BSKY_HOST}/xrpc/${lexicon}`, {
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: {
|
|
46
|
+
"Content-Type": "application/json",
|
|
47
|
+
Authorization: `Bearer ${token}`,
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify(body),
|
|
50
|
+
});
|
|
51
|
+
if (!res.ok) {
|
|
52
|
+
const text = await res.text();
|
|
53
|
+
throw new Error(`${lexicon} failed (${res.status}): ${text}`);
|
|
54
|
+
}
|
|
55
|
+
return res.json();
|
|
56
|
+
}
|
|
57
|
+
function parseAtUri(uri) {
|
|
58
|
+
// at://did:plc:xxxx/app.bsky.feed.post/rkey
|
|
59
|
+
const match = uri.match(/^at:\/\/(did:[^/]+)\/([^/]+)\/([^/]+)$/);
|
|
60
|
+
if (!match)
|
|
61
|
+
throw new Error(`Invalid AT URI: "${uri}"`);
|
|
62
|
+
return { did: match[1], collection: match[2], rkey: match[3] };
|
|
63
|
+
}
|
|
64
|
+
async function resolvePostRef(uri, token) {
|
|
65
|
+
const data = await xrpcGet("app.bsky.feed.getPosts", token, { uris: [uri] });
|
|
66
|
+
const post = data.posts?.[0];
|
|
67
|
+
if (!post)
|
|
68
|
+
throw new Error(`Post not found: ${uri}`);
|
|
69
|
+
return { uri: post.uri, cid: post.cid };
|
|
70
|
+
}
|
|
71
|
+
function nowIso() {
|
|
72
|
+
return new Date().toISOString();
|
|
73
|
+
}
|
|
74
|
+
// ─── Action handlers ──────────────────────────────────────────────────────────
|
|
75
|
+
async function actionPost(identifier, password, text, langs) {
|
|
76
|
+
if (!text.trim())
|
|
77
|
+
return { error: "text is required." };
|
|
78
|
+
if (text.length > 300)
|
|
79
|
+
return { error: "Text exceeds 300 characters." };
|
|
80
|
+
const session = await createSession(identifier, password);
|
|
81
|
+
const record = {
|
|
82
|
+
$type: "app.bsky.feed.post",
|
|
83
|
+
text,
|
|
84
|
+
createdAt: nowIso(),
|
|
85
|
+
};
|
|
86
|
+
if (langs && langs.length > 0)
|
|
87
|
+
record.langs = langs;
|
|
88
|
+
const result = await xrpcPost("com.atproto.repo.createRecord", session.accessJwt, {
|
|
89
|
+
repo: session.did,
|
|
90
|
+
collection: "app.bsky.feed.post",
|
|
91
|
+
record,
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
uri: result.uri,
|
|
96
|
+
cid: result.cid,
|
|
97
|
+
text,
|
|
98
|
+
author: session.handle,
|
|
99
|
+
posted_at: nowIso(),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async function actionReadFeed(identifier, password, feed_type, actor, limit = 20, cursor) {
|
|
103
|
+
const session = await createSession(identifier, password);
|
|
104
|
+
if (feed_type === "user") {
|
|
105
|
+
const target = actor ?? session.handle;
|
|
106
|
+
const data = await xrpcGet("app.bsky.feed.getAuthorFeed", session.accessJwt, {
|
|
107
|
+
actor: target,
|
|
108
|
+
limit: Math.min(100, Math.max(1, limit)),
|
|
109
|
+
cursor,
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
feed_type: "user",
|
|
113
|
+
actor: target,
|
|
114
|
+
count: data.feed?.length ?? 0,
|
|
115
|
+
cursor: data.cursor,
|
|
116
|
+
posts: data.feed,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// home timeline
|
|
120
|
+
const data = await xrpcGet("app.bsky.feed.getTimeline", session.accessJwt, {
|
|
121
|
+
limit: Math.min(100, Math.max(1, limit)),
|
|
122
|
+
cursor,
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
feed_type: "home",
|
|
126
|
+
count: data.feed?.length ?? 0,
|
|
127
|
+
cursor: data.cursor,
|
|
128
|
+
posts: data.feed,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
async function actionReply(identifier, password, text, parent_uri, root_uri, langs) {
|
|
132
|
+
if (!text.trim())
|
|
133
|
+
return { error: "text is required." };
|
|
134
|
+
if (!parent_uri.trim())
|
|
135
|
+
return { error: "parent_uri is required." };
|
|
136
|
+
if (text.length > 300)
|
|
137
|
+
return { error: "Text exceeds 300 characters." };
|
|
138
|
+
const session = await createSession(identifier, password);
|
|
139
|
+
const parentRef = await resolvePostRef(parent_uri, session.accessJwt);
|
|
140
|
+
const rootRef = root_uri
|
|
141
|
+
? await resolvePostRef(root_uri, session.accessJwt)
|
|
142
|
+
: parentRef;
|
|
143
|
+
const record = {
|
|
144
|
+
$type: "app.bsky.feed.post",
|
|
145
|
+
text,
|
|
146
|
+
createdAt: nowIso(),
|
|
147
|
+
reply: {
|
|
148
|
+
root: rootRef,
|
|
149
|
+
parent: parentRef,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
if (langs && langs.length > 0)
|
|
153
|
+
record.langs = langs;
|
|
154
|
+
const result = await xrpcPost("com.atproto.repo.createRecord", session.accessJwt, {
|
|
155
|
+
repo: session.did,
|
|
156
|
+
collection: "app.bsky.feed.post",
|
|
157
|
+
record,
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
success: true,
|
|
161
|
+
uri: result.uri,
|
|
162
|
+
cid: result.cid,
|
|
163
|
+
text,
|
|
164
|
+
parent_uri,
|
|
165
|
+
root_uri: rootRef.uri,
|
|
166
|
+
author: session.handle,
|
|
167
|
+
posted_at: nowIso(),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
async function actionLike(identifier, password, post_uri) {
|
|
171
|
+
if (!post_uri.trim())
|
|
172
|
+
return { error: "post_uri is required." };
|
|
173
|
+
const session = await createSession(identifier, password);
|
|
174
|
+
const subject = await resolvePostRef(post_uri, session.accessJwt);
|
|
175
|
+
const result = await xrpcPost("com.atproto.repo.createRecord", session.accessJwt, {
|
|
176
|
+
repo: session.did,
|
|
177
|
+
collection: "app.bsky.feed.like",
|
|
178
|
+
record: {
|
|
179
|
+
$type: "app.bsky.feed.like",
|
|
180
|
+
subject,
|
|
181
|
+
createdAt: nowIso(),
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
success: true,
|
|
186
|
+
like_uri: result.uri,
|
|
187
|
+
post_uri: subject.uri,
|
|
188
|
+
author: session.handle,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
async function actionRepost(identifier, password, post_uri) {
|
|
192
|
+
if (!post_uri.trim())
|
|
193
|
+
return { error: "post_uri is required." };
|
|
194
|
+
const session = await createSession(identifier, password);
|
|
195
|
+
const subject = await resolvePostRef(post_uri, session.accessJwt);
|
|
196
|
+
const result = await xrpcPost("com.atproto.repo.createRecord", session.accessJwt, {
|
|
197
|
+
repo: session.did,
|
|
198
|
+
collection: "app.bsky.feed.repost",
|
|
199
|
+
record: {
|
|
200
|
+
$type: "app.bsky.feed.repost",
|
|
201
|
+
subject,
|
|
202
|
+
createdAt: nowIso(),
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
return {
|
|
206
|
+
success: true,
|
|
207
|
+
repost_uri: result.uri,
|
|
208
|
+
post_uri: subject.uri,
|
|
209
|
+
author: session.handle,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
async function actionSearch(identifier, password, query, type, limit = 25, cursor) {
|
|
213
|
+
if (!query.trim())
|
|
214
|
+
return { error: "query is required." };
|
|
215
|
+
const session = await createSession(identifier, password);
|
|
216
|
+
const cap = Math.min(100, Math.max(1, limit));
|
|
217
|
+
if (type === "users") {
|
|
218
|
+
const data = await xrpcGet("app.bsky.actor.searchActors", session.accessJwt, {
|
|
219
|
+
q: query,
|
|
220
|
+
limit: cap,
|
|
221
|
+
cursor,
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
type: "users",
|
|
225
|
+
query,
|
|
226
|
+
count: data.actors?.length ?? 0,
|
|
227
|
+
cursor: data.cursor,
|
|
228
|
+
actors: data.actors,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const data = await xrpcGet("app.bsky.feed.searchPosts", session.accessJwt, {
|
|
232
|
+
q: query,
|
|
233
|
+
limit: cap,
|
|
234
|
+
cursor,
|
|
235
|
+
});
|
|
236
|
+
return {
|
|
237
|
+
type: "posts",
|
|
238
|
+
query,
|
|
239
|
+
count: data.posts?.length ?? 0,
|
|
240
|
+
hits_total: data.hitsTotal,
|
|
241
|
+
cursor: data.cursor,
|
|
242
|
+
posts: data.posts,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async function actionProfile(identifier, password, actor) {
|
|
246
|
+
if (!actor.trim())
|
|
247
|
+
return { error: "actor is required." };
|
|
248
|
+
const session = await createSession(identifier, password);
|
|
249
|
+
return xrpcGet("app.bsky.actor.getProfile", session.accessJwt, { actor });
|
|
250
|
+
}
|
|
251
|
+
async function actionFollow(identifier, password, actor, unfollow) {
|
|
252
|
+
if (!actor.trim())
|
|
253
|
+
return { error: "actor is required." };
|
|
254
|
+
const session = await createSession(identifier, password);
|
|
255
|
+
// Resolve actor to DID (accepts handle or DID)
|
|
256
|
+
const profile = await xrpcGet("app.bsky.actor.getProfile", session.accessJwt, {
|
|
257
|
+
actor,
|
|
258
|
+
});
|
|
259
|
+
const subjectDid = profile.did;
|
|
260
|
+
if (unfollow) {
|
|
261
|
+
// Find the follow record via listRecords
|
|
262
|
+
const records = await xrpcGet("com.atproto.repo.listRecords", session.accessJwt, {
|
|
263
|
+
repo: session.did,
|
|
264
|
+
collection: "app.bsky.graph.follow",
|
|
265
|
+
limit: 100,
|
|
266
|
+
});
|
|
267
|
+
const followRecord = records.records?.find((r) => r.value?.subject === subjectDid);
|
|
268
|
+
if (!followRecord) {
|
|
269
|
+
return { error: `You are not following @${profile.handle}.` };
|
|
270
|
+
}
|
|
271
|
+
const parsed = parseAtUri(followRecord.uri);
|
|
272
|
+
await xrpcPost("com.atproto.repo.deleteRecord", session.accessJwt, {
|
|
273
|
+
repo: session.did,
|
|
274
|
+
collection: "app.bsky.graph.follow",
|
|
275
|
+
rkey: parsed.rkey,
|
|
276
|
+
});
|
|
277
|
+
return {
|
|
278
|
+
success: true,
|
|
279
|
+
action: "unfollowed",
|
|
280
|
+
actor: profile.handle,
|
|
281
|
+
actor_did: subjectDid,
|
|
282
|
+
author: session.handle,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const result = await xrpcPost("com.atproto.repo.createRecord", session.accessJwt, {
|
|
286
|
+
repo: session.did,
|
|
287
|
+
collection: "app.bsky.graph.follow",
|
|
288
|
+
record: {
|
|
289
|
+
$type: "app.bsky.graph.follow",
|
|
290
|
+
subject: subjectDid,
|
|
291
|
+
createdAt: nowIso(),
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
return {
|
|
295
|
+
success: true,
|
|
296
|
+
action: "followed",
|
|
297
|
+
follow_uri: result.uri,
|
|
298
|
+
actor: profile.handle,
|
|
299
|
+
actor_did: subjectDid,
|
|
300
|
+
author: session.handle,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
// ─── Public dispatcher ────────────────────────────────────────────────────────
|
|
304
|
+
export async function blueskyAction(action, args) {
|
|
305
|
+
const identifier = String(args.identifier ?? "").trim();
|
|
306
|
+
const password = String(args.password ?? "").trim();
|
|
307
|
+
if (!identifier)
|
|
308
|
+
return { error: "identifier is required (Bluesky handle or email)." };
|
|
309
|
+
if (!password)
|
|
310
|
+
return { error: "password is required." };
|
|
311
|
+
try {
|
|
312
|
+
switch (action) {
|
|
313
|
+
case "bluesky_post": {
|
|
314
|
+
const text = String(args.text ?? "");
|
|
315
|
+
const langs = Array.isArray(args.langs) ? args.langs.map(String) : undefined;
|
|
316
|
+
return actionPost(identifier, password, text, langs);
|
|
317
|
+
}
|
|
318
|
+
case "bluesky_read_feed": {
|
|
319
|
+
const feed_type = args.feed_type ?? "home";
|
|
320
|
+
const actor = args.actor ? String(args.actor) : undefined;
|
|
321
|
+
const limit = Math.min(100, Math.max(1, Number(args.limit ?? 20)));
|
|
322
|
+
const cursor = args.cursor ? String(args.cursor) : undefined;
|
|
323
|
+
return actionReadFeed(identifier, password, feed_type, actor, limit, cursor);
|
|
324
|
+
}
|
|
325
|
+
case "bluesky_reply": {
|
|
326
|
+
const text = String(args.text ?? "");
|
|
327
|
+
const parent_uri = String(args.parent_uri ?? "");
|
|
328
|
+
const root_uri = args.root_uri ? String(args.root_uri) : undefined;
|
|
329
|
+
const langs = Array.isArray(args.langs) ? args.langs.map(String) : undefined;
|
|
330
|
+
return actionReply(identifier, password, text, parent_uri, root_uri, langs);
|
|
331
|
+
}
|
|
332
|
+
case "bluesky_like": {
|
|
333
|
+
const post_uri = String(args.post_uri ?? "");
|
|
334
|
+
return actionLike(identifier, password, post_uri);
|
|
335
|
+
}
|
|
336
|
+
case "bluesky_repost": {
|
|
337
|
+
const post_uri = String(args.post_uri ?? "");
|
|
338
|
+
return actionRepost(identifier, password, post_uri);
|
|
339
|
+
}
|
|
340
|
+
case "bluesky_search": {
|
|
341
|
+
const query = String(args.query ?? "");
|
|
342
|
+
const type = args.type ?? "posts";
|
|
343
|
+
const limit = Math.min(100, Math.max(1, Number(args.limit ?? 25)));
|
|
344
|
+
const cursor = args.cursor ? String(args.cursor) : undefined;
|
|
345
|
+
return actionSearch(identifier, password, query, type, limit, cursor);
|
|
346
|
+
}
|
|
347
|
+
case "bluesky_profile": {
|
|
348
|
+
const actor = String(args.actor ?? "");
|
|
349
|
+
return actionProfile(identifier, password, actor);
|
|
350
|
+
}
|
|
351
|
+
case "bluesky_follow": {
|
|
352
|
+
const actor = String(args.actor ?? "");
|
|
353
|
+
const unfollow = args.unfollow === true;
|
|
354
|
+
return actionFollow(identifier, password, actor, unfollow);
|
|
355
|
+
}
|
|
356
|
+
default:
|
|
357
|
+
return {
|
|
358
|
+
error: `Unknown Bluesky action: "${action}". ` +
|
|
359
|
+
"Valid actions: bluesky_post, bluesky_read_feed, bluesky_reply, " +
|
|
360
|
+
"bluesky_like, bluesky_repost, bluesky_search, bluesky_profile, bluesky_follow.",
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
catch (err) {
|
|
365
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=bluesky-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bluesky-tool.js","sourceRoot":"","sources":["../src/bluesky-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface EndpointDef {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
method: "GET" | "POST" | "DELETE" | "PATCH";
|
|
6
|
+
path: string;
|
|
7
|
+
requiresAuth: boolean;
|
|
8
|
+
/** JSON Schema for request body parameters */
|
|
9
|
+
inputSchema: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolDef {
|
|
12
|
+
slug: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
category: string;
|
|
16
|
+
scope: string;
|
|
17
|
+
endpoints: EndpointDef[];
|
|
18
|
+
}
|
|
19
|
+
export declare const CATEGORIES: readonly ["text", "data", "media", "time", "network", "generation", "storage", "platform"];
|
|
20
|
+
export declare const CATALOG: ToolDef[];
|
|
21
|
+
/** Flat map of all endpoints keyed by endpoint id */
|
|
22
|
+
export declare const ENDPOINT_MAP: Map<string, {
|
|
23
|
+
tool: ToolDef;
|
|
24
|
+
endpoint: EndpointDef;
|
|
25
|
+
}>;
|
|
26
|
+
/** Map of tool slug → ToolDef */
|
|
27
|
+
export declare const TOOL_MAP: Map<string, ToolDef>;
|
|
28
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,UAAU,4FASb,CAAC;AAEX,eAAO,MAAM,OAAO,EAAE,OAAO,EAi1D5B,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,YAAY;UAA2B,OAAO;cAAY,WAAW;EAAK,CAAC;AAOxF,iCAAiC;AACjC,eAAO,MAAM,QAAQ,sBAEpB,CAAC"}
|