100+ integrations are ready to connect to your AI.Connect your first MCP

Bluesky MCP server for your AI

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

Post this draft as a thread, one part per paragraph, and link the article at the end

Supported Bluesky tools

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_member

Add an account to one of this account's lists.

bluesky_block_user

Block an account: neither side sees the other's posts or can interact.

bluesky_create_list

Create a list.

bluesky_follow_user

Follow an account.

bluesky_get_followers

Enumerates accounts which follow a specified account (actor).

bluesky_get_follows

Enumerates accounts which a specified account (actor) follows.

bluesky_get_list

Gets a 'view' (with additional context) of a specified list.

bluesky_get_lists

Enumerates the lists created by a specified account (actor).

bluesky_mute_actor

Creates a mute relationship for the specified account.

bluesky_remove_list_member

Remove an account from one of this account's lists.

bluesky_unblock_user

Remove a block on an account.

bluesky_unfollow_user

Stop following an account.

bluesky_unmute_actor

Unmutes the specified account.

bluesky_get_conversation_messages

Returns a page of messages from a conversation.

bluesky_list_conversations

Returns a page of conversations (direct or group) for the user.

bluesky_send_direct_message

Send a direct message to one person, starting the conversation if there is none.

bluesky_create_post

Publish a post on Bluesky, publicly and at once: confirm with the user first unless they clearly asked for it.

bluesky_create_thread

Publish a thread: several posts, each replying to the one before.

bluesky_delete_post

Delete one of this account's own posts.

bluesky_get_author_feed

Get a view of an actor's 'author feed' (post and reposts by the author).

bluesky_get_feed

Get a hydrated feed from an actor's selected feed generator.

bluesky_get_likes

Get like records which reference a subject (by AT-URI and CID).

bluesky_get_post_thread

Get posts in a thread.

bluesky_get_posts

Gets post views for a specified list of posts (by AT-URI).

bluesky_get_quotes

Get a list of quotes for a given post.

bluesky_get_reposted_by

Get a list of reposts for a given post.

bluesky_get_suggested_feeds

Get a list of suggested feeds (feed generators) for the requesting account.

bluesky_get_timeline

Get a view of the requesting account's home timeline.

bluesky_like_post

Like a post.

bluesky_repost_post

Repost a post to this account's followers.

bluesky_save_feed

Save a custom feed or list to this account, optionally pinned to its home tabs.

bluesky_search_posts

Find posts matching search criteria, returning views of those posts.

bluesky_set_reply_controls

Change who may reply to one of this account's own posts: everyone, nobody, mentioned, following or followers.

bluesky_unlike_post

Remove this account's like from a post.

bluesky_unrepost_post

Undo this account's repost of a post.

bluesky_unsave_feed

Remove a saved custom feed or list from this account.

bluesky_get_trending_topics

Get a list of trending topics Returns: topics, suggested.

bluesky_account_summary

This 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_profile

Get detailed profile view of an actor.

bluesky_get_unread_notification_count

Count the number of unread notifications for the requesting account.

bluesky_list_notifications

Enumerate notifications for the requesting account.

bluesky_list_records

List a range of records in a repository, matching a specific collection.

bluesky_search_actors

Find actors (profiles) matching search criteria.

bluesky_update_profile

Change this account's profile: display name, bio, avatar, banner, website or pinned post.

bluesky_upload_image

Upload an image and get the blob reference a record needs.

bluesky_get_blob_url

Get a direct link to a file (image or video) stored on an account, from the cid of its blob reference.

bluesky_create_bookmark

Creates a private bookmark for the specified record.

bluesky_get_bookmarks

Gets views of records bookmarked by the authenticated user.

bluesky_get_video_job_status

Get status details for a video processing job.

bluesky_upload_video

Upload an MP4 video from a public link for Bluesky to process, as the first step of a video post.

bluesky_get_actor_starter_packs

Get a list of starter packs created by the actor.

bluesky_get_blocks

Enumerates which accounts the requesting account is currently blocking.

bluesky_get_known_followers

Enumerates accounts which follow a specified account (actor) and are followed by the viewer.

bluesky_get_list_blocks

Get mod lists that the requesting account (actor) is blocking.

bluesky_get_list_mutes

