Bluesky MCP Server
Search, read, and post to Bluesky from any MCP client, including managing profiles, threads, notifications, and performing write actions like posting, replying, liking, reposting, and following.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bluesky MCP Serversearch for recent posts about TypeScript"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bluesky MCP Server
██████╗ ███████╗██╗ ██╗██╗ ██╗
██╔══██╗██╔════╝██║ ██╔╝╚██╗ ██╔╝
██████╔╝███████╗█████╔╝ ╚████╔╝
██╔══██╗╚════██║██╔═██╗ ╚██╔╝
██████╔╝███████║██║ ██╗ ██║
╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝
Search, read, and post to Bluesky from any MCP client — a thin server over the @kud/bsky AT Protocol library.
Features • Quick Start • Tools • Development
🌟 Features
App-password auth — uses your Bluesky App Password via
BLUESKY_HANDLE/BLUESKY_APP_PASSWORD(shared with@kud/bsky-cli).11 tools — 5 read, 6 write.
Writes are gated — every posting/engagement tool requires an explicit
confirm: true, so an agent can never publish by accident.Thin wrapper — each tool is one line over
@kud/bsky; the API logic lives in the core library, not here.TypeScript, ESM, zero business logic —
@modelcontextprotocol/sdk+zod.
Related MCP server: bluesky-mcp
🚀 Quick Start
Prerequisites
Node.js 20+
A Bluesky account and an App Password (Settings → App Passwords)
Installation
npx @kud/mcp-bskyClaude Desktop / Claude Code
{
"mcpServers": {
"bsky": {
"command": "npx",
"args": ["@kud/mcp-bsky"],
"env": {
"BLUESKY_HANDLE": "you.bsky.social",
"BLUESKY_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx"
}
}
}
}✅ Restart your client and the bsky tools appear.
🛠️ Available Tools
🔭 Read (5 tools)
Tool | Description |
| Search Bluesky for posts matching a query |
| The authenticated user's home timeline |
| The authenticated user's notifications |
| A profile by handle or DID |
| A post and its replies |
✍️ Write — gated by confirm: true (6 tools)
Tool | Description |
| Publish a post |
| Publish a self-thread (each post replies to the previous) |
| Reply to a post |
| Like a post |
| Repost a post |
| Follow an account |
Total: 11 tools covering the core Bluesky workflow.
💬 Example Conversations
You: "What are people saying about the AT Protocol on Bluesky?"
AI: *calls search_posts → summarises the latest posts*
You: "Post 'shipped a new MCP server 🦋' to my Bluesky."
AI: *calls post with confirm: true → returns the post URL*
You: "Reply to that thread and like the original."
AI: *calls reply and like (confirm: true) → done*🧪 Development
git clone https://github.com/kud/mcp-bsky.git
cd mcp-bsky
npm install
npm run build
npm testScript | Description |
| Compile TypeScript to |
| Run from source via tsx |
| Run the vitest suite |
| Launch the MCP Inspector against source |
Test against source with the Inspector:
export BLUESKY_HANDLE=you.bsky.social
export BLUESKY_APP_PASSWORD=xxxx-xxxx-xxxx-xxxx
npm run inspect:dev🔐 Authentication
This server reads two environment variables — @kud/bsky's contract, intentionally not MCP_-prefixed so the credentials are shared with @kud/bsky-cli:
Sign in at bsky.app → Settings → App Passwords → Add App Password.
Set
BLUESKY_HANDLE(e.g.you.bsky.social) andBLUESKY_APP_PASSWORD(the generated app password — never your main password).
📊 Tech Stack
Runtime: Node.js 20+
Language: TypeScript (ESM)
Protocol: Model Context Protocol (
@modelcontextprotocol/sdk)Core:
@kud/bskyValidation: zod
📄 License
MIT — see LICENSE.
🙏 Acknowledgments
Made with ❤️ for the terminal
⭐ Star this repo if it helped you!
Available Tools
11 toolsfollowB
Follow an account. Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle to follow (e.g. kud.io) | |
| confirm | No | Must be true to follow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It states the action and a requirement but omits details on auth needs, side effects, or result expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words; front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description lacks information on return values, error states, or post-follow behavior, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond the schema. It reiterates the confirm requirement but does not clarify handle format or behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Follow an account') with a specific verb and resource, distinguishing it from sibling tools like 'like' or 'reply'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies a required condition ('Requires confirm: true'), but does not provide guidance on when to use this tool versus alternatives or exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
likeC
Like a post. Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL or at:// URI | |
| confirm | No | Must be true to like |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses only the confirm requirement, but omits whether the action is destructive, reversible, or requires special permissions. The behavioral impact is under-explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no redundancy. Information is front-loaded. However, the extreme brevity may sacrifice clarity for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no annotations), the description covers the critical confirm requirement but lacks context for usage relative to siblings and post-invocation behavior. It is minimally adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds a sentence reinforcing the confirm constraint, but does not provide meaningful new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Like' and the resource 'post', clearly indicating the action. It is slightly more informative than the tool name alone, but does not differentiate from sibling tools like 'repost' or 'reply' beyond the natural distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs siblings. The description only mentions the confirm requirement, not any context or alternatives. The agent is left to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notificationsC
Get the authenticated user's notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states it returns notifications. Lacks details on authentication requirements (implied), rate limits, or behavior when no new notifications exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficient, and front-loaded. No verbose or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter and no output schema. Description covers core purpose but omits details like return format, pagination, or error handling. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes the 'limit' parameter as 'Max items (default 25)'—100% coverage. Description adds no further meaning, earning baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Get') and resource ('notifications') with user scope. Distinguishes from sibling tools like 'timeline' or 'search_posts', though lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'timeline' might also show notifications context). No exclusion criteria or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postA
Publish a Bluesky post. Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Post text (≤300 characters) | |
| confirm | No | Must be true to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the confirm requirement but lacks details on side effects, permissions, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no wasted words. The essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity and no output schema, the description is adequate but minimal. It lacks info on return values or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description repeats the confirm requirement but adds no significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Publish a Bluesky post,' which is a specific verb and resource. It distinguishes from sibling tools like reply and repost by implying original content creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires 'confirm: true,' providing clear usage guidance. However, it does not explicitly compare to alternative tools for similar actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profileB
Get a Bluesky profile by handle or DID.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Handle (e.g. kud.io) or DID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Get', implying read-only, but does not explicitly state safety, authentication needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and to the point, with no unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description is sufficient to understand what the tool does and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and adequately describes the 'actor' parameter. The description adds no new semantic detail beyond 'by handle or DID', which is already clear from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('Bluesky profile'), and the input method ('by handle or DID'), which distinguishes it from sibling tools that perform actions like follow or post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, or on prerequisites or context. The description is purely functional without any usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replyC
Reply to a post. Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL or at:// URI of the post to reply to | |
| text | Yes | Reply text (≤300 characters) | |
| confirm | No | Must be true to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavioral traits. It mentions the 'confirm' requirement, which is a key behavioral trait (the tool requires explicit confirmation to publish). However, it omits other critical behaviors: what happens when confirm is false (likely no action), error conditions, idempotency, or rate limits. The description is minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—a single sentence that communicates the core purpose and a key requirement. It is front-loaded, with the main action first. However, it could be slightly expanded without losing conciseness to cover basic usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description is insufficiently complete. It fails to explain return values, error handling, or the behavior when 'confirm' is false. For a tool with moderate complexity, this level of detail is inadequate for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (url, text, confirm) explicitly described. The description does not add any additional meaning beyond the schema; it only reiterates the 'confirm' requirement. Since the schema already documents each parameter's purpose, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Reply to a post.' It uses a specific verb ('Reply') and resource ('post'), making it easy to understand. Although brief, it distinguishes from siblings such as 'post' (creating a new post) and 'thread_post' (likely replying in a thread context). However, the distinction could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a single usage requirement: 'Requires confirm: true.' It does not elaborate on when to use this tool versus alternatives like 'thread_post', 'post', or 'repost'. There is no guidance on context, prerequisites, or when not to use it, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repostB
Repost a post. Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL or at:// URI | |
| confirm | No | Must be true to repost |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It only discloses the confirm requirement, but not side effects (e.g., idempotency, visibility changes, authentication needs). Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 6 words, with no filler. The key constraint is front-loaded. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite full schema coverage, the description lacks essential context for a 2-parameter tool with side effects. No output schema or behavioral details, leaving agents underinformed about repost action implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The tool description adds no new meaning beyond the schema, just repeating the confirm requirement. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Repost' and the resource 'post', clearly indicating the action. It distinguishes from sibling tools like 'like' or 'post' by its unique action of reposting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the constraint 'Requires confirm: true' but provides no guidance on when to use this tool versus alternatives (e.g., 'like' or 'post'). No context for optimal usage is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_postsB
Search Bluesky for posts matching a query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| limit | No | Max results (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of disclosing behavioral traits. It only states the action without mentioning authentication requirements, pagination behavior, rate limits, or effects of invalid queries. This lack of detail is a significant gap for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the key information. Every word earns its place, and there is no verbosity or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of multiple sibling tools and the lack of an output schema, the description is incomplete. It does not explain the return format, pagination, or any post-search specifics, which are essential for an agent to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters ('query' and 'limit'). The tool description adds no additional meaning beyond the schema, so it meets the baseline of 3, neither enhancing nor harming clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'Bluesky posts', which distinguishes it from sibling tools like 'post', 'like', 'timeline', etc. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives (e.g., 'timeline' for browsing, 'notifications' for updates). The agent must infer usage from the name alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threadA
Get a post and its replies.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL or at:// URI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic function without disclosing any behaviors like error handling, authentication needs, or response format. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the purpose without any extraneous words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description is adequate but leaves gaps (e.g., whether replies are nested or flat, ordering). Sufficient for basic use but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the single parameter 'url' has a description. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a post and its replies' clearly states the action (get) and the resource (post and replies), distinguishing it from siblings like 'thread_post' (create) or 'post' (single post).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Usage is implied by the tool name and description, but no exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thread_postA
Publish a self-thread (each post replies to the previous). Requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| posts | Yes | Ordered post texts | |
| confirm | No | Must be true to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the write action and the confirm requirement, but lacks details on error handling, rate limits, or success feedback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences, no redundant words, and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with two parameters and no output schema, but could benefit from mentioning return behavior or side effects (e.g., immediate posting, authentication needs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds minimal extra value beyond what the schema provides ('each post replies to the previous' adds context but is not critical).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it publishes a self-thread where each post replies to the previous, distinguishing it from sibling tools like 'post' (single post) and 'thread' (likely viewing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions 'Requires confirm: true' as a usage prerequisite, but does not provide explicit when-to-use vs. alternatives or context about when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelineC
Get the authenticated user's home timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max posts (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states a basic retrieval action. No information is given about ordering, pagination, rate limits, or side effects, leaving the agent uninformed about expected behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundancy. However, it could be slightly improved by front-loading the most critical information, though it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is inadequate. It does not explain the return format, authentication requirements, or any constraints, leaving gaps for a one-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'limit' parameter described as 'Max posts (default 25)'. The description adds no additional semantics beyond the schema, meeting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the authenticated user's home timeline' clearly specifies the verb (Get), the resource (home timeline), and the context (authenticated user), distinguishing it from siblings like 'search_posts' or 'notifications'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'search_posts' for filtered timeline access or 'notifications' for activity updates. The description lacks any explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.0.0- First observed
follow - First observed
like - First observed
notifications - First observed
post - First observed
profile - First observed
reply - First observed
repost - First observed
search_posts - First observed
thread - First observed
thread_post - First observed
timeline
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose: follow, like, post, reply, repost, search, thread operations, profile retrieval, notifications, and timeline. No overlapping functionality.
Tools use consistent lowercase and underscores for compound names, but mix verb names (follow, like) with noun names (notifications, profile, thread, timeline). While readable, the pattern is not entirely uniform.
With 11 tools, the server covers the essential Bluesky operations (posting, reading, searching, interacting) without being bloated or too sparse. The count fits the domain well.
Core workflows like posting, replying, searching, and timeline reading are covered. Minor gaps exist: no tools for unfollowing, unliking, or deleting posts, but the surface is sufficient for most agent tasks.
Maintenance
Related MCP Connectors
Search ATProto writing, annotations, identity, agents, and forum posts. 12 read-only tools.
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables LLMs to interact with the AT Protocol ecosystem, including Bluesky, through natural language. Supports public data access without authentication and full write operations with authentication.5138 npm9MIT
- AlicenseCqualityBmaintenanceEnables interacting with Bluesky/AT Protocol through MCP tools for posting, replying, media, timelines, and a human-approved outbox system.4MIT
- AlicenseAqualityAmaintenanceMCP server for managing a Bluesky account, enabling posting, replying, liking, reposting, following, searching, and reading timelines/notifications via natural language.18MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Bluesky social network through the AT Protocol, including searching posts, fetching profiles, browsing feeds, and retrieving threads and follower data.3 npmMIT