Skip to main content
Glama

bluesky-mcp-server

Get Bluesky Profile

bsky_get_profile
Read-onlyIdempotent

Fetch a Bluesky actor's public profile by handle (e.g. "bsky.app") or DID (e.g. "did:plc:z72i7hdynmk6r22z27h6tvur"). Returns displayName, handle, DID, bio, pronouns, website, follower/following/post counts, avatar URL, moderation labels, and pinned post AT-URI. Use this as the first step to resolve a handle to a DID before calling tools that require a DID or AT-URI. Handles and DIDs are interchangeable as input.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actorYesHandle (e.g. "bsky.app", "alice.bsky.social") or DID (e.g. "did:plc:z72i7hdynmk6r22z27h6tvur") of the actor to look up. A bare name without a dot is not a handle — use bsky_search_actors to resolve one.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
didNoDecentralized Identifier — the permanent, portable identity key for this account.
errorNoPresent when the call failed. Absent on success.
avatarNoURL of the profile avatar image.
handleNoHuman-readable username, e.g. "alice.bsky.social".
labelsNoModeration labels applied to this profile.
websiteNoURL the account set as its website, in the profile field of that name rather than in the bio. Absent when it set none. The one link on a profile that points somewhere else — follow it before reading the bio for one.
pronounsNoFree-form pronouns the account set, e.g. "they/he". Absent when it set none. Account-authored text bounded only by length, not a fixed vocabulary — read it as written rather than parsing it.
createdAtNoISO 8601 timestamp of account creation.
indexedAtNoISO 8601 timestamp when the AppView last indexed this profile.
postsCountNoTotal posts authored by this actor.
descriptionNoBiography / about text.
displayNameNoDisplay name set by the user. May differ from the handle.
followsCountNoNumber of accounts this actor follows.
pinnedPostUriNoAT-URI of the pinned post, if any. Pass to bsky_get_post_thread to read it.
followersCountNoNumber of accounts following this actor.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering safety. The description adds value by detailing the exact return contents (profile fields, moderation labels, pinned post AT-URI) and noting the public nature of the data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and returns a useful list of fields. It is slightly redundant (e.g., 'Handles and DIDs are interchangeable as input' duplicates the schema) but remains compact and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema available, the description covers the input format, usage context, return values, and resolution workflow. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and already explains the handle/DID formats and the note about bare names. The description repeats this without adding new parameter-specific meaning, so it stays at the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a public profile by handle or DID and enumerates the returned fields (displayName, handle, DID, bio, counts, etc.). It distinguishes itself from siblings by explicitly positioning it as the first step to resolve a handle to a DID, and names bsky_search_actors as the alternative for bare names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this as the first step to resolve a handle to a DID before calling tools that require a DID or AT-URI.' It also gives a concrete exclusion and alternative: bare names without a dot are not handles — use bsky_search_actors. This leaves no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource: feed, follows, thread, profile, trending, actor search, and post search. While bsky_get_author_feed and bsky_search_posts might seem similar, their descriptions clearly separate a user-specific feed from full-text search. The other tools have unambiguous boundaries.

Naming Consistency5/5

All tools follow the same prefix pattern 'bsky_' followed by either 'get_' or 'search_' and a noun. There are no deviations or mixed conventions. The consistent verb+noun structure makes the tool surface predictable and easy to navigate.

Tool Count5/5

Seven tools is well within the ideal range for a focused Bluesky client. Each tool covers a core read operation without redundancy, and none feels extraneous. The count is proportionate to the server's apparent purpose.

Completeness4/5

The server covers the main read workflows: profiles, feeds, search, threads, trending, and social graph edges. Minor gaps exist, such as no direct single-post fetch (only via thread) and no posting capabilities, but these are consistent with a read-only social listening server and do not significantly impede core tasks.