11 tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. All tools have names starting with action verbs (login, create, get, delete, like, repost) and descriptions present. However, most parameter descriptions are minimal (10-30 chars), falling below the 72-char baseline. No output schemas documented. Error handling returns JSON strings but lacks recovery guidance or error classification. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Schemas use Zod validation but descriptions do not explain constraints (e.g., 'limit' says '1-100' only in schema, not description text). No mention of prerequisites, dependencies, or when to use each tool vs. alternatives.
Create a new post on Bluesky
Delete one of your posts
Get a specific post by URI
Get multiple posts by their URIs
Get your Bluesky profile
Get Bluesky timeline
Like a post
Parameter descriptions are too brief (10-30 chars vs. 72-char baseline). 'The URI of the post to fetch' is minimal; should explain what a URI is, how to obtain one, and when to use get-post vs. get-posts.
No output schemas documented. Tools return JSON strings but LLMs cannot infer response structure. E.g., create-post returns {status, message, uri, cid} but this is not declared in tool definition.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete-post is DESTRUCTIVE, like-post is WRITE, unlike-post is REVERSIBLE, these should be declared to guide agent behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Login to Bluesky using credentials from .env file or provided parameters
Repost someone's post
Remove your like from a post
Remove your repost of a post
Error handling returns generic JSON error messages without recovery guidance. E.g., 'Failed to login: <error>' does not tell the LLM whether to retry, ask the user for new credentials, or check .env file.
Credentials (identifier, password) exposed as optional tool parameters. Should use server-side secret injection via .env only, never as parameters. Agent traces log all parameters, secrets leak into logs.