Enumerates mod lists that the requesting account (actor) currently has muted.

bluesky_get_lists_with_membership

Enumerates the lists created by the session user, and includes membership information about `actor` in those lists.

bluesky_get_mutes

Enumerates accounts that the requesting account (actor) currently has fully muted.

bluesky_get_relationships

Enumerates public relationships between one account, and a list of other accounts.

bluesky_get_starter_pack

Gets a view of a starter pack.

bluesky_get_starter_packs

Get views for a list of starter packs.

bluesky_get_starter_packs_with_membership

Enumerates the starter packs created by the session user, and includes membership information about `actor` in those starter packs.

bluesky_get_suggested_follows_by_actor

Enumerates follows similar to a given account (actor).

bluesky_mute_actor_list

Creates a mute relationship for the specified list of accounts.

bluesky_mute_thread

Mutes a thread preventing notifications from the thread and any of its children.

bluesky_search_starter_packs

Find starter packs matching search criteria.

bluesky_search_starter_packs_v2

Find starter packs matching search criteria.

bluesky_unmute_actor_list

Unmutes the specified list of accounts.

bluesky_unmute_thread

Unmutes the specified thread.

bluesky_accept_conversation

Marks a conversation as accepted, so it is shown in the list of accepted convos instead on the request convos.

bluesky_add_message_reaction

Adds an emoji reaction to a message.

bluesky_delete_chat_account

Delete this account's direct messages data.

bluesky_delete_message_for_self

Marks a message as deleted for the viewer, so they won't see that message in future enumerations.

bluesky_export_chat_data

Export this account's direct messages as JSON lines.

bluesky_get_chat_notification_preferences

Get the requesting account's chat notification preferences.

bluesky_get_chat_status

Get 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_conversation

Gets an existing conversation by its ID.

bluesky_get_conversation_availability

Check whether the requester and the other members can start a 1-1 chat.

bluesky_get_conversation_for_members

Get or create a 1-1 conversation for the given members.

bluesky_get_conversation_log

Get recent changes across this account's conversations (new messages, reads, joins), for catching up since a cursor.

bluesky_get_conversation_members

Returns a paginated list of members from a conversation.

bluesky_get_unread_conversation_counts

Returns unread conversation counts for conversations that are unlocked, not muted, split by convo status.

bluesky_leave_conversation

Leaves a conversation (direct or group).

bluesky_list_conversation_requests

Returns a page of incoming conversation requests for the user.

bluesky_lock_conversation

Locks a group convo so no more content (messages, reactions) can be added to it.

bluesky_mark_all_conversations_read

Sets conversations from an user as read to the latest message, with filters.

bluesky_mark_conversation_read

Updates the read state of a conversation from, optionally specifying the last read message.

bluesky_mute_conversation

Mutes a conversation, preventing notifications related to it.

bluesky_put_chat_notification_preferences

Set the requesting account's chat notification preferences.

bluesky_remove_message_reaction

Removes an emoji reaction from a message.

bluesky_send_chat_message

Sends a message to a conversation.

bluesky_send_chat_message_batch

Sends a batch of messages to a conversation.

bluesky_unlock_conversation

Unlocks a group convo so it is able to receive new content.

bluesky_unmute_conversation

Unmutes a conversation, allowing notifications related to it.

bluesky_get_actor_feeds

