@cyanheads/bluesky-mcp-server 0.1.1
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/AGENTS.md +346 -0
- package/CLAUDE.md +346 -0
- package/Dockerfile +99 -0
- package/LICENSE +201 -0
- package/README.md +307 -0
- package/changelog/0.1.x/0.1.1.md +24 -0
- package/changelog/template.md +127 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/bsky-profile.resource.d.ts +15 -0
- package/dist/mcp-server/resources/definitions/bsky-profile.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/bsky-profile.resource.js +54 -0
- package/dist/mcp-server/resources/definitions/bsky-profile.resource.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-author-feed.tool.d.ts +49 -0
- package/dist/mcp-server/tools/definitions/bsky-get-author-feed.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-author-feed.tool.js +217 -0
- package/dist/mcp-server/tools/definitions/bsky-get-author-feed.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-follows.tool.d.ts +43 -0
- package/dist/mcp-server/tools/definitions/bsky-get-follows.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-follows.tool.js +165 -0
- package/dist/mcp-server/tools/definitions/bsky-get-follows.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-post-thread.tool.d.ts +24 -0
- package/dist/mcp-server/tools/definitions/bsky-get-post-thread.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-post-thread.tool.js +166 -0
- package/dist/mcp-server/tools/definitions/bsky-get-post-thread.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-profile.tool.d.ts +32 -0
- package/dist/mcp-server/tools/definitions/bsky-get-profile.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-profile.tool.js +117 -0
- package/dist/mcp-server/tools/definitions/bsky-get-profile.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-trending.tool.d.ts +21 -0
- package/dist/mcp-server/tools/definitions/bsky-get-trending.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-get-trending.tool.js +81 -0
- package/dist/mcp-server/tools/definitions/bsky-get-trending.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-search-actors.tool.d.ts +27 -0
- package/dist/mcp-server/tools/definitions/bsky-search-actors.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-search-actors.tool.js +100 -0
- package/dist/mcp-server/tools/definitions/bsky-search-actors.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-search-posts.tool.d.ts +47 -0
- package/dist/mcp-server/tools/definitions/bsky-search-posts.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bsky-search-posts.tool.js +233 -0
- package/dist/mcp-server/tools/definitions/bsky-search-posts.tool.js.map +1 -0
- package/dist/services/bluesky/bluesky-service.d.ts +68 -0
- package/dist/services/bluesky/bluesky-service.d.ts.map +1 -0
- package/dist/services/bluesky/bluesky-service.js +287 -0
- package/dist/services/bluesky/bluesky-service.js.map +1 -0
- package/dist/services/bluesky/types.d.ts +126 -0
- package/dist/services/bluesky/types.d.ts.map +1 -0
- package/dist/services/bluesky/types.js +6 -0
- package/dist/services/bluesky/types.js.map +1 -0
- package/package.json +102 -0
- package/server.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-get-post-thread.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-get-post-thread.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fetch a Bluesky actor's public profile by handle or DID.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-get-profile
|
|
4
|
+
*/
|
|
5
|
+
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
export declare const bskyGetProfile: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
8
|
+
actor: z.ZodString;
|
|
9
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
10
|
+
did: z.ZodString;
|
|
11
|
+
handle: z.ZodString;
|
|
12
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
13
|
+
description: z.ZodOptional<z.ZodString>;
|
|
14
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
15
|
+
followersCount: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
followsCount: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
postsCount: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
19
|
+
val: z.ZodString;
|
|
20
|
+
src: z.ZodOptional<z.ZodString>;
|
|
21
|
+
cts: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>>>;
|
|
23
|
+
indexedAt: z.ZodOptional<z.ZodString>;
|
|
24
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
25
|
+
pinnedPostUri: z.ZodOptional<z.ZodString>;
|
|
26
|
+
}, z.core.$strip>, readonly [{
|
|
27
|
+
readonly reason: "actor_not_found";
|
|
28
|
+
readonly code: JsonRpcErrorCode.NotFound;
|
|
29
|
+
readonly when: "The handle does not resolve or the profile does not exist.";
|
|
30
|
+
readonly recovery: "Verify the handle spelling or use bsky_search_actors to find the correct handle.";
|
|
31
|
+
}], undefined>;
|
|
32
|
+
//# sourceMappingURL=bsky-get-profile.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-get-profile.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-get-profile.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAa3E,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;cAuGzB,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fetch a Bluesky actor's public profile by handle or DID.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-get-profile
|
|
4
|
+
*/
|
|
5
|
+
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { getBlueskyService } from '../../../services/bluesky/bluesky-service.js';
|
|
8
|
+
const LabelSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
val: z
|
|
11
|
+
.string()
|
|
12
|
+
.describe('Label value (content warning or moderation tag, e.g. "porn", "spam").'),
|
|
13
|
+
src: z.string().optional().describe('DID of the labeler that applied this label.'),
|
|
14
|
+
cts: z.string().optional().describe('ISO 8601 timestamp when the label was applied.'),
|
|
15
|
+
})
|
|
16
|
+
.describe('A moderation label applied by the AppView or a labeler service.');
|
|
17
|
+
export const bskyGetProfile = tool('bsky_get_profile', {
|
|
18
|
+
title: 'Get Bluesky Profile',
|
|
19
|
+
description: 'Fetch a Bluesky actor\'s public profile by handle (e.g. "bsky.app") or DID ' +
|
|
20
|
+
'(e.g. "did:plc:z72i7hdynmk6r22z27h6tvur"). Returns displayName, handle, DID, bio, ' +
|
|
21
|
+
'follower/following/post counts, avatar URL, moderation labels, and pinned post AT-URI. ' +
|
|
22
|
+
'Use this as the first step to resolve a handle to a DID before calling tools that require ' +
|
|
23
|
+
'a DID or AT-URI. Handles and DIDs are interchangeable as input.',
|
|
24
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
25
|
+
input: z.object({
|
|
26
|
+
actor: z
|
|
27
|
+
.string()
|
|
28
|
+
.max(253)
|
|
29
|
+
.describe('Handle (e.g. "bsky.app", "alice.bsky.social") or DID (e.g. "did:plc:z72i7hdynmk6r22z27h6tvur") of the actor to look up.'),
|
|
30
|
+
}),
|
|
31
|
+
output: z.object({
|
|
32
|
+
did: z
|
|
33
|
+
.string()
|
|
34
|
+
.describe('Decentralized Identifier — the permanent, portable identity key for this account.'),
|
|
35
|
+
handle: z.string().describe('Human-readable username, e.g. "alice.bsky.social".'),
|
|
36
|
+
displayName: z
|
|
37
|
+
.string()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Display name set by the user. May differ from the handle.'),
|
|
40
|
+
description: z.string().optional().describe('Biography / about text.'),
|
|
41
|
+
avatar: z.string().optional().describe('URL of the profile avatar image.'),
|
|
42
|
+
followersCount: z.number().optional().describe('Number of accounts following this actor.'),
|
|
43
|
+
followsCount: z.number().optional().describe('Number of accounts this actor follows.'),
|
|
44
|
+
postsCount: z.number().optional().describe('Total posts authored by this actor.'),
|
|
45
|
+
labels: z.array(LabelSchema).optional().describe('Moderation labels applied to this profile.'),
|
|
46
|
+
indexedAt: z
|
|
47
|
+
.string()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('ISO 8601 timestamp when the AppView last indexed this profile.'),
|
|
50
|
+
createdAt: z.string().optional().describe('ISO 8601 timestamp of account creation.'),
|
|
51
|
+
pinnedPostUri: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('AT-URI of the pinned post, if any. Pass to bsky_get_post_thread to read it.'),
|
|
55
|
+
}),
|
|
56
|
+
errors: [
|
|
57
|
+
{
|
|
58
|
+
reason: 'actor_not_found',
|
|
59
|
+
code: JsonRpcErrorCode.NotFound,
|
|
60
|
+
when: 'The handle does not resolve or the profile does not exist.',
|
|
61
|
+
recovery: 'Verify the handle spelling or use bsky_search_actors to find the correct handle.',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
async handler(input, ctx) {
|
|
65
|
+
ctx.log.info('Fetching Bluesky profile', { actor: input.actor });
|
|
66
|
+
try {
|
|
67
|
+
return await getBlueskyService().getProfile(input.actor, ctx);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (err instanceof McpError) {
|
|
71
|
+
const body = err.data?.responseBody ?? '';
|
|
72
|
+
if (err.data &&
|
|
73
|
+
(body.includes('not found') || body.includes('Not Found') || body.includes('NotFound'))) {
|
|
74
|
+
throw ctx.fail('actor_not_found', `Actor not found: "${input.actor}"`, ctx.recoveryFor('actor_not_found'));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
format: (result) => {
|
|
81
|
+
const lines = [];
|
|
82
|
+
lines.push(`## ${result.displayName ?? result.handle}`);
|
|
83
|
+
lines.push(`**Handle:** @${result.handle} | **DID:** \`${result.did}\``);
|
|
84
|
+
if (result.description)
|
|
85
|
+
lines.push(`\n${result.description}`);
|
|
86
|
+
const counts = [];
|
|
87
|
+
if (result.followersCount != null)
|
|
88
|
+
counts.push(`${result.followersCount.toLocaleString()} followers`);
|
|
89
|
+
if (result.followsCount != null)
|
|
90
|
+
counts.push(`following ${result.followsCount.toLocaleString()}`);
|
|
91
|
+
if (result.postsCount != null)
|
|
92
|
+
counts.push(`${result.postsCount.toLocaleString()} posts`);
|
|
93
|
+
if (counts.length)
|
|
94
|
+
lines.push(`\n${counts.join(' · ')}`);
|
|
95
|
+
if (result.avatar)
|
|
96
|
+
lines.push(`\n**Avatar:** ${result.avatar}`);
|
|
97
|
+
if (result.pinnedPostUri)
|
|
98
|
+
lines.push(`**Pinned post AT-URI:** \`${result.pinnedPostUri}\``);
|
|
99
|
+
if (result.labels?.length) {
|
|
100
|
+
const labelParts = result.labels.map((l) => {
|
|
101
|
+
const parts = [l.val];
|
|
102
|
+
if (l.src)
|
|
103
|
+
parts.push(`src:${l.src}`);
|
|
104
|
+
if (l.cts)
|
|
105
|
+
parts.push(`cts:${l.cts}`);
|
|
106
|
+
return parts.join(' ');
|
|
107
|
+
});
|
|
108
|
+
lines.push(`**Labels:** ${labelParts.join(', ')}`);
|
|
109
|
+
}
|
|
110
|
+
if (result.createdAt)
|
|
111
|
+
lines.push(`**Joined:** ${result.createdAt}`);
|
|
112
|
+
if (result.indexedAt)
|
|
113
|
+
lines.push(`**Indexed:** ${result.indexedAt}`);
|
|
114
|
+
return [{ type: 'text', text: lines.join('\n') }];
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=bsky-get-profile.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-get-profile.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-get-profile.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fetch real-time trending topics on Bluesky.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-get-trending
|
|
4
|
+
*/
|
|
5
|
+
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
export declare const bskyGetTrending: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
7
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
trends: z.ZodArray<z.ZodObject<{
|
|
10
|
+
topic: z.ZodString;
|
|
11
|
+
displayName: z.ZodString;
|
|
12
|
+
link: z.ZodOptional<z.ZodString>;
|
|
13
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
14
|
+
postCount: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
status: z.ZodOptional<z.ZodString>;
|
|
16
|
+
category: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
}, z.core.$strip>, undefined, {
|
|
19
|
+
readonly totalReturned: z.ZodNumber;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=bsky-get-trending.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-get-trending.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-get-trending.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAyBjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;EAmD1B,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Fetch real-time trending topics on Bluesky.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-get-trending
|
|
4
|
+
*/
|
|
5
|
+
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { getBlueskyService } from '../../../services/bluesky/bluesky-service.js';
|
|
7
|
+
const TrendSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
topic: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe('Opaque topic slug, e.g. "ailaunch2025". Use as a search term in bsky_search_posts.'),
|
|
12
|
+
displayName: z.string().describe('Human-readable topic name, e.g. "AI Launch 2025".'),
|
|
13
|
+
link: z.string().optional().describe('URL associated with this trending topic, if provided.'),
|
|
14
|
+
startedAt: z
|
|
15
|
+
.string()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('ISO 8601 timestamp when this topic started trending.'),
|
|
18
|
+
postCount: z.number().optional().describe('Approximate number of posts about this topic.'),
|
|
19
|
+
status: z.string().optional().describe('Velocity signal, e.g. "hot" or "rising".'),
|
|
20
|
+
category: z
|
|
21
|
+
.string()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Category of the trend, e.g. "politics", "sports", "pop-culture".'),
|
|
24
|
+
})
|
|
25
|
+
.describe('A single real-time trending topic on Bluesky.');
|
|
26
|
+
export const bskyGetTrending = tool('bsky_get_trending', {
|
|
27
|
+
title: 'Get Bluesky Trending Topics',
|
|
28
|
+
description: 'Fetch the current real-time trending topics on Bluesky. Returns topics with display name, ' +
|
|
29
|
+
'post count, category (politics, sports, pop-culture, etc.), status (hot/rising), and start time. ' +
|
|
30
|
+
'Entry point for "what is Bluesky talking about right now". Pair with bsky_search_posts to drill ' +
|
|
31
|
+
'into any trending topic. Note: uses the app.bsky.unspecced.getTrends endpoint, which is not part ' +
|
|
32
|
+
"of Bluesky's stable lexicon and may change without notice.",
|
|
33
|
+
annotations: { readOnlyHint: true, idempotentHint: false, openWorldHint: true },
|
|
34
|
+
input: z.object({
|
|
35
|
+
limit: z
|
|
36
|
+
.number()
|
|
37
|
+
.int()
|
|
38
|
+
.min(1)
|
|
39
|
+
.max(25)
|
|
40
|
+
.default(10)
|
|
41
|
+
.describe('Maximum number of trending topics to return (1–25). Default 10.'),
|
|
42
|
+
}),
|
|
43
|
+
output: z.object({
|
|
44
|
+
trends: z.array(TrendSchema).describe('Current trending topics, ordered by prominence.'),
|
|
45
|
+
}),
|
|
46
|
+
enrichment: {
|
|
47
|
+
totalReturned: z.number().describe('Number of trending topics returned.'),
|
|
48
|
+
},
|
|
49
|
+
async handler(input, ctx) {
|
|
50
|
+
ctx.log.info('Fetching Bluesky trending topics', { limit: input.limit });
|
|
51
|
+
const result = await getBlueskyService().getTrends({ limit: input.limit }, ctx);
|
|
52
|
+
ctx.enrich({ totalReturned: result.trends.length });
|
|
53
|
+
return { trends: result.trends };
|
|
54
|
+
},
|
|
55
|
+
format: (result) => {
|
|
56
|
+
if (result.trends.length === 0) {
|
|
57
|
+
return [{ type: 'text', text: 'No trending topics available at this time.' }];
|
|
58
|
+
}
|
|
59
|
+
const lines = result.trends.map((t, i) => {
|
|
60
|
+
const parts = [`${i + 1}. **${t.displayName}**`];
|
|
61
|
+
const meta = [];
|
|
62
|
+
if (t.postCount != null)
|
|
63
|
+
meta.push(`${t.postCount.toLocaleString()} posts`);
|
|
64
|
+
if (t.category)
|
|
65
|
+
meta.push(t.category);
|
|
66
|
+
if (t.status)
|
|
67
|
+
meta.push(t.status);
|
|
68
|
+
if (meta.length)
|
|
69
|
+
parts.push(` ${meta.join(' · ')}`);
|
|
70
|
+
if (t.startedAt)
|
|
71
|
+
parts.push(` Started: ${t.startedAt}`);
|
|
72
|
+
if (t.topic !== t.displayName)
|
|
73
|
+
parts.push(` Topic: \`${t.topic}\``);
|
|
74
|
+
if (t.link)
|
|
75
|
+
parts.push(` Link: ${t.link}`);
|
|
76
|
+
return parts.join('\n');
|
|
77
|
+
});
|
|
78
|
+
return [{ type: 'text', text: lines.join('\n\n') }];
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=bsky-get-trending.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-get-trending.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-get-trending.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Search Bluesky accounts by name or handle fragment.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-search-actors
|
|
4
|
+
*/
|
|
5
|
+
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
export declare const bskySearchActors: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
7
|
+
query: z.ZodString;
|
|
8
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
11
|
+
actors: z.ZodArray<z.ZodObject<{
|
|
12
|
+
did: z.ZodString;
|
|
13
|
+
handle: z.ZodString;
|
|
14
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
15
|
+
description: z.ZodOptional<z.ZodString>;
|
|
16
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
17
|
+
followersCount: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
19
|
+
val: z.ZodString;
|
|
20
|
+
src: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>>>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, z.core.$strip>, undefined, {
|
|
25
|
+
readonly totalReturned: z.ZodNumber;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=bsky-search-actors.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-search-actors.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-search-actors.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAyBjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;EA+E3B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Search Bluesky accounts by name or handle fragment.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-search-actors
|
|
4
|
+
*/
|
|
5
|
+
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { getBlueskyService } from '../../../services/bluesky/bluesky-service.js';
|
|
7
|
+
const ActorResultSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
did: z.string().describe('Decentralized Identifier — permanent portable identity key.'),
|
|
10
|
+
handle: z.string().describe('Human-readable username, e.g. "alice.bsky.social".'),
|
|
11
|
+
displayName: z.string().optional().describe('Display name set by the user.'),
|
|
12
|
+
description: z.string().optional().describe('Biography / about text.'),
|
|
13
|
+
avatar: z.string().optional().describe('URL of the profile avatar image.'),
|
|
14
|
+
followersCount: z.number().optional().describe('Number of followers.'),
|
|
15
|
+
labels: z
|
|
16
|
+
.array(z
|
|
17
|
+
.object({
|
|
18
|
+
val: z.string().describe('Label value (content warning or moderation tag).'),
|
|
19
|
+
src: z.string().optional().describe('DID of the labeling service.'),
|
|
20
|
+
})
|
|
21
|
+
.describe('A moderation label applied to this actor.'))
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Moderation labels applied to this actor.'),
|
|
24
|
+
})
|
|
25
|
+
.describe('A Bluesky actor profile summary.');
|
|
26
|
+
export const bskySearchActors = tool('bsky_search_actors', {
|
|
27
|
+
title: 'Search Bluesky Actors',
|
|
28
|
+
description: 'Find Bluesky accounts by name or handle fragment. Returns ranked profiles with handle, ' +
|
|
29
|
+
'DID, displayName, bio, and follower count. Use before bsky_get_profile or bsky_get_author_feed ' +
|
|
30
|
+
'when you have a name but not a confirmed handle. Supports cursor-based pagination for browsing ' +
|
|
31
|
+
'beyond the first page of results.',
|
|
32
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
33
|
+
input: z.object({
|
|
34
|
+
query: z
|
|
35
|
+
.string()
|
|
36
|
+
.max(500)
|
|
37
|
+
.describe('Name or handle fragment to search for, e.g. "alice" or "nytimes.com".'),
|
|
38
|
+
limit: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.min(1)
|
|
42
|
+
.max(100)
|
|
43
|
+
.default(25)
|
|
44
|
+
.describe('Maximum number of actors to return (1–100). Default 25.'),
|
|
45
|
+
cursor: z
|
|
46
|
+
.string()
|
|
47
|
+
.max(2048)
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('Opaque pagination cursor from a previous response. Omit for the first page.'),
|
|
50
|
+
}),
|
|
51
|
+
output: z.object({
|
|
52
|
+
actors: z.array(ActorResultSchema).describe('Matching actor profiles, ranked by relevance.'),
|
|
53
|
+
cursor: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Opaque cursor for the next page. Absent on the last page.'),
|
|
57
|
+
}),
|
|
58
|
+
enrichment: {
|
|
59
|
+
totalReturned: z.number().describe('Number of actors in this response page.'),
|
|
60
|
+
},
|
|
61
|
+
async handler(input, ctx) {
|
|
62
|
+
ctx.log.info('Searching Bluesky actors', { query: input.query, limit: input.limit });
|
|
63
|
+
const result = await getBlueskyService().searchActors({ q: input.query, limit: input.limit, ...(input.cursor ? { cursor: input.cursor } : {}) }, ctx);
|
|
64
|
+
ctx.enrich({ totalReturned: result.actors.length });
|
|
65
|
+
if (result.actors.length === 0) {
|
|
66
|
+
ctx.enrich.notice(`No actors matched "${input.query}". Try a different name or handle fragment.`);
|
|
67
|
+
}
|
|
68
|
+
return { actors: result.actors, ...(result.cursor ? { cursor: result.cursor } : {}) };
|
|
69
|
+
},
|
|
70
|
+
format: (result) => {
|
|
71
|
+
if (result.actors.length === 0) {
|
|
72
|
+
return [{ type: 'text', text: 'No matching actors found.' }];
|
|
73
|
+
}
|
|
74
|
+
const lines = result.actors.map((a) => {
|
|
75
|
+
const parts = [`## @${a.handle}`];
|
|
76
|
+
parts.push(`**DID:** \`${a.did}\``);
|
|
77
|
+
if (a.displayName)
|
|
78
|
+
parts.push(`**Name:** ${a.displayName}`);
|
|
79
|
+
if (a.description)
|
|
80
|
+
parts.push(a.description);
|
|
81
|
+
if (a.followersCount != null)
|
|
82
|
+
parts.push(`**Followers:** ${a.followersCount.toLocaleString()}`);
|
|
83
|
+
if (a.labels?.length) {
|
|
84
|
+
const labelParts = a.labels.map((l) => (l.src ? `${l.val} (src:${l.src})` : l.val));
|
|
85
|
+
parts.push(`**Labels:** ${labelParts.join(', ')}`);
|
|
86
|
+
}
|
|
87
|
+
if (a.avatar)
|
|
88
|
+
parts.push(`**Avatar:** ${a.avatar}`);
|
|
89
|
+
return parts.join('\n');
|
|
90
|
+
});
|
|
91
|
+
const output = lines.join('\n\n');
|
|
92
|
+
return [
|
|
93
|
+
{
|
|
94
|
+
type: 'text',
|
|
95
|
+
text: result.cursor ? `${output}\n\n---\n*cursor: \`${result.cursor}\`*` : output,
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=bsky-search-actors.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-search-actors.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-search-actors.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Full-text search across public Bluesky posts.
|
|
3
|
+
* @module mcp-server/tools/definitions/bsky-search-posts
|
|
4
|
+
*/
|
|
5
|
+
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
export declare const bskySearchPosts: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
7
|
+
query: z.ZodString;
|
|
8
|
+
author_handle: z.ZodOptional<z.ZodString>;
|
|
9
|
+
language: z.ZodOptional<z.ZodString>;
|
|
10
|
+
tag: z.ZodOptional<z.ZodString>;
|
|
11
|
+
since: z.ZodOptional<z.ZodString>;
|
|
12
|
+
until: z.ZodOptional<z.ZodString>;
|
|
13
|
+
sort: z.ZodDefault<z.ZodEnum<{
|
|
14
|
+
top: "top";
|
|
15
|
+
latest: "latest";
|
|
16
|
+
}>>;
|
|
17
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
18
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
19
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
20
|
+
posts: z.ZodArray<z.ZodObject<{
|
|
21
|
+
uri: z.ZodString;
|
|
22
|
+
cid: z.ZodString;
|
|
23
|
+
text: z.ZodString;
|
|
24
|
+
author: z.ZodObject<{
|
|
25
|
+
did: z.ZodString;
|
|
26
|
+
handle: z.ZodString;
|
|
27
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
28
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
replyCount: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
repostCount: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
likeCount: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
quoteCount: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
indexedAt: z.ZodOptional<z.ZodString>;
|
|
35
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
36
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
37
|
+
val: z.ZodString;
|
|
38
|
+
}, z.core.$strip>>>;
|
|
39
|
+
embed: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
40
|
+
replyToUri: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
43
|
+
hitsTotal: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
}, z.core.$strip>, undefined, {
|
|
45
|
+
readonly totalReturned: z.ZodNumber;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=bsky-search-posts.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsky-search-posts.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/bsky-search-posts.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAiEjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkL1B,CAAC"}
|