mcp-bsky

✍️ Writing

The six write tools and the confirm gate that stops any of them acting by accident.

The confirm gate

Every write tool takes a confirm boolean that defaults to false. Called without confirm: true, a tool does nothing and returns:

Error: Set confirm: true to perform this write action.

This lets a client propose an action, show it to you, and only then repeat the call with confirm: true.

Tools

ToolParametersEffect
posttext, confirmPublish a post
thread_postposts, confirmPublish a self-thread
replyurl, text, confirmReply to a post
likeurl, confirmLike a post
reposturl, confirmRepost a post
followhandle, confirmFollow an account

Posts are limited to 300 characters, as stated in the tool descriptions for post and reply. The server itself does not check the length; an over-long post is rejected downstream and comes back as an Error: message.

post

{ "text": "Shipped a new MCP server.", "confirm": true }

thread_post

posts is an ordered array of texts. Each post replies to the previous one.

{ "posts": ["First post of the thread.", "Second post, replying to the first."], "confirm": true }

reply

url is the post to reply to, as a URL or an at:// URI.

{ "url": "https://bsky.app/profile/alice.example.com/post/3kexample", "text": "Agreed.", "confirm": true }

like and repost

Both take a post URL or at:// URI. On success they return { "liked": "<url>" } or { "reposted": "<url>" }.

{ "url": "at://alice.example.com/app.bsky.feed.post/3kexample", "confirm": true }

follow

handle is the account to follow. On success it returns { "followed": "<handle>" }.

{ "handle": "bob.example.com", "confirm": true }