Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BLUESKY_ACCOUNTSNoJSON array, for several accounts
BLUESKY_AUDIT_LOGNoAppend-only log of every attempted write
BLUESKY_HTTP_HOSTNoFor `--http`127.0.0.1
BLUESKY_HTTP_PORTNoFor `--http`8787
BLUESKY_READ_ONLYNoHide every write from the tool list0
BLUESKY_HTTP_TOKENNoBearer token required by `--http`
BLUESKY_IDENTIFIERNoYour full handle
BLUESKY_PUBLIC_APINoPublic appviewhttps://public.api.bsky.app
BLUESKY_MAX_RETRIESNoRetries on 429 and 5xx3
BLUESKY_SERVICE_URLNoYour PDShttps://bsky.social
BLUESKY_APP_PASSWORDNoAn app password, never your account password
BLUESKY_VIDEO_SERVICENoVideo transcoding servicehttps://video.bsky.app
BLUESKY_DEFAULT_ACCOUNTNoWhich handle acts when a tool names nonefirst configured
BLUESKY_ALLOW_DESTRUCTIVENo`0` blocks posting, deleting and blocking1
BLUESKY_REQUEST_TIMEOUT_MSNoPer-request deadline30000
BLUESKY_MIN_REQUEST_INTERVAL_MSNoSpacing between requests120

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

List every Bluesky account this server can act as. Use the handle from here as the account argument on any other tool. Call this first when the user has more than one account and has not said which one they mean.

whoamiA

Authenticate and return the live profile for a connected account, including follower counts. Use this to confirm credentials work, or when the user says 'me' or 'my' and you need their handle and DID.

get_video_job_statusA

Check a Bluesky video transcoding job by id. Only needed when create_post reported that a video was still processing when it gave up waiting. The job usually finishes on its own, and the id is in that message.

create_postA

Publish a post. Handles plain text, up to four images with alt text, a video, a link card, a quote, and replies. URLs, #hashtags and @mentions in the text are turned into real links automatically. You do not need to format them. The limit is 300 characters; for anything longer use create_thread. Public the moment it runs, so it needs confirm: true.

create_threadA

Publish several posts as one thread, each replying to the last. Every part is checked against the 300-character limit before anything is posted, so a thread never half-publishes because part four was too long. Media, quotes and reply controls apply to the first post. Public the moment it runs, so it needs confirm: true.

delete_postA

Delete one of your own posts. This cannot be undone, and it does not remove the post from feeds and caches that already have it. Needs confirm: true.

get_post_threadA

Read a post together with the conversation around it: everything above it and the replies below. Accepts an at:// URI or a bsky.app link. Use this before replying, so the reply lands with context.

like_postA

Like a post. Accepts an at:// URI or a bsky.app link. Liking twice is harmless: the existing like is returned rather than a second one created.

unlike_postA

Remove your like from a post. Finds your own like record from the post's viewer state, so you only need the post, not the like.

repostA

Repost a post to your followers. Reposting twice is harmless. To add your own comment instead, use create_post with quote.

unrepostA

Remove your repost of a post.

followA

Follow an account by handle or DID. Following twice is harmless.

unfollowA

Stop following an account. Finds your own follow record from the profile's viewer state, so you only need the handle.

mute_accountA

Hide an account's posts from your feeds without them knowing. Private and reversible. Unlike a block, they can still see and reply to you.

unmute_accountA

Stop hiding an account's posts.

block_accountA

Block an account. This is visible to them and severs the relationship in both directions: it removes any follow either way, and hides your posts from them. Reversible with unblock_account, but the follows do not come back. Needs confirm: true.

unblock_accountA

Remove a block. Any follows the block severed do not come back. Both sides have to follow again.

set_reply_permissionsA

Change who is allowed to reply to one of your existing posts, after it is already published. Also lets you hide specific replies from the thread. This is the main tool for a post that is going badly.

get_timelineA

Your following feed, newest first. Pass since_hours to read a time window rather than a fixed number of posts. Requires a connected account.

get_author_feedA

Posts by one account, newest first. Works for anyone, with or without credentials. Use filter to separate original posts from replies and reposts: 'posts_no_replies' is what you want when studying how someone writes.

get_liked_postsA

Posts a connected account has liked, newest first. Only works for your own accounts, because Bluesky does not expose anyone else's likes as a feed.

get_post_likesA

The accounts that liked a specific post, newest first.

get_reposted_byB

The accounts that reposted a specific post.

get_quotesA

Posts that quote a specific post. This is where the argument about a post usually lives: quotes carry commentary, reposts do not.

search_postsA

Full-text search across public posts. Supports Bluesky's search operators: from:handle, to:handle, mentions:handle, domain:example.com, since:YYYY-MM-DD, until:YYYY-MM-DD, lang:en, and "quoted phrases". Requires a connected account. Bluesky's public API refuses this endpoint.

search_actorsA

Find Bluesky accounts by name, handle or bio text. Works without credentials. Returns each account's bio and follower counts, so you can tell the real one from the impersonators.

search_feedsA

Find custom feeds, meaning the algorithmic feeds anyone on Bluesky can publish. Pass a feed's URI to get_feed to read it. Works without credentials.

get_feedA

Read posts from a custom feed by its at:// URI or bsky.app link. Find one with search_feeds, or your own with get_pinned_feeds.

get_pinned_feedsA

The feeds and lists pinned to a connected account's home screen, in order. Pass any of the returned URIs to get_feed or get_list_posts.

get_list_postsA

Posts from the accounts on a curated list, newest first. Take the list URI from get_pinned_feeds or a bsky.app /lists/ link.

get_trendsA

Current trending topics on Bluesky, each with the feed link that shows the posts behind it. Works without credentials.

get_suggested_followsA

Accounts Bluesky suggests following. With an actor, returns accounts similar to that one, which is the better way to find a niche.

get_profileA

Full profile for one or more accounts: bio, follower counts, labels, and, when a connected account is available, whether you follow them and whether they follow you. Works without credentials.

get_followersA

Accounts that follow a given account, newest first. Pages automatically past Bluesky's 100 ceiling.

get_followsB

Accounts a given account follows. Pages automatically.

get_relationshipsA

For each account named, whether a connected account follows them and whether they follow back. One call for a whole list. Use this before a bulk follow or unfollow rather than reading a profile each time.

get_listsA

Curated lists an account has created. Pass a returned URI to get_list_posts to read the feed, or get_list_members to see who is on it.

get_list_membersC

The accounts on a curated list.

get_notificationsA

Your likes, reposts, follows, mentions, replies and quotes, newest first. Filter by reason to get just the ones that need an answer: 'mention' and 'reply' are the ones a person actually has to deal with.

get_unread_countA

How many notifications have arrived since you last marked them seen. One cheap call, worth making before you pull the full list.

mark_notifications_seenA

Mark every notification up to now as seen, so the unread count resets. Affects only your own view, and nobody else can tell.

Prompts

Interactive templates invoked by user choice

NameDescription
catch-upSummarise what happened on Bluesky while you were away
draft-threadTurn an idea into a Bluesky thread, without posting it
study-accountWork out how an account gets engagement

Resources

Contextual data attached and managed by the client

NameDescription
bluesky-accounts
bluesky-concepts
bluesky-output-format

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/bluesky-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server