Skip to main content
Glama
kud

Bluesky MCP Server

by kud

Bluesky MCP Server

 ██████╗ ███████╗██╗  ██╗██╗   ██╗
 ██╔══██╗██╔════╝██║ ██╔╝╚██╗ ██╔╝
 ██████╔╝███████╗█████╔╝  ╚████╔╝
 ██╔══██╗╚════██║██╔═██╗   ╚██╔╝
 ██████╔╝███████║██║  ██╗   ██║
 ╚═════╝ ╚══════╝╚═╝  ╚═╝   ╚═╝

TypeScript Node.js MCP npm License

Search, read, and post to Bluesky from any MCP client — a thin server over the @kud/bsky AT Protocol library.

FeaturesQuick StartToolsDevelopment

🌟 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-bsky

Claude 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_posts

Search Bluesky for posts matching a query

timeline

The authenticated user's home timeline

notifications

The authenticated user's notifications

profile

A profile by handle or DID

thread

A post and its replies

✍️ Write — gated by confirm: true (6 tools)

Tool

Description

post

Publish a post

thread_post

Publish a self-thread (each post replies to the previous)

reply

Reply to a post

like

Like a post

repost

Repost a post

follow

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 test

Script

Description

npm run build

Compile TypeScript to dist/

npm run dev

Run from source via tsx

npm test

Run the vitest suite

npm run inspect:dev

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:

  1. Sign in at bsky.appSettings → App Passwords → Add App Password.

  2. Set BLUESKY_HANDLE (e.g. you.bsky.social) and BLUESKY_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/bsky

  • Validation: zod

📄 License

MIT — see LICENSE.

🙏 Acknowledgments

Made with ❤️ for the terminal

⭐ Star this repo if it helped you!

Available Tools

11 tools
followB

Follow an account. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesHandle to follow (e.g. kud.io)
confirmNoMust be true to follow

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPost URL or at:// URI
confirmNoMust be true to like

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items (default 25)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesPost text (≤300 characters)
confirmNoMust be true to publish

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesHandle (e.g. kud.io) or DID

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL or at:// URI of the post to reply to
textYesReply text (≤300 characters)
confirmNoMust be true to publish

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPost URL or at:// URI
confirmNoMust be true to repost

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness1/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
limitNoMax results (default 25)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPost URL or at:// URI

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
postsYesOrdered post texts
confirmNoMust be true to publish

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax posts (default 25)

TDQS

C2.9/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 11 tool updatesv1.0.0
    • First observedfollow
    • First observedlike
    • First observednotifications
    • First observedpost
    • First observedprofile
    • First observedreply
    • First observedrepost
    • First observedsearch_posts
    • First observedthread
    • First observedthread_post
    • First observedtimeline

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: follow, like, post, reply, repost, search, thread operations, profile retrieval, notifications, and timeline. No overlapping functionality.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    51
    38 npm
    9
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables interacting with Bluesky/AT Protocol through MCP tools for posting, replying, media, timelines, and a human-approved outbox system.
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for managing a Bluesky account, enabling posting, replying, liking, reposting, following, searching, and reading timelines/notifications via natural language.
    18
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Bluesky social network through the AT Protocol, including searching posts, fetching profiles, browsing feeds, and retrieving threads and follower data.
    3 npm
    MIT