Bluesky MCP Server
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 帐户创建一个应用密码:
登录 Bluesky
前往“设置”>“应用密码”
专门为此集成创建新的应用密码
使用 BLUESKY_APP_PASSWORD 环境变量设置应用程序密码
安全说明
该服务器仅将您的会话信息存储在内存中,并不与 MCP 客户端共享。
MCP 客户端只能访问工具,而不能访问您的身份验证或应用程序密码
执照
麻省理工学院
Available Tools
21 toolsconvert-url-to-uriA
Convert a Bluesky web URL to an AT URI format that can be used with other tools
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Bluesky post URL to convert (e.g., https://bsky.app/profile/username.bsky.social/post/postid) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| replyTo | No | Optional URI of post to reply to | |
| text | Yes | The content of your post |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The handle of the user to follow |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of posts to fetch or hours to look back | |
| feed | Yes | The URI of the feed to fetch posts from (e.g., at://did:plc:abcdef/app.bsky.feed.generator/whats-hot) | |
| type | Yes | Whether count represents number of posts or hours to look back |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of followers to fetch (1-500) | |
| user | Yes | The handle or DID of the user (e.g., alice.bsky.social) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of follows to fetch (1-500) | |
| user | Yes | The handle or DID of the user (e.g., alice.bsky.social) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of liked posts to fetch (1-100) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of posts to fetch or hours to look back | |
| list | Yes | The URI of the list (e.g., at://did:plc:abcdef/app.bsky.graph.list/listname) | |
| type | Yes | Whether count represents number of posts or hours to look back |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of likes to fetch (1-100) | |
| uri | Yes | The URI of the post to get likes for (e.g., at://did:plc:abcdef/app.bsky.feed.post/123) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URI of the post to fetch the thread for (e.g., at://did:plc:abcdef/app.bsky.feed.post/123) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | The handle of the user (e.g., alice.bsky.social) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of posts to fetch or hours to look back | |
| type | Yes | Whether count represents number of posts or hours to look back |
TDQS
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.
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.
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.
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.
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.
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-trendsB
Get current trending topics on Bluesky
| Name | Required | Description | Default |
|---|---|---|---|
| includeSuggested | No | Whether to include suggested topics in addition to trending topics | |
| limit | No | Number of trending topics to fetch (1-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral context. It only says 'Get current trending topics' without noting whether the tool is read-only, whether authentication is required, what the response format looks like, or any rate-limit considerations. This is minimal behavioral disclosure beyond the basic verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core purpose without waste. However, it is extremely terse, bordering on under-specification for a tool with two parameters and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool, the description plus complete parameter schema provide a basic understanding, but the lack of an output schema and any behavioral notes leaves some gaps. The description does not explain what 'trending topics' includes or how includeSuggested modifies the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters (limit, includeSuggested) with ranges and defaults, so the description does not need to add parameter details. However, the description also does not add any extra meaning or context about how these parameters affect results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('current trending topics'), and the platform ('Bluesky'). It distinguishes from sibling tools like get-timeline-posts and search-posts by specifying trends specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool or when to prefer an alternative. It does not mention any distinguishing use cases, exclusions, or relationships to sibling tools like search-posts or get-feed-posts.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of posts to fetch or hours to look back | |
| type | Yes | Whether count represents number of posts or hours to look back | |
| user | Yes | The handle or DID of the user (e.g., alice.bsky.social) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | The URI of the post to like |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to fetch (1-100) | |
| query | Yes | Search query for finding feeds |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to fetch (1-100) | |
| query | Yes | Search query for finding users |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to fetch (1-100) | |
| query | Yes | Search query | |
| sort | No | Sort order for search results - 'top' for most relevant or 'latest' for most recent | top |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v1.0.0- First observed
convert-url-to-uri - First observed
create-post - First observed
follow-user - First observed
get-feed-posts - First observed
get-followers - First observed
get-follows - First observed
get-liked-posts - First observed
get-list-posts - First observed
get-my-handle-and-did - First observed
get-pinned-feeds - First observed
get-post-likes - First observed
get-post-thread - First observed
get-profile - First observed
get-timeline-posts - First observed
get-trends - First observed
get-user-posts - First observed
like-post - First observed
list-resources - First observed
search-feeds - First observed
search-people - First observed
search-posts
TDQS
Scored across 21 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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 npm11MIT
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for Bluesky that can post on your behalf by using the AT Protocol.13 npm7MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Bluesky/AT Protocol enabling LLM clients and agents to authenticate, search, post, like, follow, and manage chat on Bluesky.8 npmMIT