MCP (streamable HTTP) · Bluesky

Post to Bluesky from Cline, with approval

Cline runs inside your editor with a plan-then-act loop and asks before it calls tools. That makes it a careful way to draft social posts from code work. With SocialHandoff's MCP server added, Cline can turn a finished task into a Bluesky post, show you the draft_post call before it runs, and leave the post in the inbox. Each draft is held in the approval inbox until a person says yes.

Prompt

You just finished adding rate limiting to our public API. Draft a Bluesky post for developers who use the API: the new limit (100 requests per minute per key), the headers they can read, and a link to docs.example.dev/rate-limits. Under 280 graphemes.

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. Open the MCP servers panel In Cline, open MCP Servers, choose to configure, and edit cline_mcp_settings.json.
  3. Add the server Add an entry that runs npx -y socialhandoff-mcp with your instance URL and Bluesky key, or a streamable HTTP entry for https://app.socialhandoff.com/mcp with a bearer header.
  4. Draft in a task Start a task and ask Cline to write the Bluesky post from the files it just changed. Approve its draft_post call, then approve the post itself in the inbox.

Example draft

Heads up for API users: rate limits are now 100 requests per minute per key. Every response includes RateLimit-Remaining and RateLimit-Reset so your client can back off before it hits a 429.

docs.example.dev/rate-limits

Gotchas

  • Connect Bluesky with an app password from Settings, never your account password. Revoking that app password cuts off only this connection.
  • The 300 limit counts graphemes, so an emoji or accented letter counts as one. Anything longer should become a reply-chain thread, not a clipped post.
  • 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.
  • Cline can auto-approve tool calls. Auto-approving draft_post is reasonable, since the post still waits for you, but keep schedule_post on manual approval.
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

Which model should Cline use for Bluesky drafts?
Any model Cline supports can call the tools. The output quality depends on the model, and brand memory keeps voice rules consistent whichever you choose.
Will Cline link to my repo correctly on Bluesky?
Yes. Write the plain URL and it becomes a clickable link facet when the post publishes. The same happens for @handles and #tags.
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