MCP (stdio) · Bluesky

Post to Bluesky from Claude Desktop, with approval

Claude Desktop is where many people think out loud: you paste a draft essay, a talk abstract, or a messy list of ideas and ask what is worth saying. With SocialHandoff connected over MCP, Claude can turn the best of that conversation into a Bluesky post or a short reply-chain thread, checked against the 300-grapheme limit, and hand it to you as a draft. Nothing reaches Bluesky until you approve it in the inbox.

Prompt

I just gave a talk called 'Boring Postgres for Busy Teams'. Here are my slides as text. Draft a 3-post Bluesky thread for the developer crowd: the one idea people asked about most, one concrete tip, and a link to the recording at example.com/talks/boring-postgres. No hashtags except #postgres on the last post.

How to do it

  1. Mint a Bluesky agent key In https://app.socialhandoff.com, open Connections, connect your Bluesky account, then create an agent key scoped to Bluesky with draft permission only. Copy the key when it is shown; only its hash is stored.
  2. Add the stdio server Open claude_desktop_config.json and add an mcpServers entry that runs npx -y socialhandoff-mcp with your instance URL and the Bluesky key. The key-mint dialog prints this block ready to paste.
  3. Restart and check the tools Quit Claude Desktop completely and reopen it. The tools menu should list draft_post, schedule_post, and preview_posts.
  4. Draft from the conversation Ask Claude for the Bluesky post. It calls draft_post, then preview_posts so you see the approval card inline. Approve or edit it in the inbox on desktop or phone.

Example draft

1/3 Gave a talk today on boring Postgres for busy teams. The question everyone asked: do we really need a queue service? Often no. A jobs table with SKIP LOCKED gets small teams a long way.

2/3 One tip that surprised people: set statement_timeout per role, not globally. Your migration role and your web role need very different limits.

3/3 Recording and slides: example.com/talks/boring-postgres #postgres

Gotchas

  • Bluesky refuses images over 1 MB and allows at most 4 per post. Resize screenshots before the agent attaches them, and add alt text to each.
  • Links, @handles, and #tags become clickable facets when the post publishes. Have the agent write the plain URL and handle, not markdown links.
  • Connect Bluesky with an app password from Settings, never your account password. Revoking that app password cuts off only this connection.
  • Claude Desktop reads its config only at launch. After editing claude_desktop_config.json, quit the app fully, not just the window, or the tools will not appear.
Bluesky
  • Character limit: 300 graphemes per post. An emoji or an accented letter counts as 1 grapheme even if it uses several bytes.
  • Media per post: Up to 4 images, or 1 video. Images and video cannot be mixed in one post.
  • Image size: The AT Protocol image embed accepts blobs of about 1 MB each; the official app compresses larger photos. SocialHandoff checks for 1 MB per image.
  • Video: Up to 3 minutes and 100 MB, MP4. SocialHandoff does not publish video to Bluesky.
Bluesky scheduler for agent-drafted posts and threads

Frequently asked questions

Can Claude Desktop publish to Bluesky by itself?
No. With a draft-only key, Claude Desktop can create and preview Bluesky posts but not publish them. You approve in the inbox, or promote the agent on the trust ladder once it has a clean record.
Can Claude Desktop write a Bluesky thread instead of one post?
Yes. Ask for a thread and the draft is stored as a reply chain, each part checked against the 300-grapheme limit. You approve the whole thread at once.
Do I need a Bluesky app password?
Yes. Create one in Bluesky under Settings, then App passwords, and paste it when you connect the account. It can be revoked without changing your main password.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial