bluesky_add_ list_ memberAdd an account to one of this account's lists.
Post a thread from a draft, catch up on mentions and replies, find what people are saying about a topic, tidy who you follow, or answer a direct message, all by asking.
PopMCPBluesky
Every endpoint a Bluesky account can call is a tool, from timelines and search to lists, drafts, bookmarks and group chats. One-call tools handle what is awkward by hand: a post with clickable links and images, a whole thread, a reply from a link, a profile change.
191 tools in the full catalog: 111 read and 80 write. 50 load by default, and the rest are found with tool search.
bluesky_add_ list_ memberAdd an account to one of this account's lists.
bluesky_block_ userBlock an account: neither side sees the other's posts or can interact.
bluesky_create_ listCreate a list.
bluesky_follow_ userFollow an account.
bluesky_get_ followersEnumerates accounts which follow a specified account (actor).
bluesky_get_ followsEnumerates accounts which a specified account (actor) follows.
bluesky_get_ listGets a 'view' (with additional context) of a specified list.
bluesky_get_ listsEnumerates the lists created by a specified account (actor).
bluesky_mute_ actorCreates a mute relationship for the specified account.
bluesky_remove_ list_ memberRemove an account from one of this account's lists.
bluesky_unblock_ userRemove a block on an account.
bluesky_unfollow_ userStop following an account.
bluesky_unmute_ actorUnmutes the specified account.
bluesky_get_ conversation_ messagesReturns a page of messages from a conversation.
bluesky_list_ conversationsReturns a page of conversations (direct or group) for the user.
bluesky_send_ direct_ messageSend a direct message to one person, starting the conversation if there is none.
bluesky_create_ postPublish a post on Bluesky, publicly and at once: confirm with the user first unless they clearly asked for it.
bluesky_create_ threadPublish a thread: several posts, each replying to the one before.
bluesky_delete_ postDelete one of this account's own posts.
bluesky_get_ author_ feedGet a view of an actor's 'author feed' (post and reposts by the author).
bluesky_get_ feedGet a hydrated feed from an actor's selected feed generator.
bluesky_get_ likesGet like records which reference a subject (by AT-URI and CID).
bluesky_get_ post_ threadGet posts in a thread.
bluesky_get_ postsGets post views for a specified list of posts (by AT-URI).
bluesky_get_ quotesGet a list of quotes for a given post.
bluesky_get_ reposted_ byGet a list of reposts for a given post.
bluesky_get_ suggested_ feedsGet a list of suggested feeds (feed generators) for the requesting account.
bluesky_get_ timelineGet a view of the requesting account's home timeline.
bluesky_like_ postLike a post.
bluesky_repost_ postRepost a post to this account's followers.
bluesky_save_ feedSave a custom feed or list to this account, optionally pinned to its home tabs.
bluesky_search_ postsFind posts matching search criteria, returning views of those posts.
bluesky_set_ reply_ controlsChange who may reply to one of this account's own posts: everyone, nobody, mentioned, following or followers.
bluesky_unlike_ postRemove this account's like from a post.
bluesky_unrepost_ postUndo this account's repost of a post.
bluesky_unsave_ feedRemove a saved custom feed or list from this account.
bluesky_get_ trending_ topicsGet a list of trending topics Returns: topics, suggested.
bluesky_account_ summaryThis account at a glance: profile and follower counts, unread notifications, and how its recent posts did (totals and the top 5 by engagement).
bluesky_get_ profileGet detailed profile view of an actor.
bluesky_get_ unread_ notification_ countCount the number of unread notifications for the requesting account.
bluesky_list_ notificationsEnumerate notifications for the requesting account.
bluesky_list_ recordsList a range of records in a repository, matching a specific collection.
bluesky_search_ actorsFind actors (profiles) matching search criteria.
bluesky_update_ profileChange this account's profile: display name, bio, avatar, banner, website or pinned post.
bluesky_upload_ imageUpload an image and get the blob reference a record needs.
bluesky_get_ blob_ urlGet a direct link to a file (image or video) stored on an account, from the cid of its blob reference.
bluesky_create_ bookmarkCreates a private bookmark for the specified record.
bluesky_get_ bookmarksGets views of records bookmarked by the authenticated user.
bluesky_get_ video_ job_ statusGet status details for a video processing job.
bluesky_upload_ videoUpload an MP4 video from a public link for Bluesky to process, as the first step of a video post.
bluesky_get_ actor_ starter_ packsGet a list of starter packs created by the actor.
bluesky_get_ blocksEnumerates which accounts the requesting account is currently blocking.
bluesky_get_ known_ followersEnumerates accounts which follow a specified account (actor) and are followed by the viewer.
bluesky_get_ list_ blocksGet mod lists that the requesting account (actor) is blocking.
bluesky_get_ list_ mutesEnumerates mod lists that the requesting account (actor) currently has muted.
bluesky_get_ lists_ with_ membershipEnumerates the lists created by the session user, and includes membership information about `actor` in those lists.
bluesky_get_ mutesEnumerates accounts that the requesting account (actor) currently has fully muted.
bluesky_get_ relationshipsEnumerates public relationships between one account, and a list of other accounts.
bluesky_get_ starter_ packGets a view of a starter pack.
bluesky_get_ starter_ packsGet views for a list of starter packs.
bluesky_get_ starter_ packs_ with_ membershipEnumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs.
bluesky_get_ suggested_ follows_ by_ actorEnumerates follows similar to a given account (actor).
bluesky_mute_ actor_ listCreates a mute relationship for the specified list of accounts.
bluesky_mute_ threadMutes a thread preventing notifications from the thread and any of its children.
bluesky_search_ starter_ packsFind starter packs matching search criteria.
bluesky_search_ starter_ packs_ v2Find starter packs matching search criteria.
bluesky_unmute_ actor_ listUnmutes the specified list of accounts.
bluesky_unmute_ threadUnmutes the specified thread.
bluesky_accept_ conversationMarks a conversation as accepted, so it is shown in the list of accepted convos instead on the request convos.
bluesky_add_ message_ reactionAdds an emoji reaction to a message.
bluesky_delete_ chat_ accountDelete this account's direct messages data.
bluesky_delete_ message_ for_ selfMarks a message as deleted for the viewer, so they won't see that message in future enumerations.
bluesky_export_ chat_ dataExport this account's direct messages as JSON lines.
bluesky_get_ chat_ notification_ preferencesGet the requesting account's chat notification preferences.
bluesky_get_ chat_ statusGet the authenticated viewer's chat status: whether their account is chat-disabled and whether their group-membership additions are restricted to accounts they follow.
bluesky_get_ conversationGets an existing conversation by its ID.
bluesky_get_ conversation_ availabilityCheck whether the requester and the other members can start a 1-1 chat.
bluesky_get_ conversation_ for_ membersGet or create a 1-1 conversation for the given members.
bluesky_get_ conversation_ logGet recent changes across this account's conversations (new messages, reads, joins), for catching up since a cursor.
bluesky_get_ conversation_ membersReturns a paginated list of members from a conversation.
bluesky_get_ unread_ conversation_ countsReturns unread conversation counts for conversations that are unlocked, not muted, split by convo status.
bluesky_leave_ conversationLeaves a conversation (direct or group).
bluesky_list_ conversation_ requestsReturns a page of incoming conversation requests for the user.
bluesky_lock_ conversationLocks a group convo so no more content (messages, reactions) can be added to it.
bluesky_mark_ all_ conversations_ readSets conversations from an user as read to the latest message, with filters.
bluesky_mark_ conversation_ readUpdates the read state of a conversation from, optionally specifying the last read message.
bluesky_mute_ conversationMutes a conversation, preventing notifications related to it.
bluesky_put_ chat_ notification_ preferencesSet the requesting account's chat notification preferences.
bluesky_remove_ message_ reactionRemoves an emoji reaction from a message.
bluesky_send_ chat_ messageSends a message to a conversation.
bluesky_send_ chat_ message_ batchSends a batch of messages to a conversation.
bluesky_unlock_ conversationUnlocks a group convo so it is able to receive new content.
bluesky_unmute_ conversationUnmutes a conversation, allowing notifications related to it.
bluesky_get_ actor_ feedsGet a list of feeds (feed generator records) created by the actor (in the actor's repo).
bluesky_get_ actor_ likesGet a list of posts liked by an actor.
bluesky_get_ feed_ generatorGet information about a feed generator.
bluesky_get_ feed_ generatorsGet information about a list of feed generators.
bluesky_get_ list_ feedGet a feed of recent posts from a list (posts and reposts from any actors on the list).
bluesky_search_ posts_ v2Find posts matching a search query, using Bluesky's newer search.
bluesky_send_ interactionsSend information about interactions with feed items back to the feed generator that served them.
bluesky_get_ age_ assurance_ state_ unspeccedReturns the current state of the age assurance process for an account.
bluesky_get_ app_ configGet app configuration Bluesky publishes for its clients, such as which features are switched on.
bluesky_get_ atmosphere_ explore_ tabGet Atmosphere Explore content.
bluesky_get_ atmosphere_ timelineGet the authenticated viewer's Atmosphere activity timeline.
bluesky_get_ onboarding_ suggested_ starter_ packsGet a list of suggested starterpacks for onboarding Returns: starterPacks, recIdStr.
bluesky_get_ popular_ feed_ generatorsAn unspecced view of globally popular feed generators.
bluesky_get_ post_ thread_ other_ v2(NOTE: this endpoint is under development and WILL change without notice.
bluesky_get_ post_ thread_ v2(NOTE: this endpoint is under development and WILL change without notice.
bluesky_get_ suggested_ feeds_ unspeccedGet a list of suggested feeds Returns: feeds, recIdStr.
bluesky_get_ suggested_ onboarding_ usersGet a list of suggested users for onboarding Returns: actors, recId, recIdStr.
bluesky_get_ suggested_ starter_ packsGet a list of suggested starterpacks Returns: starterPacks, recIdStr.
bluesky_get_ suggested_ usersGet a list of suggested users Returns: actors, recId, recIdStr.
bluesky_get_ suggested_ users_ for_ discoverGet a list of suggested users for the Discover page Returns: actors, recIdStr.
bluesky_get_ suggested_ users_ for_ exploreGet a list of suggested users for the Explore page Returns: actors, recIdStr.
bluesky_get_ suggested_ users_ for_ see_ moreGet a list of suggested users for the See More page Returns: actors, recIdStr.
bluesky_get_ tagged_ suggestionsGet suggested feeds and accounts Bluesky tags by topic.
bluesky_get_ trendsGet the current trends on the network Returns: trends, recIdStr.
bluesky_init_ age_ assuranceInitiate age assurance for an account.
bluesky_add_ chat_ group_ membersAdds members to a group.
bluesky_approve_ chat_ group_ join_ requestApproves a request to join a group (via join link) the user owns.
bluesky_create_ chat_ groupCreates a group convo, specifying the members to be added to it.
bluesky_create_ chat_ group_ join_ linkCreates a join link for the group convo.
bluesky_disable_ chat_ group_ join_ linkDisables the active join link for the group convo.
bluesky_edit_ chat_ groupEdits group settings.
bluesky_edit_ chat_ group_ join_ linkEdits the existing join link settings for the group convo.
bluesky_enable_ chat_ group_ join_ linkRe-enables a previously disabled join link for the group convo.
bluesky_get_ chat_ group_ join_ link_ previewsGet public information about groups from join links.
bluesky_list_ chat_ group_ join_ requestsLists a page of request to join a group (via join link) the user owns.
bluesky_list_ mutual_ chat_ groupsReturns a page of group conversations that both the requester and the specified actor are members of.
bluesky_mark_ chat_ group_ join_ requests_ readMarks all join requests as read for the group owner.
bluesky_reject_ chat_ group_ join_ requestRejects a request to join a group (via join link) the user owns.
bluesky_remove_ chat_ group_ membersRemoves members from a group.
bluesky_request_ chat_ group_ joinSends a request to join a group (via join link) to the group owner.
bluesky_withdraw_ chat_ group_ join_ requestWithdraws a pending request to join a group.
bluesky_apply_ writesApply a batch transaction of repository creates, updates, and deletes.
bluesky_create_ recordCreate a single new repository record.
bluesky_delete_ recordDelete a repository record, or ensure it doesn't exist.
bluesky_describe_ repoGet information about an account and repository, including the list of collections.
bluesky_get_ account_ preferencesGet private preferences attached to the current account.
bluesky_get_ grouped_ notifications[UNSTABLE - DO NOT USE THIS ENDPOINT WHILE THIS NOTE IS HERE] Enumerate notifications for the requesting account, pre-grouped for rendering.
bluesky_get_ notification_ preferencesGet notification-related preferences for an account.
bluesky_get_ profilesGet detailed profile views of multiple actors.
bluesky_get_ recordGet a single record from a repository.
bluesky_get_ suggested_ accountsGet a list of suggested actors.
bluesky_list_ activity_ subscriptionsEnumerate all accounts to which the requesting account is subscribed to receive notifications for.
bluesky_list_ missing_ blobsReturns a list of missing blobs for the requesting account.
bluesky_put_ account_ preferencesSet the private preferences attached to the account.
bluesky_put_ activity_ subscriptionPuts an activity subscription entry.
bluesky_put_ notification_ preferencesSet notification-related preferences for an account.
bluesky_put_ notification_ preferences_ v2Set notification-related preferences for an account.
bluesky_put_ recordWrite a repository record, creating or updating it as needed.
bluesky_search_ actors_ typeaheadFind actor suggestions for a prefix search term.
bluesky_update_ notifications_ seenNotify server that the requesting account has seen notifications.
bluesky_dismiss_ contact_ matchRemoves a match that was found via contact import.
bluesky_get_ contact_ matchesReturns the matched contacts (contacts that were mutually imported).
bluesky_get_ contact_ sync_ statusGets the user's current contact import status.
bluesky_get_ host_ statusReturns information about a specified upstream host, as consumed by the server.
bluesky_get_ latest_ commitGet the current commit CID & revision of the specified repo.
bluesky_get_ repo_ statusGet the hosting status for a repository, on this server.
bluesky_import_ contactsImport contacts for securely matching with other users.
bluesky_list_ blobsList blob CIDs for an account, since some repo revision.
bluesky_list_ hostsEnumerates upstream hosts (eg, PDS or relay instances) that this service consumes from.
bluesky_list_ reposEnumerates all the DID, rev, and commit CID for all repos hosted by this service.
bluesky_list_ repos_ by_ collectionEnumerates all the DIDs which have records with the given collection NSID.
bluesky_remove_ contact_ dataRemoves all stored hashes used for contact matching, existing matches, and sync status.
bluesky_send_ contact_ notificationSystem endpoint to send notifications related to contact imports.
bluesky_start_ phone_ verificationStarts a phone verification flow.
bluesky_verify_ phoneVerifies control over a phone number with a code received via SMS and starts a contact import session.
bluesky_check_ account_ statusReturns the status of an account, especially as pertaining to import or recovery.
bluesky_check_ handle_ availabilityChecks whether the provided handle is available.
bluesky_dereference_ permission_ scopeAllows finding the oauth permission scope from a reference Returns: scope.
bluesky_describe_ serverDescribes the server's account creation requirements and capabilities.
bluesky_get_ sessionGet information about the current auth session.
bluesky_create_ draftInserts a draft using private storage (stash).
bluesky_delete_ draftDeletes a draft by ID.
bluesky_get_ draftsGets views of user drafts.
bluesky_refresh_ identityRequest that the server re-resolve an identity (DID and handle).
bluesky_resolve_ didResolves DID to DID document.
bluesky_resolve_ handleResolves an atproto handle (hostname) to a DID.
bluesky_resolve_ identityResolves an identity (DID or Handle) to a full identity (DID document and verified handle).
bluesky_update_ draftUpdates a draft using private storage (stash).
bluesky_begin_ age_ assuranceInitiate Age Assurance for an account.
bluesky_delete_ bookmarkDeletes a private bookmark for the specified record.
bluesky_get_ age_ assurance_ configReturns Age Assurance configuration for use on the client.
bluesky_get_ age_ assurance_ stateReturns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side.
bluesky_get_ video_ upload_ limitsGet video upload limits for the authenticated user.
bluesky_create_ reportSubmit a moderation report regarding an atproto account or record.
bluesky_get_ embed_ external_ viewResolve one AT-URI record into the data needed to render an enhanced external embed.
bluesky_get_ labeler_ servicesGet information about a list of labeler services.
bluesky_query_ labelsFind labels relevant to the provided AT-URI patterns.
bluesky_resolve_ lexiconResolves an atproto lexicon (NSID) to a schema.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Bluesky side.
Open Bluesky in PopMCP, click Authorize with Bluesky, sign in to Bluesky and approve. There is no developer app, callback URL or approval to wait for. If you would rather not sign in, or your account is hosted outside Bluesky, make an app password in Bluesky under Settings, Privacy and security, App passwords, and add it with your handle under More options.
your-bluesky-valuealice.bsky.social••••••••••••3f7aReading changes nothing. create_post, create_thread, delete_post, follow_user and send_direct_message take effect the moment the AI calls them, and posts are public, so new connections are read-only until an owner or admin allows write actions in PopMCP. A connection reaches one Bluesky account, the one you signed in with.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Bluesky credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Post this draft as a thread, one part per paragraph, and link the article at the end
bluesky_create_threadok
Then just ask for the work
“Post this draft as a thread, one part per paragraph, and link the article at the end”
“How did my recent posts do, and what do the best ones have in common?”
“List this week's mentions and replies, and draft an answer to each for me to check”
“Find recent posts about our product, and follow the people who sound like customers”
“Make a list called Partners and add these five accounts to it”
“Show my unread direct messages and reply to the one from Sam”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Bluesky behind an AI client.
No. Open Bluesky in PopMCP, click Authorize with Bluesky, sign in and approve. Bluesky has no developer console or app review, and PopMCP never sees your password. An app password is there as an alternative under More options.
Never. PopMCP refuses anything that is not an app password. An app password looks like abcd-efgh-ijkl-mnop, you make it in Bluesky under Settings, Privacy and security, App passwords, and you can delete it there at any time without changing anything else.
Yes. Signing in covers them. With an app password, tick Allow access to your direct messages when you make it, as Bluesky leaves that off by default. Messages reach the other person at once, so ask the AI to show you what it will send first.
create_post takes plain text. Links, @mentions and #hashtags become clickable by themselves, which Bluesky otherwise needs worked out by hand. It can attach up to four images, a video, a link preview card or a quote, reply from a link to any post, and choose who may reply. Each post is at most 300 characters, and longer text goes through create_thread.
Yes. Add your handle under More options and the connection finds your account's own host. Signing in works if that host offers it; otherwise use an app password.
Bluesky allows an account 5,000 points of writes an hour and 35,000 a day, and a new post costs 3, so ordinary use never gets near them. PopMCP also allows each connection 60 requests a minute, as Bluesky limits by network address and all PopMCP customers share one.
A sign-in renews itself as long as it is used at least once every six months. A connection with an app password lasts until you delete the password in Bluesky.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Bluesky in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Bluesky on the consent screen. The Bluesky tools are then available in that session, and no Bluesky credential is stored on your machine.
Loading 191 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 50-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 191 here. A trigger is something PopMCP watches for you: 11 Bluesky events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Bluesky.
Launch a hosted MCP endpoint for Bluesky, keep tool access under control, and start testing real workflow prompts right away.