Get a list of feeds (feed generator records) created by the actor (in the actor's repo).

bluesky_get_actor_likes

Get a list of posts liked by an actor.

bluesky_get_feed_generator

Get information about a feed generator.

bluesky_get_feed_generators

Get information about a list of feed generators.

bluesky_get_list_feed

Get a feed of recent posts from a list (posts and reposts from any actors on the list).

bluesky_search_posts_v2

Find posts matching a search query, using Bluesky's newer search.

bluesky_send_interactions

Send information about interactions with feed items back to the feed generator that served them.

bluesky_get_age_assurance_state_unspecced

Returns the current state of the age assurance process for an account.

bluesky_get_app_config

Get app configuration Bluesky publishes for its clients, such as which features are switched on.

bluesky_get_atmosphere_explore_tab

Get Atmosphere Explore content.

bluesky_get_atmosphere_timeline

Get the authenticated viewer's Atmosphere activity timeline.

bluesky_get_onboarding_suggested_starter_packs

Get a list of suggested starterpacks for onboarding Returns: starterPacks, recIdStr.

bluesky_get_popular_feed_generators

An 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_unspecced

Get a list of suggested feeds Returns: feeds, recIdStr.

bluesky_get_suggested_onboarding_users

Get a list of suggested users for onboarding Returns: actors, recId, recIdStr.

bluesky_get_suggested_starter_packs

Get a list of suggested starterpacks Returns: starterPacks, recIdStr.

bluesky_get_suggested_users

Get a list of suggested users Returns: actors, recId, recIdStr.

bluesky_get_suggested_users_for_discover

Get a list of suggested users for the Discover page Returns: actors, recIdStr.

bluesky_get_suggested_users_for_explore

Get a list of suggested users for the Explore page Returns: actors, recIdStr.

bluesky_get_suggested_users_for_see_more

Get a list of suggested users for the See More page Returns: actors, recIdStr.

bluesky_get_tagged_suggestions

Get suggested feeds and accounts Bluesky tags by topic.

bluesky_get_trends

Get the current trends on the network Returns: trends, recIdStr.

bluesky_init_age_assurance

Initiate age assurance for an account.

bluesky_add_chat_group_members

Adds members to a group.

bluesky_approve_chat_group_join_request

Approves a request to join a group (via join link) the user owns.

bluesky_create_chat_group

Creates a group convo, specifying the members to be added to it.

bluesky_create_chat_group_join_link

Creates a join link for the group convo.

bluesky_disable_chat_group_join_link

Disables the active join link for the group convo.

bluesky_edit_chat_group

Edits group settings.

bluesky_edit_chat_group_join_link

Edits the existing join link settings for the group convo.

bluesky_enable_chat_group_join_link

Re-enables a previously disabled join link for the group convo.

bluesky_get_chat_group_join_link_previews

Get public information about groups from join links.

bluesky_list_chat_group_join_requests

Lists a page of request to join a group (via join link) the user owns.

bluesky_list_mutual_chat_groups

Returns a page of group conversations that both the requester and the specified actor are members of.

bluesky_mark_chat_group_join_requests_read

Marks all join requests as read for the group owner.

bluesky_reject_chat_group_join_request

Rejects a request to join a group (via join link) the user owns.

bluesky_remove_chat_group_members

Removes members from a group.

bluesky_request_chat_group_join

Sends a request to join a group (via join link) to the group owner.

bluesky_withdraw_chat_group_join_request

Withdraws a pending request to join a group.

bluesky_apply_writes

Apply a batch transaction of repository creates, updates, and deletes.

bluesky_create_record

Create a single new repository record.

bluesky_delete_record

Delete a repository record, or ensure it doesn't exist.

bluesky_describe_repo

Get information about an account and repository, including the list of collections.

bluesky_get_account_preferences

Get 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_preferences

Get notification-related preferences for an account.

bluesky_get_profiles

Get detailed profile views of multiple actors.

bluesky_get_record

Get a single record from a repository.

bluesky_get_suggested_accounts

Get a list of suggested actors.

bluesky_list_activity_subscriptions

Enumerate all accounts to which the requesting account is subscribed to receive notifications for.

bluesky_list_missing_blobs

Returns a list of missing blobs for the requesting account.

bluesky_put_account_preferences

Set the private preferences attached to the account.

bluesky_put_activity_subscription

Puts an activity subscription entry.

bluesky_put_notification_preferences

Set notification-related preferences for an account.

bluesky_put_notification_preferences_v2

Set notification-related preferences for an account.

bluesky_put_record

Write a repository record, creating or updating it as needed.

bluesky_search_actors_typeahead

Find actor suggestions for a prefix search term.

bluesky_update_notifications_seen

Notify server that the requesting account has seen notifications.

bluesky_dismiss_contact_match

Removes a match that was found via contact import.

bluesky_get_contact_matches

Returns the matched contacts (contacts that were mutually imported).

bluesky_get_contact_sync_status

Gets the user's current contact import status.

bluesky_get_host_status

Returns information about a specified upstream host, as consumed by the server.

bluesky_get_latest_commit

Get the current commit CID & revision of the specified repo.

bluesky_get_repo_status

Get the hosting status for a repository, on this server.

bluesky_import_contacts

Import contacts for securely matching with other users.

bluesky_list_blobs

List blob CIDs for an account, since some repo revision.

bluesky_list_hosts

Enumerates upstream hosts (eg, PDS or relay instances) that this service consumes from.

bluesky_list_repos

Enumerates all the DID, rev, and commit CID for all repos hosted by this service.

bluesky_list_repos_by_collection

Enumerates all the DIDs which have records with the given collection NSID.

bluesky_remove_contact_data

Removes all stored hashes used for contact matching, existing matches, and sync status.

bluesky_send_contact_notification

System endpoint to send notifications related to contact imports.

bluesky_start_phone_verification

Starts a phone verification flow.

bluesky_verify_phone

Verifies control over a phone number with a code received via SMS and starts a contact import session.

bluesky_check_account_status

Returns the status of an account, especially as pertaining to import or recovery.

bluesky_check_handle_availability

Checks whether the provided handle is available.

bluesky_dereference_permission_scope

Allows finding the oauth permission scope from a reference Returns: scope.

bluesky_describe_server

Describes the server's account creation requirements and capabilities.

bluesky_get_session

Get information about the current auth session.

bluesky_create_draft

Inserts a draft using private storage (stash).

bluesky_delete_draft

Deletes a draft by ID.

bluesky_get_drafts

Gets views of user drafts.

bluesky_refresh_identity

Request that the server re-resolve an identity (DID and handle).

bluesky_resolve_did

Resolves DID to DID document.

bluesky_resolve_handle

Resolves an atproto handle (hostname) to a DID.

bluesky_resolve_identity

Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).

