The Bluesky MCP server
Bluesky has no built-in scheduling. Let Claude, ChatGPT, Cursor or any MCP client schedule Bluesky posts and threads through the AT Protocol instead.
Cancel anytime · or self-host for free
Claude scheduling to Bluesky through Postbase
Reply to Claude…
How posting to Bluesky works
- Length
- 300
- Characters per post, counted as you'd count them by eye. Links are made clickable for you.
- Threads
- Threads
- Send a thread array and each post is published as a reply to the one before.
- Connecting
- App password
- Connect Bluesky to Postbase with your handle and an app password, not your main password.
Problems go back to the agent, not out to your followers
- Too long
- A scheduled post over 300 characters is refused when the agent calls the tool, with the reason.
- Two networks
- When one call targets X and Bluesky, every post has to fit both limits. Separate calls give each network its own version.
- In the past
- A time in the past is refused rather than posted straight away.
The tools
The same ten tools on every network.
list_channelsRead onlyThe accounts connected to the workspace: id, network, handle and status. The agent calls it first to get channel ids.
No arguments.
create_postWritesSaves a draft, or schedules a post or a thread, on one or more channels. The post lands on your Postbase calendar and publishes through each network's official API.
body or thread, channel_ids, scheduled_at (ISO 8601 with an offset) or schedule_in_minutes, media_ids from list_media or media_urls, channel_bodies for per-channel text, and an idempotency_key so a retried call can't post twice. Leave both times out to save a draft.
get_postRead onlyOne post and how it went on each channel: published with its live link, or failed with the reason and when it will be retried.
post_id, from create_post or list_scheduled.
update_postWritesEdits or reschedules a draft or scheduled post before it goes out. Only the fields you pass change.
post_id, plus any of create_post's fields. scheduled_at null turns it back into a draft.
retry_postWritesSends a post again to the channels where it failed. Channels where it already published are left alone.
post_id.
get_analyticsRead onlyHow published posts performed: impressions, likes, comments, shares and saves per channel, with totals for the range.
from and to (YYYY-MM-DD, default the last 30 days), or post_id; channel_id, platform, sort (date or a metric), order, limit.
list_mediaRead onlyThe images and videos in your Postbase media library, newest first. The agent passes their ids to create_post to attach them.
type (optional): image or video. search (optional): part of a file name.
add_mediaWritesAdds an image or video to your media library from a public link, for attaching to posts.
url (https). name (optional).
list_scheduledRead onlyPosts in the workspace with their text, time and channels. Scheduled posts by default, or drafts, published or failed ones.
status (optional): scheduled, draft, published or failed.
cancel_postWritesCancels a scheduled post before it goes out. It goes back to being a draft, so nothing is deleted.
post_id, from list_scheduled.
Frequently asked questions
Does Bluesky have its own scheduling?
No, the Bluesky app can't schedule posts. Postbase holds the post and publishes it at the time you set, through the AT Protocol.
Are links in the agent's posts clickable?
Yes. Postbase adds the link facets Bluesky needs when it publishes.
Can it post images to Bluesky?
Yes, up to four images per post from your Postbase media library. Video isn't posted to Bluesky yet.
Related
- Claude + Bluesky
Set up Claude to post to Bluesky.
- Claude Code + Bluesky
Set up Claude Code to post to Bluesky.
- Cursor + Bluesky
Set up Cursor to post to Bluesky.
- X MCP server
Characters per post, counted the way X counts: links are 23 and most emoji are 2.
- LinkedIn MCP server
Characters per post. Only the first few lines show before "see more".
- Mastodon MCP server
Characters per post, the default on most instances. Hashtags work as you type them.
- YouTube MCP server
The agent finds the video with list_media and attaches it by id. Postbase uploads it to YouTube when it's due.
- Bluesky scheduler
Posts and threads up to 300 characters, with up to 4 images.
From the blog
Ready to get started?
Connect your AI tool in a minute. It schedules your Bluesky posts, and you see every one in your calendar.
Cancel anytime · or self-host for free
Copy your key now — you won't see it again.
pb_live_Qm7xT2vLr9KcH0sWbN8y…4f2aCopyAuthentication
Client
