Skip to main content
Glama
brianellin

Bluesky MCP Server

by brianellin

Bluesky MCP 服务器

铁匠徽章

连接到Bluesky并提供与 ATProtocol 交互的工具的模型上下文协议服务器。

您可以使用此 MCP 服务器将来自各种 Bluesky / ATProtocol API 端点的上下文直接导入基于 LLM 的应用程序的上下文窗口。例如,您可以将此服务器添加到 Claude Desktop,然后将其用作自然语言 Bluesky 客户端。

功能和工具

  • 通过自然语言与常见的 Bluesky 功能进行交互(例如“获取 David Roberts 的最新帖子”)

  • 获取并分析信息源(“找到有关西雅图的信息源并告诉我人们在谈论什么”)

  • 获取并分析关注者列表(“马克·库班关注哪些类型的账户?给我一份详细的报告”)

  • 使用法学硕士撰写帖子,然后为您发布😱(“写一首关于我所在地区今天天气的俳句并将其发布到 bluesky”)

  • 搜索提要、帖子和人物(“查找有关#teslatakedown 的帖子并提供最近事件的摘要”)

  • 分析谁关注了你?(“谁在 Bluesky 上关注我?给我一份报告”)

以下是当前提供的工具列表:

  • get-pinned-feeds :返回经过身份验证的用户偏好设置的所有“固定”项目集。

  • get-timeline-posts :返回经过身份验证的用户主页时间线的帖子

  • get-feed-posts :返回指定 feed 中的帖子

  • get-list-posts :返回指定列表中的帖子

  • get-user-posts :返回指定用户的帖子

  • get-profile :返回指定用户的个人资料详细信息

  • get-follows :返回帐户关注的用户集

  • get-followers :返回关注某个帐户的用户集合

  • get-liked-posts :返回经过身份验证的用户最近喜欢的帖子

  • get-trends :返回 Bluesky 上当前的热门话题和帖子数量

  • get-post-thread :返回特定帖子的完整对话线程,显示所有回复和上下文

  • convert-url-to-uri :将 Bluesky Web URL 转换为可与其他工具一起使用的 AT URI 格式

  • search-posts :返回给定查询的帖子。可以指定最热门或最新的

  • search-people :返回给定搜索查询的人员

  • search-feeds :返回给定查询的 feed

  • like-post :点赞具有特定 URI 的帖子

  • create-post :发布帖子

  • follow-user :关注特定用户

尖端:

  • 您可以按时间范围从搜索、时间线、列表、动态或个人资料中请求帖子。例如:“总结我时间线过去三天的帖子”或“找出本周大家讨论最有趣的文章”。

  • 变得奇怪:“在过去 24 小时内,你在我的时间线上看到的最有趣/最疯狂/最奇怪/最愚蠢的帖子是什么?”

  • 了解你自己:“分析一下我点赞的帖子,看看我的兴趣是什么。告诉我你发现的3个有趣的事实,以及它们与我在bluesky上的性格有什么关联。”或者“谁在bluesky上关注我?给我一份全面的报告。”

Related MCP server: Twitter MCP Server

安装

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 Bluesky MCP 服务器:

npx -y @smithery/cli install @brianellin/bsky-mcp-server --client claude

手动安装

首先克隆此 repo,然后安装依赖项并构建服务器:

# Install dependencies
pnpm install

# Build the project
pnpm run build

使用 MCP Inspector 进行测试

你可以通过强大的MCP Inspector直接测试 Bluesky 工具,无需连接到 LLM。首先确保你已经搭建好了服务器,然后运行:

npx @modelcontextprotocol/inspector node build/src/index.js

导航到终端提供的本地 URL,然后在左侧面板中设置 BLUESKY_IDENTIFIER、BLUESKY_APP_PASSWORD 和 BLUESKY_SERVICE_URL 环境变量。尝试使用 get-timeline 工具查看主页时间线上的最新帖子。

MCP 客户端配置

按照以下步骤使用您选择的客户端设置 MCP。例如,要设置 Claude 桌面版连接到 Bluesky,请在 claude_desktop_config.json 文件的 bluesky 部分添加以下内容:

{
    "mcpServers": {
      "bluesky": {
        "command": "node",
        "args": ["/path/to/bsky-mcp-server/build/src/index.js"],
        "env": {
            "BLUESKY_IDENTIFIER": "your-bluesky-handle",
            "BLUESKY_APP_PASSWORD": "your-app-password",
            "BLUESKY_SERVICE_URL": "https://bsky.social"
          }
      }
    }
  }

有关在 Claude 桌面版中运行 MCP 服务器的更多详细信息,请参阅https://modelcontextprotocol.io/quickstart/user

创建应用程序密码

要使用此 MCP 服务器,您需要为您的 Bluesky 帐户创建一个应用密码:

  1. 登录 Bluesky

  2. 前往“设置”>“应用密码”

  3. 专门为此集成创建新的应用密码

  4. 使用 BLUESKY_APP_PASSWORD 环境变量设置应用程序密码

安全说明

  • 该服务器仅将您的会话信息存储在内存中,并不与 MCP 客户端共享。

  • MCP 客户端只能访问工具,而不能访问您的身份验证或应用程序密码

执照

麻省理工学院

Available Tools

21 tools
convert-url-to-uriA

Convert a Bluesky web URL to an AT URI format that can be used with other tools

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesBluesky post URL to convert (e.g., https://bsky.app/profile/username.bsky.social/post/postid)

TDQS

A3.6/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 responsibility for behavioral disclosure. It does not mention edge cases (e.g., invalid URLs), whether only post URLs are supported (schema says 'post URL' but description says 'web URL'), or the exact shape of the returned value (plain string vs. object). This leaves significant unknowns for an agent.

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, front-loaded sentence that immediately conveys the action and output. Every word serves a purpose, and it avoids extraneous detail.

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 no output schema, the description should clarify the return value format (e.g., 'returns a string') and any input constraints (e.g., only post URLs). It does not, nor does it mention error handling or supported URL types, leaving the agent to guess about behavior that is not inferable from structured data.

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 schema covers the only parameter with a description and example, so schema_description_coverage is 100%. The tool description adds no additional parameter details beyond what the schema provides, which meets the baseline but does not elevate it.

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 a specific verb ('Convert') and resource ('Bluesky web URL') with a distinct output ('AT URI format'). This distinguishes it from sibling tools, which are all CRUD/search operations, making the tool's purpose unambiguous.

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 implies usage context: when you have a Bluesky web URL and need an AT URI for other tools. It does not explicitly state when not to use it or name alternative tools, but the conversion-focused purpose naturally separates it from siblings in the list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-postB

Create a new post on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
replyToNoOptional URI of post to reply to
textYesThe content of your post

TDQS

B3.2/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 disclosing behavioral traits. It only states the action without mentioning that the post becomes publicly visible, requires authentication, or has any side effects. There is no information about rate limits, error behavior, or the fact that it is a write operation.

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, clear sentence with no filler or redundancy. It is appropriately sized for the tool's simplicity and front-loads the core purpose.

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?

The tool is a write operation with no output schema and no annotations. The description is minimal and fails to include important context such as how to construct a reply (via replyTo), expected response, or any prerequisites. Given the availability of sibling tools like 'convert-url-to-uri' and 'get-post-thread', this description leaves gaps for an agent to correctly invoke the tool in all scenarios.

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 ('text' and 'replyTo'). The description adds no additional meaning beyond the schema, but schema ambiguity is minimal. Baseline 3 is appropriate given full schema coverage.

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 tool's function with a specific verb ('Create') and resource ('a new post on Bluesky'). This distinguishes it from sibling tools like 'repost' or 'like-post', which have different actions.

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. It does not mention that it should be used for original posts, or that to reply to an existing post, the replyTo parameter should be populated with a URI. There is no explicit context or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

follow-userA

Follow a user on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe handle of the user to follow

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 responsibility for disclosing behavioral traits. It only states the action ('Follow a user on Bluesky') and does not mention idempotency, effects on existing relationships, return values, or failure modes. This is a significant gap for a mutation 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 action and resource. No unnecessary words or details, earning a top score for efficiency.

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?

The tool is simple with one parameter and no output schema, so the description is minimally adequate. However, without any annotation or output information, a truly complete description would mention what happens after following (e.g., returns nothing, or returns the follow record). It meets the minimum viability bar.

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 for the parameter is 100%: the 'handle' property is clearly described as 'The handle of the user to follow'. The description adds no extra semantic value beyond the schema, so the baseline of 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 a specific verb ('Follow') and resource ('a user on Bluesky'), making the tool's purpose immediately clear. It also distinguishes from the sibling 'unfollow-user' tool by naming the action directly.

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?

The description implies usage (call this to follow a user), and the sibling 'unfollow-user' provides a natural contrast, but there is no explicit statement about when to use vs. alternatives or any prerequisites. It is adequate for such a simple tool but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-feed-postsB

Fetch posts from a specified feed

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesNumber of posts to fetch or hours to look back
feedYesThe URI of the feed to fetch posts from (e.g., at://did:plc:abcdef/app.bsky.feed.generator/whats-hot)
typeYesWhether count represents number of posts or hours to look back

TDQS

B3.2/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 'fetch posts' and omits details such as pagination, sorting, rate limits, or return format. The read-only nature is implied but not explicitly stated.

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, clear, front-loaded sentence with no wasted words. It is appropriately sized for the simple operation.

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?

Although the schema fully documents parameters, the lack of an output schema means the description should clarify what the tool returns. The description is too terse and does not mention response structure, which could leave an agent uncertain about expected output.

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 provides descriptions for all three parameters (feed, type, count) with full coverage. The description adds no additional meaning beyond the schema, so a baseline score of 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 clearly states the tool fetches posts from a specified feed, using a specific verb and resource. It distinguishes from sibling tools like get-user-posts or get-liked-posts by identifying the feed as the source.

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 get-timeline-posts or get-list-posts. The description only states the basic function without any context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-followersB

Get a list of users that follow a person

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of followers to fetch (1-500)
userYesThe handle or DID of the user (e.g., alice.bsky.social)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the full burden of behavioral disclosure. It implies a read operation ('Get') but does not mention pagination behavior (e.g., limit cap of 500), return format, sorting, rate limits, or authentication needs. This lack of context leaves important operational details undisclosed.

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, direct sentence with no filler words. It front-loads the verb and resource, making it immediately scannable. It is appropriately concise for a simple tool, though minimal in content.

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 core purpose but omits useful contextual details like pagination handling (limit caps at 500), the structure of returned user objects, and guidance on when to use this tool over get-follows. It is a minimum viable descriptor with clear gaps.

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 already provides complete descriptions for both parameters (user and limit) with 100% coverage. The tool description adds no parameter-specific semantics beyond what the schema offers, so 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and clearly identifies the resource as 'list of users that follow a person,' which unambiguously distinguishes it from the sibling tool get-follows (which would list who a person follows). This is a clear, specific statement of purpose.

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. It does not mention that get-follows is the counterpart for 'following' lists, nor any exclusions or preferred contexts. The description states only the action, leaving the agent to infer usage 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.

get-followsB

Get a list of users that a person follows

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of follows to fetch (1-500)
userYesThe handle or DID of the user (e.g., alice.bsky.social)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic purpose and does not mention pagination, the default/maximum limit of 500, authentication requirements, rate limits, or the structure of the returned user objects. While it is a read-only operation, the description lacks depth expected for a complete behavioral picture.

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 immediately states the tool's purpose. It avoids unnecessary words or repetition, and every word contributes to clarity. This is an example of efficient, front-loaded writing.

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?

The tool is simple with only two parameters and no output schema, but the description is minimal. It lacks any mention of return value details (e.g., what fields are included in each user object), how pagination works, or the distinction from 'get-followers'. While the core purpose is clear, the lack of behavioral context and sibling differentiation leaves gaps.

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 already provides full descriptions for both parameters: 'user' (handle or DID) and 'limit' (1-500 with default 500). Schema description coverage is 100%, so the description does not need to add parameter details. The description adds no extra meaning beyond the schema, but the baseline of 3 is appropriate since the schema is comprehensive.

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 tool's function: 'Get a list of users that a person follows.' It uses a specific verb ('Get') and resource ('list of users'), and the phrase 'that a person follows' distinguishes it from the sibling tool 'get-followers' (which would return users who follow a person). This is a precise and unambiguous purpose statement.

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 no guidance on when to use this tool versus alternatives, and notably fails to differentiate it from 'get-followers'. There is no mention of context, prerequisites, or exclusions. The only implicit signal is the word 'follows' in the description, which a user might infer as directionality, but there is no explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-liked-postsA

Get a list of posts that the authenticated user has liked

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of liked posts to fetch (1-100)

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 must fully disclose behavior. It only states that it gets liked posts but does not mention authentication requirements, ordering, pagination behavior beyond the limit parameter, error handling, or the response structure. This is minimal disclosure for a tool with no annotation support.

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 verb and resource. It contains no unnecessary words or repetition and is easy to parse quickly.

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 (one parameter, no output schema), the description is adequate but minimal. It lacks any mention of response format, empty-list behavior, or authentication side effects, which would be useful for agents to fully understand the tool's output and potential 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?

The input schema fully describes the single 'limit' parameter (type, default, minimum, maximum). The description adds no extra meaning to this parameter, so the baseline of 3 applies given 100% schema coverage.

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 a specific verb ('Get') and clearly identifies the resource ('list of posts that the authenticated user has liked'), distinguishing it from sibling tools like get-post-likes (which lists users who liked a post) and get-user-posts (which lists posts created by a user).

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?

The description clearly states the tool's purpose, implying it should be used when the authenticated user's liked posts are needed. However, it does not explicitly mention when not to use it or reference any alternative tools, though none of the siblings directly duplicate this functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-list-postsA

Fetch posts from users in a specified list

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesNumber of posts to fetch or hours to look back
listYesThe URI of the list (e.g., at://did:plc:abcdef/app.bsky.graph.list/listname)
typeYesWhether count represents number of posts or hours to look back

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 the full burden. It only states 'Fetch posts' with no additional behavioral details such as authentication requirements, rate limits, sorting, or pagination. This is a 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, clear sentence with no wasted words. It is concise and front-loaded with the action and resource.

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?

The tool is relatively simple with no output schema, but the description could provide more context about the 'type' parameter (posts vs hours) or what constitutes a 'list'. As is, it is minimally complete but leaves some ambiguity about behavior and return value.

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?

All three parameters have schema descriptions (100% coverage), so the description does not need to explain them. The description itself adds no extra semantic value beyond what the schema already provides. Baseline score of 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 clearly states the action (fetch posts) and the specific resource (users in a specified list). This distinguishes it from sibling tools like get-user-posts or get-timeline-posts, which fetch from different sources.

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?

The description implies that this tool is for fetching posts from a list of users, but it does not explicitly state when to use it over alternatives or any exclusions. The context is implied, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-my-handle-and-didA

Return the handle and did of the currently authenticated user for this blusesky session. Useful for when someone asks information about themselves using "me" or "my" on bluesky.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden and does disclose the key behavioral trait: it returns the authenticated user's identifiers and implies session/auth requirements. It does not discuss error behavior without a session, but for a simple read-only getter this is sufficient.

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 front-load the action and output. There is no filler, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description adequately states what is returned, for which user, and when it should be used. The absence of an output schema is compensated by explicitly naming the returned fields (handle and did).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so schema coverage is trivially complete and no parameter documentation is needed. The description adds no parameter semantics, but none are required for this tool.

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 a specific verb ('Return'), names the exact resources (handle and did), and scopes them to the currently authenticated user's session. This clearly distinguishes it from sibling tools that operate on other users or arbitrary profiles.

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?

It explicitly gives a trigger condition: when someone asks about themselves using 'me' or 'my' on Bluesky. It does not mention alternatives or when not to use it, but the context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-pinned-feedsB

Get the authenticated user's pinned feeds and lists.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 of behavioral disclosure. It implies a read-only operation but doesn't explicitly state safety, authentication requirements beyond 'authenticated user', rate limits, or side effects. Minimal context beyond the action itself.

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 with no wasted words. It is front-loaded and efficiently communicates the core action and resource.

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 zero-parameter read tool, the description is adequate but incomplete. There is no output schema, so the description should explain what the response contains, but it only says 'pinned feeds and lists' without defining their structure or scope. An agent would need to infer the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description doesn't need to explain parameter behavior because none exist, and the schema confirms no inputs are required.

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 action ('Get') and resource ('the authenticated user's pinned feeds and lists'), which is specific and unambiguous. However, it doesn't explicitly distinguish this from sibling tools like get-lists or search-feeds, though 'pinned' provides some implicit 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 is provided on when to use this tool versus alternatives. There is no context about typical use cases, prerequisites, or exclusions, so an agent gets no help in deciding between this and similar feed/list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-post-likesA

Get information about users who have liked a specific post

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of likes to fetch (1-100)
uriYesThe URI of the post to get likes for (e.g., at://did:plc:abcdef/app.bsky.feed.post/123)

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 the full burden of behavioral disclosure. It only states the purpose and does not describe what 'information about users' includes, whether authentication is required, error handling, or any other behavioral traits. For a read tool, the absence of these details limits transparency.

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, front-loaded sentence with no unnecessary words. It conveys the essential purpose efficiently and is appropriately concise for a simple read operation.

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 tool with two well-documented parameters, the description is minimal but serviceable. However, the lack of an output schema and absence of any detail about the return payload or pagination behavior leaves it somewhat incomplete. Given the complexity, a slightly richer description would improve completeness.

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, describing both 'uri' and 'limit' with examples and ranges. The description adds no additional meaning beyond the schema, so 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving information about users who liked a specific post. It uses a specific verb and resource ('get information about users', 'specific post') and distinguishes from sibling tools like 'get-liked-posts' which focus on posts liked by a user, not likes on a 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?

The purpose is clear enough that usage is implied (when you need to see who liked a post). However, there is no explicit guidance on when not to use it or alternatives, such as using 'get-liked-posts' to see a user's liked posts. The description lacks any exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-post-threadA

Get a full conversation thread for a specific post, showing replies and context

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the post to fetch the thread for (e.g., at://did:plc:abcdef/app.bsky.feed.post/123)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It states that the tool returns replies and context, but it does not explicitly say whether the operation is read-only, how nested replies are handled, or whether the original post is included. The phrase 'full conversation thread' hints at completeness but lacks detail about limits or ordering.

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 front-loaded with the primary action ('Get a full conversation thread') and ends with a brief elaboration on the output. It is concise with no wasted words.

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 simplicity (one parameter, no output schema, no annotations), the description is reasonably complete but lacks details about return structure, pagination, or any limitations on thread depth. It adequately states what is returned but leaves some operational ambiguity for an agent.

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 schema covers 100% of parameters, including a description for the single 'uri' parameter. The tool description does not add any additional parameter semantics, but with full schema coverage, this is adequate.

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 'Get' with the resource 'full conversation thread' and scopes it to a specific post, clearly distinguishing it from siblings like get-timeline-posts or get-post-likes. The phrase 'showing replies and context' adds clarity about what is returned.

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 provides clear context for when to use this tool: when a full conversation thread for a specific post is needed. It does not explicitly mention alternatives or exclusions, but the use case is well-defined compared to other post-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-profileB

Get a user's profile from Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe handle of the user (e.g., alice.bsky.social)

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 the full burden of behavioral disclosure. It only states the basic action ('Get a user's profile') but does not mention return format, authentication needs, rate limits, or error conditions. This is minimal but not misleading.

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 action and resource. It is appropriately sized for a simple tool with one parameter, and every word is useful. There is no wasted or redundant text.

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 straightforward getter with one parameter and no output schema, the description is minimally viable. It tells the user what the tool does, and the schema documents the parameter. However, it lacks detail about what exactly is included in the profile and when to prefer this over sibling tools, leaving some gaps.

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 schema description for 'handle' is clear and complete, covering 100% of parameters. The description adds no additional parameter meaning, but the baseline for high schema coverage is 3, and the schema already provides sufficient semantics.

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 action ('Get') and the resource ('user's profile') with a specified context ('from Bluesky'). It is unambiguous and distinct from siblings like get-my-handle-and-did or search-people, though it does not explicitly call out those alternatives.

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. It does not mention that it is preferred for fetching a specific profile by handle, nor does it exclude use cases like searching for people. The description offers no selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-timeline-postsA

Fetch your home timeline from Bluesky, which includes posts from all of the people you follow in reverse chronological order

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesNumber of posts to fetch or hours to look back
typeYesWhether count represents number of posts or hours to look back

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. 'Fetch' implies a read-only operation, and 'reverse chronological order' explains the ordering behavior. However, it does not mention authentication requirements, pagination, rate limits, or the exact response structure, leaving gaps for an agent assessing side effects and usage constraints.

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, well-structured sentence that is immediately informative. It avoids fluff and provides the essential information (resource and content) in a clear, front-loaded manner.

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?

Given the tool's simplicity and complete schema coverage, the description is nearly sufficient. It explains what the timeline contains and the ordering. However, because there is no output schema, a brief note about the return format (e.g., a list of post objects) would make it fully complete for an agent.

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%, so the input schema already thoroughly explains both parameters ('count' as number of posts or hours, and 'type' as posts/hours). The description adds no additional parameter semantics, which is acceptable because the schema handles the heavy lifting.

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 a specific verb 'Fetch' and clearly identifies the resource as 'your home timeline from Bluesky'. It further distinguishes this from sibling tools by explaining it contains posts from followed people in reverse chronological order, which separates it from get-user-posts, get-feed-posts, and get-list-posts.

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 provides clear context about what the tool does (home timeline of followed users), making it easy to infer when to use it. However, it does not explicitly state when not to use it or mention alternatives, but the context is strong enough to guide selection among similar timeline-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-user-postsB

Fetch posts from a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesNumber of posts to fetch or hours to look back
typeYesWhether count represents number of posts or hours to look back
userYesThe handle or DID of the user (e.g., alice.bsky.social)

TDQS

B3.1/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 responsibility. It only says 'fetch posts' without explicitly stating read-only behavior, permission requirements, rate limits, or output format. The verb 'fetch' implies a read, but this is not fully disclosed.

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 unnecessary words. While it is very brief, it is not overly verbose. However, it lacks any structured sections or additional context that might be expected for a tool with three required parameters.

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 tool with no annotations and no output schema, the description is too sparse. It does not explain the 'type' parameter (posts vs hours), which is critical to understanding count semantics, nor does it clarify output or handle resolution (handle vs DID). This leaves significant gaps for an agent to reason about correct usage.

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 each parameter (user, count, type) having a descriptive definition. The tool description adds no additional parameter context beyond the schema, so the baseline of 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 'Fetch posts from a specific user' clearly identifies the action (fetch), resource (posts), and scope (specific user). It distinguishes this tool from siblings like get-timeline-posts or get-feed-posts by emphasizing the 'specific user' target.

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?

There is no guidance on when to use this tool versus alternatives such as get-feed-posts, get-list-posts, or search-posts. No prerequisites, exclusions, or alternative recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

like-postB

Like a post on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe URI of the post to like

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral implications. It states only the action ('Like a post') without mentioning side effects, idempotency, permissions, or return behavior. For a mutation tool, this is a significant gap.

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 five-word sentence, front-loaded and free of any filler. Every word earns its place, making it maximally concise.

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?

The tool is simple with one parameter and no output schema, so minimal description is acceptable. However, it does not explain return values, failure modes, or whether the like is reversible, leaving some ambiguity for a complete 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% and the sole parameter 'uri' is already described in the schema as 'The URI of the post to like'. The tool description adds no additional meaning or syntax details, so the baseline of 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 'Like a post on Bluesky' uses a specific verb and resource, clearly distinguishing this tool from siblings like 'repost' and 'create-post'. It fully conveys the tool's purpose.

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 like 'repost' or 'create-post'. There is no mention of prerequisites, context, or exclusions, leaving usage entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-resourcesA

List all available MCP resources with their descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the scope of listing 'all available' and that descriptions are included, which is useful. However, it does not mention any potential side effects, error conditions, or output format details. For a simple read-only list operation, this is minimally adequate.

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 exactly states the purpose. It is concise, front-loaded with the verb, and contains no filler or redundancy.

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?

Given the tool's low complexity and empty input schema, the description is quite complete. It conveys what the tool returns (list of resources with descriptions) and the scope (all available). The absence of an output schema is compensated by this clear statement. A small gap is the lack of usage guidance, but that is minor for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is empty and there is nothing to describe. Based on the rule, 0 params gets a baseline of 4. The description adds no parameter info because none exist.

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 a specific verb 'List', a specific resource 'MCP resources', and scope 'all available'. It clearly distinguishes from sibling tools which focus on posts, users, feeds, etc., while this tool targets the server's resources.

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 no guidance on when to use this tool vs alternatives. There are no exclusions or alternative mentions. The context is only implicit, but no explicit usage guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-feedsB

Search for custom feeds on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to fetch (1-100)
queryYesSearch query for finding feeds

TDQS

B3.2/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 the full burden of behavioral disclosure. It only states the action and target, with no mention of read-only behavior, pagination, rate limits, authentication requirements, or what a 'custom feed' entails. This is a significant gap for a search operation.

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 directly states the tool's purpose without redundancy. It is front-loaded and contains no filler, earning a high score for efficiency.

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?

With no output schema, no annotations, and simple parameters, the description should compensate by explaining expected results or limitations. It does not mention return format, feed selection criteria, or any constraints beyond what the schema provides, leaving the tool poorly contextualized.

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% as both 'query' and 'limit' have descriptions. The tool description adds no extra meaning beyond the schema, so the baseline 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 'Search for custom feeds on Bluesky' clearly states the action (search) and the target resource (custom feeds), distinguishing it from sibling tools like search-posts and search-people. It lacks extra specificity about feed attributes but is unambiguous enough to identify the tool's core purpose.

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?

The description implies this tool should be used when searching for feeds specifically, given the resource is 'custom feeds'. However, it provides no explicit when-to-use guidance or alternatives, leaving the agent to infer based on sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-peopleB

Search for users/actors on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to fetch (1-100)
queryYesSearch query for finding users

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 carries the full burden of behavioral disclosure. The description only states 'Search for users/actors' and does not mention read-only status, return format, pagination, rate limits, or any other behavioral traits. This 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 sentence that directly states the purpose with no filler or redundancy. It is appropriately sized and front-loaded, making it easy to parse quickly.

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 absence of annotations and output schema, the description should provide more context about return values, result structure, or usage notes. The tool is under-specified for a search operation, leaving the agent uncertain about what to expect from the 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 both 'query' and 'limit' having descriptions in the schema. The tool description adds no new parameter-level information beyond the schema, so the baseline score of 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 'Search for users/actors on Bluesky' clearly specifies the action (search), the resource (users/actors), and the platform (Bluesky). This distinguishes it from sibling search tools like search-posts and search-feeds, which target different resource types.

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?

The description implies usage when looking for people on Bluesky but provides no explicit when-to-use or when-not-to-use guidance, nor does it name alternative tools. The context is clear from the resource type but lacks formal usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-postsB

Search for posts on Bluesky

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to fetch (1-100)
queryYesSearch query
sortNoSort order for search results - 'top' for most relevant or 'latest' for most recenttop

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 carries the full burden of behavioral disclosure. It only states the purpose, omitting details about result format, pagination, sorting behavior, or side effects. While 'search' implies a read-only operation, this is not explicitly disclosed, leaving significant behavioral ambiguity.

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 ('Search for posts on Bluesky') that is front-loaded and free of fluff. Every word contributes meaning with no unnecessary additions.

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?

With no output schema, the description should at least indicate the return value (e.g., a list of posts). It does not, and also omits mention of authentication, rate limits, or result fields. The tool is simple, but this minimal description leaves important contextual gaps for an agent deciding to invoke 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?

The input schema has 100% coverage, with each parameter (query, sort, limit) having a clear description and the sort parameter documented with an enum. The description adds no extra parameter-level detail, so the baseline score of 3 is appropriate given the schema already carries the semantic weight.

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 tool 'Search for posts on Bluesky' with a specific verb ('Search') and resource ('posts on Bluesky'). This distinguishes it from sibling tools like 'search-people' and 'search-feeds' by the target content type.

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?

The purpose implies when to use it (when searching posts) but provides no explicit guidance on when to choose this over alternatives like search-people or search-feeds. There are no exclusions or alternative names referenced, so it meets the baseline but lacks explicit differentiation.

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. 21 tool updatesv1.0.0
    • First observedconvert-url-to-uri
    • First observedcreate-post
    • First observedfollow-user
    • First observedget-feed-posts
    • First observedget-followers
    • First observedget-follows
    • First observedget-liked-posts
    • First observedget-list-posts
    • First observedget-my-handle-and-did
    • First observedget-pinned-feeds
    • First observedget-post-likes
    • First observedget-post-thread
    • First observedget-profile
    • First observedget-timeline-posts
    • First observedget-trends
    • First observedget-user-posts
    • First observedlike-post
    • First observedlist-resources
    • First observedsearch-feeds
    • First observedsearch-people
    • First observedsearch-posts

TDQS

B3.4/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have clearly distinct purposes targeting specific Bluesky operations like creating posts, following users, fetching different types of content (timeline, feed, user posts, thread), and searching. However, some overlap exists between get-feed-posts, get-list-posts, get-timeline-posts, and get-user-posts which all fetch posts but from different sources, which could cause minor confusion without careful reading of descriptions.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with clear action prefixes like get-, create-, follow-, like-, search-, and list-. All tools use snake_case consistently, making them predictable and easy to understand at a glance.

Tool Count4/5

With 21 tools, the count is slightly high but reasonable for a comprehensive Bluesky API server covering posting, social interactions, content retrieval, and search functionalities. It includes core operations without being excessively bloated, though it borders on the upper limit of typical scoping.

Completeness5/5

The tool set provides complete coverage for Bluesky interactions, including CRUD-like operations (create-post, like-post, follow-user), extensive retrieval (posts, profiles, followers, likes, trends), search capabilities (people, posts, feeds), and utility functions (URL conversion, session info). No obvious gaps exist for standard user workflows in this domain.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI models and applications to interact directly with Twitter/X, providing capabilities to create posts, reply to tweets, retrieve user data, and manage account actions.
    11 npm
    11
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Twitter functionality using cookie-based authentication, allowing for timeline access, tweet management, user information retrieval, and search capabilities.
    16
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server for Bluesky that can post on your behalf by using the AT Protocol.
    13 npm
    7
    MIT