bluesky_update_draft

Updates a draft using private storage (stash).

bluesky_begin_age_assurance

Initiate Age Assurance for an account.

bluesky_delete_bookmark

Deletes a private bookmark for the specified record.

bluesky_get_age_assurance_config

Returns Age Assurance configuration for use on the client.

bluesky_get_age_assurance_state

Returns server-computed Age Assurance state, if available, and any additional metadata needed to compute Age Assurance state client-side.

bluesky_get_video_upload_limits

Get video upload limits for the authenticated user.

bluesky_create_report

Submit a moderation report regarding an atproto account or record.

bluesky_get_embed_external_view

Resolve one AT-URI record into the data needed to render an enhanced external embed.

bluesky_get_labeler_services

Get information about a list of labeler services.

bluesky_query_labels

Find labels relevant to the provided AT-URI patterns.

bluesky_resolve_lexicon

Resolves an atproto lexicon (NSID) to a schema.

Connect Bluesky to Claude, ChatGPT and Claude Code

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.

How you connectyour-bluesky-value
Your handlealice.bsky.social
App password••••••••••••3f7a
Authorize PopMCP on BlueskyAuthorize

Then just ask for the work

  • “Post this draft as a thread, one part per paragraph, and link the article at the end”

    • create_thread
  • “How did my recent posts do, and what do the best ones have in common?”

    • account_summary
    • get_author_feed
  • “List this week's mentions and replies, and draft an answer to each for me to check”

    • list_notifications
    • get_post_thread
    • create_post
  • “Find recent posts about our product, and follow the people who sound like customers”

    • search_posts
    • get_profile
    • follow_user
  • “Make a list called Partners and add these five accounts to it”

    • create_list
    • add_list_member
  • “Show my unread direct messages and reply to the one from Sam”

    • list_conversations
    • get_conversation_messages
    • send_direct_message

Use Bluesky from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Bluesky MCP server questions

What teams ask before putting Bluesky behind an AI client.

Do I need a Bluesky API key or developer app?

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.

Should I use my main password?

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.

Can the AI read and send direct messages?

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.

How does the AI post, and do links work?

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.

Does it work with an account hosted outside Bluesky?

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.

Are there limits?

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.

Will the connection expire?

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.

Do I have to run or host the Bluesky MCP server myself?

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.

Which AI clients can use this MCP server?

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.

How do I connect Bluesky to Claude Code?

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.

Why do only 50 of the 191 tools load by default?

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.

What is the difference between a tool and a trigger?

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.

Connect Bluesky to your AI in minutes

Launch a hosted MCP endpoint for Bluesky, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP